| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 85287
|
| |
|
|
|
|
|
| |
(assembler,asmprinter, bc reader+writer) and document it. Codegen
currently aborts on it.
llvm-svn: 85274
|
| |
|
|
| |
llvm-svn: 85266
|
| |
|
|
| |
llvm-svn: 85258
|
| |
|
|
| |
llvm-svn: 85256
|
| |
|
|
| |
llvm-svn: 85241
|
| |
|
|
| |
llvm-svn: 85210
|
| |
|
|
| |
llvm-svn: 85208
|
| |
|
|
| |
llvm-svn: 85207
|
| |
|
|
|
|
|
|
|
|
| |
with multiple return values it inserts a PHI to merge them all together.
However, if the return values are all the same, it ends up with a pointless
PHI and this pointless PHI happens to really block SRoA from happening in
at least a silly C++ example written by Doug, but probably others. This
fixes rdar://7339069.
llvm-svn: 85206
|
| |
|
|
| |
llvm-svn: 85205
|
| |
|
|
| |
llvm-svn: 85204
|
| |
|
|
| |
llvm-svn: 85171
|
| |
|
|
|
|
| |
can safely use the NSW bit on the Add.
llvm-svn: 85164
|
| |
|
|
|
|
| |
aggressive on PHI instructions.
llvm-svn: 85158
|
| |
|
|
| |
llvm-svn: 85127
|
| |
|
|
|
|
|
| |
All of the 'demorgan' related xforms need to use
dyn_castNotVal, not m_Not.
llvm-svn: 85119
|
| |
|
|
|
|
|
|
|
|
| |
strides for now, because it doesn't handle them correctly. This fixes a
miscompile of SingleSource/Benchmarks/Misc-C++/ray.
This problem was usually hidden because indvars transforms such induction
variables into negations of canonical induction variables.
llvm-svn: 85118
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bootstrapping. It's not safe to leave identity subreg_to_reg and insert_subreg
around.
- Relax register scavenging to allow use of partially "not-live" registers. It's
common for targets to operate on registers where the top bits are undef. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
= d0
When the insert_subreg is eliminated by the coalescer, the scavenger used to
complain. The previous fix was to keep to insert_subreg around. But that's
brittle and it's overly conservative when we want to use the scavenger to
allocate registers. It's actually legal and desirable for other instructions
to use the "undef" part of d0. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
s1 =
= s1
= d0
We probably need add a "partial-undef" marker on machine operand so the
machine verifier would not complain.
llvm-svn: 85091
|
| |
|
|
| |
llvm-svn: 85090
|
| |
|
|
| |
llvm-svn: 85088
|
| |
|
|
|
|
| |
not (or (icmp, icmp)) -> and(icmp, icmp)
llvm-svn: 85085
|
| |
|
|
| |
llvm-svn: 85083
|
| |
|
|
|
|
|
| |
or global after a function with conflicting names. Update some testcases
that were accidentally depending on this behavior.
llvm-svn: 85081
|
| |
|
|
| |
llvm-svn: 85051
|
| |
|
|
| |
llvm-svn: 85050
|
| |
|
|
| |
llvm-svn: 85029
|
| |
|
|
| |
llvm-svn: 85021
|
| |
|
|
|
|
|
| |
-verify-dom-info and -verify-loop-info, which enable additional
(expensive) consistency checks.
llvm-svn: 85017
|
| |
|
|
| |
llvm-svn: 85012
|
| |
|
|
|
|
| |
Duncan for the nice tiny testcase.
llvm-svn: 84992
|
| |
|
|
|
|
|
| |
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
|
| |
|
|
|
|
| |
the scale overflows pointer-sized arithmetic. This fixes PR5281.
llvm-svn: 84954
|
| |
|
|
|
|
|
| |
exact backedge taken count, when checking for infinite loops. This allows
it to delete loops with multiple exit conditions.
llvm-svn: 84952
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implements something out of Target/README.txt producing:
_foo: ## @foo
movl 4(%esp), %eax
movapd LCPI1_0, %xmm0
movapd %xmm0, (%eax)
ret $4
instead of:
_foo: ## @foo
movl 4(%esp), %eax
movapd _b, %xmm0
mulpd LCPI1_0, %xmm0
addpd _a, %xmm0
movapd %xmm0, (%eax)
ret $4
llvm-svn: 84942
|
| |
|
|
|
|
| |
bytes (i256).
llvm-svn: 84941
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
non-type-safe constant initializers. This sort of thing happens
quite a bit for 4-byte loads out of string constants, unions,
bitfields, and an interesting endianness check from sqlite, which
is something like this:
const int sqlite3one = 1;
# define SQLITE_BIGENDIAN (*(char *)(&sqlite3one)==0)
# define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
# define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
all of these macros now constant fold away.
This implements PR3152 and is based on a patch started by Eli, but heavily
modified and extended.
llvm-svn: 84936
|
| |
|
|
| |
llvm-svn: 84932
|
| |
|
|
| |
llvm-svn: 84921
|
| |
|
|
|
|
| |
be performed by the post-RA scheduler. The default is none.
llvm-svn: 84911
|
| |
|
|
| |
llvm-svn: 84868
|
| |
|
|
|
|
| |
of the struct (!) works correctly.
llvm-svn: 84853
|
| |
|
|
| |
llvm-svn: 84851
|
| |
|
|
|
|
| |
instruction get scheduled properly.
llvm-svn: 84843
|
| |
|
|
| |
llvm-svn: 84830
|
| |
|
|
| |
llvm-svn: 84813
|
| |
|
|
| |
llvm-svn: 84810
|
| |
|
|
|
|
|
|
| |
selected.
Yay for ASCII graphics!
llvm-svn: 84808
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to break up CFG diamonds by banishing one of the blocks to the end of
the function, which is bad for code density and branch size.
This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the
benchmark cited as the reason for the change, however I've examined
the code and it looks more like a case of gaming a particular
branch than of being generally applicable.
llvm-svn: 84803
|
| |
|
|
|
|
| |
patches for fixes like this instead of committing them directly.
llvm-svn: 84799
|