Chris Lattner
2fd09e3397
implement .ll and .bc support for nsw/nuw on shl and exact on lshr/ashr.
...
Factor some code better.
llvm-svn: 125006
2011-02-07 16:40:21 +00:00
Duncan Sands
7c3f34d524
Add an m_Div pattern for matching either a udiv or an sdiv and use it
...
to simplify the "(X/Y)*Y->X when the division is exact" transform.
llvm-svn: 125004
2011-02-07 09:36:32 +00:00
Duncan Sands
edd8383ed9
Add IRBuilder methods for creating an exact udiv, like for exact sdiv.
...
llvm-svn: 125002
2011-02-07 09:21:52 +00:00
Oscar Fuentes
f0ad431c3e
Install only *.cmake files. Don't install .svn directory.
...
Fixes PR9159.
llvm-svn: 125001
2011-02-07 02:22:23 +00:00
Jason W Kim
7342155b4c
Teach ARM/MC/ELF about gcc compatible reloc output to get past odd linkage
...
failures with relocations.
The code committed is a first cut at compatibility for emitted relocations in
ELF .o.
Why do this? because existing ARM tools like emitting relocs symbols as
explicit relocations, not as section-offset relocs.
Result is that with these changes,
1) relocs are now substantially identical what to gcc outputs.
2) larger apps (including many spec2k tests) compile, cross-link, and pass
Added reminder fixme to tests for future conversion to .s form.
llvm-svn: 124996
2011-02-07 01:11:15 +00:00
Jason W Kim
b0d4492aa1
Rework some .ARM.attribute work for improved gcc compatibility.
...
Unified EmitTextAttribute for both Asm and Obj emission (.cpu only)
Added necessary cortex-A8 related attrs for codegen compat tests.
llvm-svn: 124995
2011-02-07 00:49:53 +00:00
Chris Lattner
1c1b342a62
teach instsimplify to transform (X / Y) * Y to X
...
when the div is an exact udiv.
llvm-svn: 124994
2011-02-06 22:05:31 +00:00
Chris Lattner
8d427ed03c
rename test.
...
llvm-svn: 124993
2011-02-06 21:59:10 +00:00
Chris Lattner
7b6a968f5d
enhance vmcore to know that udiv's can be exact, and add a trivial
...
instcombine xform to exercise this.
Nothing forms exact udivs yet though. This is progress on PR8862
llvm-svn: 124992
2011-02-06 21:44:57 +00:00
Eric Christopher
b81307b728
Remove premature optimization that avoided calculating argument weights
...
if we weren't going to inline the function. The rest of the code using
this was removed.
Fixes PR9154.
llvm-svn: 124991
2011-02-06 21:27:46 +00:00
Anders Carlsson
61133e38a9
Simplify test, as suggested by Chris.
...
llvm-svn: 124990
2011-02-06 20:22:49 +00:00
Anders Carlsson
61f2126479
Remove a virtual inheritance case that clang can devirtualize fully now.
...
llvm-svn: 124989
2011-02-06 20:16:49 +00:00
Anders Carlsson
1eeebf1c22
When loading from a constant, fold inttoptr if the integer type and the resulting pointer type both have the same size.
...
llvm-svn: 124987
2011-02-06 20:11:56 +00:00
Oscar Fuentes
3810263d0f
Don't define NDEBUG on MSVC_IDE and XCode builds. Fixes PR9155.
...
llvm-svn: 124985
2011-02-06 19:07:06 +00:00
Nick Lewycky
7e863fb906
Simplify away redundant test, and document what's going on.
...
llvm-svn: 124977
2011-02-06 05:04:00 +00:00
Nick Lewycky
fb03aee332
Remove specialized comparison of InlineAsm objects. They're uniqued on creation
...
now, and this wasn't comparing some of their relevant bits anyhow.
llvm-svn: 124976
2011-02-06 04:33:50 +00:00
Oscar Fuentes
f42fbe0c95
Moved more stuff to HandleLLVMOptions.cmake
...
llvm-svn: 124968
2011-02-05 19:08:42 +00:00
Anders Carlsson
96a35fc26e
Fix another warning.
...
llvm-svn: 124961
2011-02-05 18:33:43 +00:00
Anders Carlsson
909058c68b
Fix a clang warning.
...
llvm-svn: 124960
2011-02-05 18:19:35 +00:00
NAKAMURA Takumi
aa8b506820
Windows/DynamicLibrary.inc: Split explicit symbols into explicit_symbols.inc.
...
config.h.* have conditions whether each symbol is defined or not.
Autoconf and CMake may check symbols in libgcc.a for JIT on Mingw.
llvm-svn: 124950
2011-02-05 15:11:53 +00:00
NAKAMURA Takumi
07a84f5950
Target/X86: Tweak allocating shadow area (aka home) on Win64. It must be enough for caller to allocate one.
...
llvm-svn: 124949
2011-02-05 15:11:32 +00:00
NAKAMURA Takumi
5ae1b1d643
lib/Target/X86/X86ISelLowering.cpp: Introduce a new variable "IsWin64". No functional changes.
...
llvm-svn: 124948
2011-02-05 15:11:13 +00:00
NAKAMURA Takumi
4f4192b398
lib/Target/X86/X86JITInfo.cpp: Add Win64 stuff.
...
llvm-svn: 124947
2011-02-05 15:11:03 +00:00
NAKAMURA Takumi
c4522ab931
Target/X86: Fix whitespace.
...
llvm-svn: 124946
2011-02-05 15:10:54 +00:00
NAKAMURA Takumi
6008a70d4a
Windows/Program.inc: Quote arguments when dubious characters (used by cmd.exe or MSYS shell) are included to invoke CreateProcess(). Thanks to Danil Malyshev.
...
llvm-svn: 124945
2011-02-05 08:53:12 +00:00
Bob Wilson
d46874eb5d
Move a test that ended up in the wrong place.
...
llvm-svn: 124933
2011-02-05 04:15:50 +00:00
Andrew Trick
2cdb14d30b
Fix an anti-dep breaker corner case.
...
<rdar://problem/8959122> illegal register operands for UMULL instruction in cfrac nightly test
I'm stil working on a unit test, but the case is:
rx = movcc rx, r3
r2 = ldr
r2, r3 = umull r2, r2
The anti-dep breaker should not convert this into an illegal instruction:
r2, r2 = umull
llvm-svn: 124932
2011-02-05 02:58:46 +00:00
Eric Christopher
6dbf0c6bbe
Fix cut and paste error spotted by Jakob.
...
llvm-svn: 124930
2011-02-05 02:48:47 +00:00
Jakob Stoklund Olesen
2a26f7f183
Be more strict about the first/last interference-free use.
...
If the interference overlaps the instruction, we cannot separate it.
llvm-svn: 124918
2011-02-05 01:06:39 +00:00
Jakob Stoklund Olesen
99be342f10
Add assertions to verify that the new interval is clear of the interference.
...
If these inequalities don't hold, we are creating a live range split that won't
allocate.
llvm-svn: 124917
2011-02-05 01:06:36 +00:00
Eric Christopher
ddc2157034
Rewrite how the indirect call bonus is handled. This now works by:
...
a) Making it a per call site bonus for functions that we can move from
indirect to direct calls.
b) Reduces the bonus from 500 to 100 per call site.
c) Subtracts the size of the possible newly inlineable call from the
bonus to only add a bonus if we can inline a small function to devirtualize
it.
Also changes the bonus from a positive that's subtracted to a negative
that's added.
Fixes the remainder of rdar://8546196 by reducing the object file size
after inlining by 84%.
llvm-svn: 124916
2011-02-05 00:49:15 +00:00
David Greene
50efbf730f
[AVX] Revert 124910 until clients are ready.
...
llvm-svn: 124912
2011-02-05 00:24:41 +00:00
David Greene
0b0ec3aed7
[AVX] Add some utilities to insert and extract 128-bit subvectors.
...
This allows us to easily support 256-bit operations that don't have
native 256-bit support. This applies to integer operations, certain
types of shuffles and various othher things.
llvm-svn: 124910
2011-02-04 23:29:33 +00:00
Daniel Dunbar
5fb9f9c756
MC/AsmMatcher: Sink ConvertToMCInst into the TargetAsmParser instance, which
...
implicitly allows custom conversions to be member functions.
llvm-svn: 124908
2011-02-04 23:17:40 +00:00
Jakob Stoklund Olesen
b416dbf12e
Apparently, it is possible for a block with a landing pad successor to have no calls.
...
In that case we simply ignore the landing pad and split live ranges before the
first terminator.
llvm-svn: 124907
2011-02-04 23:11:13 +00:00
Devang Patel
930b4b16a1
Merge .debug_loc entries whenever possible to reduce debug_loc size.
...
llvm-svn: 124904
2011-02-04 22:57:18 +00:00
Nick Lewycky
a4f2b5a934
Mark that the return is using EAX so that we don't use it for some other
...
purpose. Fixes PR9080!
llvm-svn: 124903
2011-02-04 22:44:08 +00:00
Jakob Stoklund Olesen
8de536be92
Be more accurate about live range splitting at the end of blocks.
...
If interference reaches the last split point, it is effectively live out and
should be marked as 'MustSpill'.
This can make a difference when the terminator uses a register. There is no way
that register can be reused in the outgoing CFG bundle, even if it isn't live
out.
llvm-svn: 124900
2011-02-04 21:42:06 +00:00
Jason W Kim
056e5aacb7
Teach ARM/MC/ELF about EF_ARM_EABI_VERSION. The magic number is set to
...
5 to match the current doc.
Added FIXME reminder Make it really configurable later.
llvm-svn: 124899
2011-02-04 21:41:11 +00:00
Jason W Kim
10c1a81736
Teach ARM/MC/ELF to handle R_ARM_JUMP24 relocation type for conditional jumps.
...
(yes, this is different from R_ARM_CALL)
- Adds a new method getARMBranchTargetOpValue() which handles the
necessary distinction between the conditional and unconditional br/bl
needed for ARM/ELF
At least for ARM mode, the needed fixup for conditional versus unconditional
br/bl is identical, but the ARM docs and existing ARM tools expect this
reloc type...
Added a few FIXME's for future naming fixups in ARMInstrInfo.td
llvm-svn: 124895
2011-02-04 19:47:15 +00:00
Jakob Stoklund Olesen
bf833680ec
Add LiveIntervals::getLastSplitPoint().
...
A live range cannot be split everywhere in a basic block. A split must go before
the first terminator, and if the variable is live into a landing pad, the split
must happen before the call that can throw.
llvm-svn: 124894
2011-02-04 19:33:11 +00:00
Jakob Stoklund Olesen
0ceb8d032a
Verify that one of the ranges produced by region splitting is allocatable.
...
We should not be attempting a region split if it won't lead to at least one
directly allocatable interval. That could cause infinite splitting loops.
llvm-svn: 124893
2011-02-04 19:33:07 +00:00
Daniel Dunbar
622bb34af8
MC/AsmParser: Add support for allowing the conversion process to fail (via
...
custom conversion functions).
llvm-svn: 124872
2011-02-04 17:12:23 +00:00
Daniel Dunbar
f9647c1760
build: Add MAKEFILE_UNITTEST_NO_INCLUDE_COMMON build variable, to be leveraged
...
by Clang.
llvm-svn: 124871
2011-02-04 17:12:18 +00:00
Daniel Dunbar
c89a150d94
MC/AsmMatcher: Add support for custom conversion functions.
...
llvm-svn: 124870
2011-02-04 17:12:15 +00:00
David Greene
21bfdb7527
Silence uninitialized value warnings.
...
llvm-svn: 124869
2011-02-04 17:01:53 +00:00
David Greene
7de7347ee8
[AVX] Support VSINSERTF128 with more patterns and appropriate
...
infrastructure. This makes lowering 256-bit vectors to 128-bit
vectors simple when 256-bit vector support is not available.
llvm-svn: 124868
2011-02-04 16:08:29 +00:00
NAKAMURA Takumi
872c15ce42
Make Win32's header file name lower for cross build on case-sensitive filesystem.
...
llvm-svn: 124864
2011-02-04 12:53:04 +00:00
Oscar Fuentes
11c6d879cd
LLVM_ON_WIN32 is not defined on config-ix.cmake. Use something else.
...
llvm-svn: 124857
2011-02-04 05:40:04 +00:00
Oscar Fuentes
e04e812abe
Add the tablegenned files to the `clean' target.
...
llvm-svn: 124854
2011-02-04 03:47:50 +00:00