| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 134832
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
patch brings numerous advantages to LLVM. One way to look at it
is through diffstat:
109 files changed, 3005 insertions(+), 5906 deletions(-)
Removing almost 3K lines of code is a good thing. Other advantages
include:
1. Value::getType() is a simple load that can be CSE'd, not a mutating
union-find operation.
2. Types a uniqued and never move once created, defining away PATypeHolder.
3. Structs can be "named" now, and their name is part of the identity that
uniques them. This means that the compiler doesn't merge them structurally
which makes the IR much less confusing.
4. Now that there is no way to get a cycle in a type graph without a named
struct type, "upreferences" go away.
5. Type refinement is completely gone, which should make LTO much MUCH faster
in some common cases with C++ code.
6. Types are now generally immutable, so we can use "Type *" instead
"const Type *" everywhere.
Downsides of this patch are that it removes some functions from the C API,
so people using those will have to upgrade to (not yet added) new API.
"LLVM 3.0" is the right time to do this.
There are still some cleanups pending after this, this patch is large enough
as-is.
llvm-svn: 134829
|
| |
|
|
| |
llvm-svn: 134812
|
| |
|
|
| |
llvm-svn: 134800
|
| |
|
|
|
|
|
|
|
| |
CPU, and feature string. Parsing some asm directives can change
subtarget state (e.g. .code 16) and it must be reflected in other
modules (e.g. MCCodeEmitter). That is, the MCSubtargetInfo instance
must be shared.
llvm-svn: 134795
|
| |
|
|
|
|
|
|
| |
Spills should be hoisted out of loops, but we don't want to hoist them
to dominating blocks at the same loop depth. That could cause the spills
to be executed more often.
llvm-svn: 134782
|
| |
|
|
|
|
| |
per Chris and Frits suggestion.
llvm-svn: 134777
|
| |
|
|
|
|
|
|
|
|
| |
Try to move spills as early as possible in their basic block. This can
help eliminate interferences by shortening the live range being
spilled.
This fixes PR10221.
llvm-svn: 134776
|
| |
|
|
|
|
| |
unknown x86/non-x86 targets.
llvm-svn: 134773
|
| |
|
|
|
|
| |
cmov for 64-bit targets.
llvm-svn: 134768
|
| |
|
|
| |
llvm-svn: 134764
|
| |
|
|
| |
llvm-svn: 134763
|
| |
|
|
| |
llvm-svn: 134760
|
| |
|
|
| |
llvm-svn: 134759
|
| |
|
|
| |
llvm-svn: 134758
|
| |
|
|
|
|
| |
specified.
llvm-svn: 134757
|
| |
|
|
| |
llvm-svn: 134755
|
| |
|
|
|
|
| |
Clean up all the other hacks which are now unnecessary.
llvm-svn: 134753
|
| |
|
|
|
|
|
|
| |
According to Intel Application Note 485, this value is used for
"Intel Core i7 and Intel Xeon processor". Just include it with the other
"corei7-avx" entries.
llvm-svn: 134750
|
| |
|
|
|
|
|
| |
This tightens up checking for overflow in alloca sizes, based on feedback
from Duncan and John about the change in r132926.
llvm-svn: 134749
|
| |
|
|
|
|
|
|
|
|
| |
The normal tBX instruction is predicable, so there's no reason the
pseudos for using it as a return shouldn't be. Gives us some nice code-gen
improvements as can be seen by the test changes. In particular, several
tests now have to disable if-conversion because it works too well and defeats
the test.
llvm-svn: 134746
|
| |
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=10305
llvm-svn: 134744
|
| |
|
|
|
|
| |
is to use this for architectures that have a native FMA instruction.
llvm-svn: 134742
|
| |
|
|
| |
llvm-svn: 134741
|
| |
|
|
| |
llvm-svn: 134739
|
| |
|
|
|
|
| |
Found by valgrind.
llvm-svn: 134738
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 134737
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RAGreedy::tryAssign will now evict interference from the preferred
register even when another register is free.
To support this, add the EvictionCost struct that counts how many hints
are broken by an eviction. We don't want to break one hint just to
satisfy another.
Rename canEvict to shouldEvict, and add the first bit of eviction policy
that doesn't depend on spill weights: Always make room in the preferred
register as long as the evictees can be split and aren't already
assigned to their preferred register.
Also make the CSR avoidance more accurate. When looking for a cheaper
register it is OK to use a new volatile register. Only CSR aliases that
have never been used before should be avoided.
llvm-svn: 134735
|
| |
|
|
| |
llvm-svn: 134734
|
| |
|
|
| |
llvm-svn: 134732
|
| |
|
|
| |
llvm-svn: 134730
|
| |
|
|
| |
llvm-svn: 134729
|
| |
|
|
|
|
| |
Fix a FIXME.
llvm-svn: 134727
|
| |
|
|
| |
llvm-svn: 134721
|
| |
|
|
| |
llvm-svn: 134720
|
| |
|
|
| |
llvm-svn: 134719
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 134714
|
| |
|
|
|
|
| |
TableGen'erated MC lowering pseudo-expansion.
llvm-svn: 134712
|
| |
|
|
| |
llvm-svn: 134708
|
| |
|
|
| |
llvm-svn: 134707
|
| |
|
|
|
|
|
|
|
| |
Hook up the TableGen lowering for simple pseudo instructions for ARM and
use it for a subset of the many pseudos the backend has as proof of concept.
More conversions to come.
llvm-svn: 134705
|
| |
|
|
| |
llvm-svn: 134703
|
| |
|
|
| |
llvm-svn: 134702
|
| |
|
|
|
|
| |
Should fix llvm-gcc selfhost.
llvm-svn: 134699
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have to do this in DAGBuilder instead of DAGCombiner, because the exact bit is lost after building.
struct foo { char x[24]; };
long bar(struct foo *a, struct foo *b) { return a-b; }
is now compiled into
movl 4(%esp), %eax
subl 8(%esp), %eax
sarl $3, %eax
imull $-1431655765, %eax, %eax
instead of
movl 4(%esp), %eax
subl 8(%esp), %eax
movl $715827883, %ecx
imull %ecx
movl %edx, %eax
shrl $31, %eax
sarl $2, %edx
addl %eax, %edx
movl %edx, %eax
llvm-svn: 134695
|
| |
|
|
|
|
|
|
|
|
| |
- Each target asm parser now creates its own MCSubtatgetInfo (if needed).
- Changed AssemblerPredicate to take subtarget features which tablegen uses
to generate asm matcher subtarget feature queries. e.g.
"ModeThumb,FeatureThumb2" is translated to
"(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0".
llvm-svn: 134678
|
| |
|
|
|
|
| |
CSE ops that match values produced by the intrinsics.
llvm-svn: 134677
|
| |
|
|
| |
llvm-svn: 134671
|
| |
|
|
| |
llvm-svn: 134668
|
| |
|
|
|
|
| |
Fixes PR9602!
llvm-svn: 134665
|