- Jan 31, 2011
-
-
Devang Patel authored
While printing "interesting" breakpoint locations for debug info quality test harness, focus only on entry block's terminator for now. llvm-svn: 124610
-
Roman Divacky authored
Enumerate .code16/32/64 instead of checking .code prefix. This unbreaks some ARM tests. llvm-svn: 124608
-
Devang Patel authored
llvm-svn: 124605
-
Devang Patel authored
llvm-svn: 124604
-
Roman Divacky authored
all lead to a silent miscompilation of code. llvm-svn: 124603
-
David Greene authored
Fix vector sign extend to put the source and destination types in the correct places. llvm-svn: 124601
-
Chris Lattner authored
llvm-svn: 124599
-
Oscar Fuentes authored
for dlopen/dlerror. Patch by arrowdodger! llvm-svn: 124590
-
Richard Osborne authored
llvm-svn: 124587
-
NAKAMURA Takumi authored
llvm-svn: 124583
-
- Jan 30, 2011
-
-
Anton Korobeynikov authored
llvm-svn: 124570
-
Anton Korobeynikov authored
llvm-svn: 124569
-
Anders Carlsson authored
(A+B) == A -> B == 0 A == (A+B) -> B == 0 llvm-svn: 124567
-
Jakob Stoklund Olesen authored
This is similar to the -unroll-threshold option. There should be no change in behavior when -tail-dup-size is not explicit on the llc command line. llvm-svn: 124564
-
Duncan Sands authored
by PR9088 fixes things. llvm-svn: 124561
-
Duncan Sands authored
to do this and more, but would only do it if X/Y had only one use. Spotted as the most common missed simplification in SPEC by my auto-simplifier, now that it knows about nuw/nsw/exact flags. This removes a bunch of multiplications from 447.dealII and 483.xalancbmk. It also removes a lot from tramp3d-v4, which results in much more inlining. llvm-svn: 124560
-
Benjamin Kramer authored
Teach DAGCombine to fold fold (sra (trunc (sr x, c1)), c2) -> (trunc (sra x, c1+c2) when c1 equals the amount of bits that are truncated off. This happens all the time when a smul is promoted to a larger type. On x86-64 we now compile "int test(int x) { return x/10; }" into movslq %edi, %rax imulq $1717986919, %rax, %rax movq %rax, %rcx shrq $63, %rcx sarq $34, %rax <- used to be "shrq $32, %rax; sarl $2, %eax" addl %ecx, %eax This fires 96 times in gcc.c on x86-64. llvm-svn: 124559
-
Nick Lewycky authored
llvm-svn: 124557
-
Nick Lewycky authored
llvm-svn: 124556
-
- Jan 29, 2011
-
-
Bill Wendling authored
llvm-svn: 124552
-
Nick Lewycky authored
This is the one where one of the branches of the select is another select on the same condition. llvm-svn: 124547
-
Francois Pichet authored
The DEBUG() call at line 606 demands to see raw_ostream's definition. I have no idea why this seems to only break MSVC. llvm-svn: 124545
-
Nick Lewycky authored
llvm-svn: 124544
-
Frits van Bommel authored
llvm-svn: 124535
-
Frits van Bommel authored
llvm-svn: 124534
-
Duncan Sands authored
llvm-svn: 124533
-
Benjamin Kramer authored
This happens e.g. for code like "X - X%10" where we lower the modulo operation to a series of multiplies and shifts that are then subtracted from X, leading to this missed optimization. llvm-svn: 124532
-
Evan Cheng authored
llvm-svn: 124527
-
Evan Cheng authored
llvm-svn: 124526
-
Evan Cheng authored
llvm-svn: 124522
-
Evan Cheng authored
Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand. llvm-svn: 124518
-
Andrew Trick authored
Modified patch by Adam Preuss. This builds on the existing framework for block tracing, edge profiling and optimal edge profiling. See -help-hidden for new flags. For documentation, see the technical report "Implementation of Path Profiling..." in llvm.org/pubs. llvm-svn: 124515
-
Nick Lewycky authored
so that the code reads properly. llvm-svn: 124514
-
- Jan 28, 2011
-
-
Roman Divacky authored
llvm-svn: 124498
-
Duncan Sands authored
llvm-svn: 124497
-
Duncan Sands authored
zero effect on the testsuite (it improves two Ada testcases). llvm-svn: 124496
-
Bob Wilson authored
Patch by Jyun-Yan You. llvm-svn: 124492
-
Duncan Sands authored
benchmarks, and that it can be simplified to X/Y. (In general you can only simplify (Z*Y)/Y to Z if the multiplication did not overflow; if Z has the form "X/Y" then this is the case). This patch implements that transform and moves some Div logic out of instcombine and into InstructionSimplify. Unfortunately instcombine gets in the way somewhat, since it likes to change (X/Y)*Y into X-(X rem Y), so I had to teach instcombine about this too. Finally, thanks to the NSW/NUW flags, sometimes we know directly that "Z*Y" does not overflow, because the flag says so, so I added that logic too. This eliminates a bunch of divisions and subtractions in 447.dealII, and has good effects on some other benchmarks too. It seems to have quite an effect on tramp3d-v4 but it's hard to say if it's good or bad because inlining decisions changed, resulting in massive changes all over. llvm-svn: 124487
-
Oscar Fuentes authored
llvm-svn: 124486
-
Roman Divacky authored
llvm-svn: 124485
-