| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 23478
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is performed so it is only at most once per function that contains an invoke
instead of once per invoke in the function. This patch has the following perks:
1. It fixes PR631, which complains about slowness.
2. If fixes PR240, which complains about non-volatile vars being live across
setjmp/longjmps.
3. It improves (but does not fix) the jmpbuf alignment issue on itanium by not
forcing the jmpbufs to always be 8-bytes off the alignment of the structure.
4. It speeds up 253.perlbmk from 338s to 13.70s (a 25x improvement!), making us
now about 4% faster than GCC.
Further improvements are also possible.
llvm-svn: 23477
|
| |
|
|
| |
llvm-svn: 23476
|
| |
|
|
| |
llvm-svn: 23475
|
| |
|
|
| |
llvm-svn: 23473
|
| |
|
|
|
|
| |
cross MBB pollution.
llvm-svn: 23470
|
| |
|
|
| |
llvm-svn: 23469
|
| |
|
|
|
|
|
|
|
|
| |
getsa different enum value. This allows 'classof' for these to be really simple,not needing to call getType() anymore.
This speeds up isa/dyncast/etc for constants, and also makes them smaller.
For example, the text section of a release build of InstCombine.cpp shrinks
from 230037 bytes to 216363 bytes, a 6% reduction.
llvm-svn: 23467
|
| |
|
|
|
|
|
|
| |
implements
ctor-list-opt.ll:CTOR8
llvm-svn: 23465
|
| |
|
|
|
|
| |
potentially replaced at link-time.
llvm-svn: 23463
|
| |
|
|
|
|
|
|
| |
because gccas runs globalopt before inlining.
This implements ctor-list-opt.ll:CTOR7
llvm-svn: 23462
|
| |
|
|
| |
llvm-svn: 23460
|
| |
|
|
|
|
| |
eh lowering as well.
llvm-svn: 23459
|
| |
|
|
| |
llvm-svn: 23458
|
| |
|
|
|
|
|
|
| |
for testing and will require target machine info to do a proper scheduling.
The simple scheduler can be turned on using -sched=simple (defaults
to -sched=none)
llvm-svn: 23455
|
| |
|
|
| |
llvm-svn: 23453
|
| |
|
|
| |
llvm-svn: 23452
|
| |
|
|
| |
llvm-svn: 23450
|
| |
|
|
|
|
| |
ctor-list-opt.ll:CTOR5.
llvm-svn: 23449
|
| |
|
|
| |
llvm-svn: 23447
|
| |
|
|
|
|
| |
ConstantFoldLoadThroughGEPConstantExpr function in the utils lib.
llvm-svn: 23446
|
| |
|
|
|
|
| |
as ConstantFoldLoadThroughGEPConstantExpr.
llvm-svn: 23445
|
| |
|
|
|
|
| |
pass.
llvm-svn: 23444
|
| |
|
|
| |
llvm-svn: 23442
|
| |
|
|
| |
llvm-svn: 23441
|
| |
|
|
| |
llvm-svn: 23439
|
| |
|
|
|
|
| |
global ctors that are simple enough. This implements ctor-list-opt.ll:CTOR2.
llvm-svn: 23437
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 23435
|
| |
|
|
|
|
| |
accepting the null even with a non-65535 init prio
llvm-svn: 23434
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Implement the start of global ctor optimization. It is currently smart
enough to remove the global ctor for cases like this:
struct foo {
foo() {}
} x;
... saving a bit of startup time for the program.
llvm-svn: 23433
|
| |
|
|
|
|
| |
SimplifyLibCalls/2005-05-20-sprintf-crash.ll
llvm-svn: 23430
|
| |
|
|
|
|
| |
Match a bunch of idioms for sign extensions, implementing InstCombine/signext.ll
llvm-svn: 23428
|
| |
|
|
|
|
|
|
| |
sprintf("%s", P)'s that have uses.
s/hasNUses(0)/use_empty()/
llvm-svn: 23425
|
| |
|
|
|
|
| |
prefix to a symbol name
llvm-svn: 23421
|
| |
|
|
|
|
| |
generated isel now tries li then lis, then lis+ori.
llvm-svn: 23418
|
| |
|
|
| |
llvm-svn: 23411
|
| |
|
|
|
|
|
| |
This implements SimplifyCFG/branch-fold.ll, and is useful on ?:/min/max heavy
code
llvm-svn: 23410
|
| |
|
|
| |
llvm-svn: 23408
|
| |
|
|
| |
llvm-svn: 23407
|
| |
|
|
|
|
|
| |
an llvm-ranlib symtab. This speeds up gccld -native on an almost empty .o file
from 1.63s to 0.18s.
llvm-svn: 23406
|
| |
|
|
|
|
|
|
|
| |
This happens all the time on PPC for bool values, e.g. eliminating a xori
in inverted-bool-compares.ll.
This should be added to the dag combiner as well.
llvm-svn: 23403
|
| |
|
|
| |
llvm-svn: 23400
|
| |
|
|
|
|
|
|
|
| |
not define a value that is used outside of it's block. This catches many
more simplifications, e.g. 854 in 176.gcc, 137 in vpr, etc.
This implements branch-phi-thread.ll:test3.ll
llvm-svn: 23397
|
| |
|
|
|
|
| |
predecessors. This implements branch-phi-thread.ll::test1
llvm-svn: 23395
|
| |
|
|
| |
llvm-svn: 23393
|
| |
|
|
| |
llvm-svn: 23392
|
| |
|
|
|
|
|
| |
control across branches with determined outcomes. More generality to follow.
This triggers a couple thousand times in specint.
llvm-svn: 23391
|
| |
|
|
|
|
|
| |
select_cc bits and then wrap it in a convenience function for use with
regular select.
llvm-svn: 23389
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
when possible, avoiding the load (and avoiding the copy if the value is already
in the right register).
This patch came about when I noticed code like the following being generated:
store R17 -> [SS1]
...blah...
R4 = load [SS1]
This was causing an LSU reject on the G5. This problem was due to the register
allocator folding spill code into a reg-reg copy (producing the load), which
prevented the spiller from being able to rewrite the load into a copy, despite
the fact that the value was already available in a register. In the case
above, we now rip out the R4 load and replace it with a R4 = R17 copy.
This speeds up several programs on X86 (which spills a lot :) ), e.g.
smg2k from 22.39->20.60s, povray from 12.93->12.66s, 168.wupwise from
68.54->53.83s (!), 197.parser from 7.33->6.62s (!), etc. This may have a larger
impact in some cases on the G5 (by avoiding LSU rejects), though it probably
won't trigger as often (less spilling in general).
Targets that implement folding of loads/stores into copies should implement
the isLoadFromStackSlot hook to get this.
llvm-svn: 23388
|
| |
|
|
| |
llvm-svn: 23387
|