Devang Patel
b07ec831cf
While printing "interesting" breakpoint locations for debug info quality test harness, focus only on entry block's terminator for now.
...
llvm-svn: 124610
2011-01-31 21:36:24 +00:00
Roman Divacky
9a58919c8e
Enumerate .code16/32/64 instead of checking .code prefix. This
...
unbreaks some ARM tests.
llvm-svn: 124608
2011-01-31 21:19:43 +00:00
Devang Patel
e9f2861551
Tidy up.
...
llvm-svn: 124605
2011-01-31 21:16:37 +00:00
Devang Patel
5187d8e510
Focus on arguments for now.
...
llvm-svn: 124604
2011-01-31 21:15:39 +00:00
Roman Divacky
bd59dff739
Error on all .code* directives instead of just .code16 as they
...
all lead to a silent miscompilation of code.
llvm-svn: 124603
2011-01-31 20:56:49 +00:00
David Greene
f3c6873544
Fix vector sign extend to put the source and destination types in the
...
correct places.
llvm-svn: 124601
2011-01-31 20:39:01 +00:00
Chris Lattner
865fe3b283
add a note, progress unblocked by PR8575 being fixed.
...
llvm-svn: 124599
2011-01-31 20:23:28 +00:00
Oscar Fuentes
e866c41f5c
Adds some platform checks to cmake/config-ix.cmake and fixes checking
...
for dlopen/dlerror.
Patch by arrowdodger!
llvm-svn: 124590
2011-01-31 18:25:25 +00:00
Richard Osborne
272e084bca
Fix bug where ReduceLoadWidth was creating illegal ZEXTLOAD instructions.
...
llvm-svn: 124587
2011-01-31 17:41:44 +00:00
NAKAMURA Takumi
1703f15516
CMake: Fix a few definition to suppress warnings.
...
llvm-svn: 124583
2011-01-31 09:41:20 +00:00
Anton Korobeynikov
221f4faa92
Save a mapping between original and cloned constpool entries.
...
llvm-svn: 124570
2011-01-30 22:07:39 +00:00
Anton Korobeynikov
fe3a6e049d
Clarify the LSDASection NULL check
...
llvm-svn: 124569
2011-01-30 22:07:31 +00:00
Anders Carlsson
f23a6da271
Recognize and simplify
...
(A+B) == A -> B == 0
A == (A+B) -> B == 0
llvm-svn: 124567
2011-01-30 22:01:13 +00:00
Jakob Stoklund Olesen
9af7afcb7f
Respect the -tail-dup-size command line option even when optimizing for size.
...
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
2011-01-30 20:38:12 +00:00
Duncan Sands
2e5a58da8f
Commit 124487 broke 254.gap. See if disabling the part that might be triggered
...
by PR9088 fixes things.
llvm-svn: 124561
2011-01-30 18:24:20 +00:00
Duncan Sands
b67edc6a29
Transform (X/Y)*Y into X if the division is exact. Instcombine already knows how
...
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
2011-01-30 18:03:50 +00:00
Benjamin Kramer
946e1522b6
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
2011-01-30 16:38:43 +00:00
Nick Lewycky
c15dd6f07c
Fix 'fcmp one' constant folding. Noticed by inspection.
...
llvm-svn: 124557
2011-01-30 01:49:58 +00:00
Nick Lewycky
7c75f0c031
Fix some formatting and upgrade comments from llvm 1.x to 2.x syntax.
...
llvm-svn: 124556
2011-01-30 01:48:50 +00:00
Bill Wendling
96202e7bbd
This is #included by .c files. Remove C++-style comments.
...
llvm-svn: 124552
2011-01-29 21:54:26 +00:00
Nick Lewycky
97a2895e73
Add the select optimization recently added to instcombine to constant folding.
...
This is the one where one of the branches of the select is another select on
the same condition.
llvm-svn: 124547
2011-01-29 20:35:06 +00:00
Francois Pichet
326e4a2966
Unbreak the MSVC build.
...
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
2011-01-29 20:06:16 +00:00
Nick Lewycky
b89d9a4412
Fix comment.
...
llvm-svn: 124544
2011-01-29 19:55:23 +00:00
Frits van Bommel
2a55951d08
Call SimplifyFDivInst() in InstCombiner::visitFDiv().
...
llvm-svn: 124535
2011-01-29 17:50:27 +00:00
Frits van Bommel
c2549661af
Move InstCombine's knowledge of fdiv to SimplifyInstruction().
...
llvm-svn: 124534
2011-01-29 15:26:31 +00:00
Duncan Sands
2e9e4f1be3
Fix typo: should have been testing that X was odd, not V.
...
llvm-svn: 124533
2011-01-29 13:27:00 +00:00
Benjamin Kramer
65bb14d368
Add the missing sub identity "A-(A-B) -> B" to DAGCombine.
...
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
2011-01-29 12:34:05 +00:00
Evan Cheng
73c29178ac
Add a test for TCE return duplication.
...
llvm-svn: 124527
2011-01-29 04:53:35 +00:00
Evan Cheng
d983eba7dc
Re-apply r124518 with fix. Watch out for invalidated iterator.
...
llvm-svn: 124526
2011-01-29 04:46:23 +00:00
Evan Cheng
65b8ccf6ac
Revert r124518. It broke Linux self-host.
...
llvm-svn: 124522
2011-01-29 02:43:04 +00:00
Evan Cheng
d4eff31476
Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.
...
llvm-svn: 124518
2011-01-29 01:29:26 +00:00
Andrew Trick
24f5ff0f23
Implementation of path profiling.
...
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
2011-01-29 01:09:53 +00:00
Nick Lewycky
fea7ddc735
Most browsers eliminate whitespace between anchor tags. Force whitespace with
...
so that the code reads properly.
llvm-svn: 124514
2011-01-29 01:09:53 +00:00
Roman Divacky
cd9ae95ae7
Error on .code16 instead of producing wrong (32bit) code.
...
llvm-svn: 124498
2011-01-28 19:29:48 +00:00
Duncan Sands
e4b4d0c16d
This dyn_cast should be a cast. Pointed out by Frits van Bommel.
...
llvm-svn: 124497
2011-01-28 18:53:08 +00:00
Duncan Sands
65995fa2a0
Thread divisions over selects and phis. This doesn't fire much and has basically
...
zero effect on the testsuite (it improves two Ada testcases).
llvm-svn: 124496
2011-01-28 18:50:50 +00:00
Bob Wilson
775eec2280
PR9030: Fix disassembly of ARM "mov pc, lr" instruction.
...
Patch by Jyun-Yan You.
llvm-svn: 124492
2011-01-28 17:50:30 +00:00
Duncan Sands
771e82a863
My auto-simplifier noticed that ((X/Y)*Y)/Y occurs several times in SPEC
...
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
2011-01-28 16:51:11 +00:00
Oscar Fuentes
e789bdb870
Fix libffi usage when it is on a custom path.
...
llvm-svn: 124486
2011-01-28 16:49:05 +00:00
Roman Divacky
7e9e290952
Add support for parsing .float
...
llvm-svn: 124485
2011-01-28 14:20:32 +00:00
Nick Lewycky
cfb284cf96
Rename functions to follow coding standard. Also rejiggers comments. No
...
functionality change.
llvm-svn: 124482
2011-01-28 08:43:14 +00:00
Nick Lewycky
aaf401241a
Add a doxygen comment for this class.
...
llvm-svn: 124480
2011-01-28 08:19:00 +00:00
Nick Lewycky
564fcca856
Reorder for readability. (Chris, is this what you meant?)
...
llvm-svn: 124479
2011-01-28 07:36:21 +00:00
Evan Cheng
aaa9606b2f
Revert r124462. There are a few big regressions that I need to fix first.
...
llvm-svn: 124478
2011-01-28 07:12:38 +00:00
Nick Lewycky
c5eb3733f7
Reduce the number of functions we look at in the first pass, and preallocate
...
the function equality set.
llvm-svn: 124475
2011-01-28 05:48:15 +00:00
Nick Lewycky
db34be0e31
Clean up the tests a little, make sure we match an instruction in the right
...
test.
llvm-svn: 124473
2011-01-28 05:13:17 +00:00
Nick Lewycky
0af77fd45b
Fix build with stdcxx by using llvm::next. Patch by Joerg Sonnenberger!
...
llvm-svn: 124472
2011-01-28 04:00:15 +00:00
Rafael Espindola
2f72a84284
Add a triple.
...
llvm-svn: 124471
2011-01-28 03:57:55 +00:00
Nick Lewycky
6593e6eaf6
Add missing include for ptrdiff_t. Patch by Joerg Sonnenberger!
...
llvm-svn: 124470
2011-01-28 03:52:25 +00:00
Nick Lewycky
b074e32641
Fold select + select where both selects are on the same condition.
...
llvm-svn: 124469
2011-01-28 03:28:10 +00:00