Oscar Fuentes
78e2074eee
Adds some platform checks to cmake/config-ix.cmake and fixes checking
...
for dlopen/dlerror.
Patch by arrowdodger!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124590 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-31 18:25:25 +00:00
Richard Osborne
4e3740ee6d
Fix bug where ReduceLoadWidth was creating illegal ZEXTLOAD instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124587 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-31 17:41:44 +00:00
NAKAMURA Takumi
e85dcb54d1
CMake: Fix a few definition to suppress warnings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124583 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-31 09:41:20 +00:00
Anton Korobeynikov
98b928ea71
Save a mapping between original and cloned constpool entries.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124570 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 22:07:39 +00:00
Anton Korobeynikov
ed299f6fa9
Clarify the LSDASection NULL check
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124569 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 22:07:31 +00:00
Anders Carlsson
77bc49e5e2
Recognize and simplify
...
(A+B) == A -> B == 0
A == (A+B) -> B == 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124567 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 22:01:13 +00:00
Jakob Stoklund Olesen
8352062e52
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124564 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 20:38:12 +00:00
Duncan Sands
7af00c0f6e
Commit 124487 broke 254.gap. See if disabling the part that might be triggered
...
by PR9088 fixes things.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124561 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 18:24:20 +00:00
Duncan Sands
1895e98ef3
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124560 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 18:03:50 +00:00
Benjamin Kramer
9b108a338d
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124559 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 16:38:43 +00:00
Nick Lewycky
bb25e2c91b
Fix 'fcmp one' constant folding. Noticed by inspection.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124557 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 01:49:58 +00:00
Nick Lewycky
b8787f3403
Fix some formatting and upgrade comments from llvm 1.x to 2.x syntax.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124556 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 01:48:50 +00:00
Bill Wendling
b476302b24
This is #included by .c files. Remove C++-style comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124552 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 21:54:26 +00:00
Nick Lewycky
175e7aec13
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124547 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 20:35:06 +00:00
Francois Pichet
337c081138
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124545 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 20:06:16 +00:00
Nick Lewycky
5413880654
Fix comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124544 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 19:55:23 +00:00
Frits van Bommel
31726c154d
Call SimplifyFDivInst() in InstCombiner::visitFDiv().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124535 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 17:50:27 +00:00
Frits van Bommel
1fca2c32cc
Move InstCombine's knowledge of fdiv to SimplifyInstruction().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124534 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 15:26:31 +00:00
Duncan Sands
9136782d27
Fix typo: should have been testing that X was odd, not V.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124533 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 13:27:00 +00:00
Benjamin Kramer
2c94b4201b
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124532 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 12:34:05 +00:00
Evan Cheng
60f5ad46c2
Add a test for TCE return duplication.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124527 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 04:53:35 +00:00
Evan Cheng
c3f507f98a
Re-apply r124518 with fix. Watch out for invalidated iterator.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124526 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 04:46:23 +00:00
Evan Cheng
b0a42fdb36
Revert r124518. It broke Linux self-host.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124522 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 02:43:04 +00:00
Evan Cheng
5e6940788f
Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124518 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 01:29:26 +00:00
Andrew Trick
04317cc618
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124515 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 01:09:53 +00:00
Nick Lewycky
db9cd76635
Most browsers eliminate whitespace between anchor tags. Force whitespace with
...
so that the code reads properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124514 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-29 01:09:53 +00:00
Roman Divacky
cb72780176
Error on .code16 instead of producing wrong (32bit) code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124498 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 19:29:48 +00:00
Duncan Sands
79f4eea7a3
This dyn_cast should be a cast. Pointed out by Frits van Bommel.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124497 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 18:53:08 +00:00
Duncan Sands
a3e292c7e8
Thread divisions over selects and phis. This doesn't fire much and has basically
...
zero effect on the testsuite (it improves two Ada testcases).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124496 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 18:50:50 +00:00
Bob Wilson
d11c57a937
PR9030: Fix disassembly of ARM "mov pc, lr" instruction.
...
Patch by Jyun-Yan You.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124492 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 17:50:30 +00:00
Duncan Sands
593faa53fa
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124487 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 16:51:11 +00:00
Oscar Fuentes
abcae24d99
Fix libffi usage when it is on a custom path.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124486 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 16:49:05 +00:00
Roman Divacky
14e66553d5
Add support for parsing .float
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124485 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 14:20:32 +00:00
Nick Lewycky
468ee0a90d
Rename functions to follow coding standard. Also rejiggers comments. No
...
functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124482 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 08:43:14 +00:00
Nick Lewycky
8b5964381e
Add a doxygen comment for this class.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124480 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 08:19:00 +00:00
Nick Lewycky
285cf8040d
Reorder for readability. (Chris, is this what you meant?)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124479 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 07:36:21 +00:00
Evan Cheng
1b5c0cb71d
Revert r124462. There are a few big regressions that I need to fix first.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124478 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 07:12:38 +00:00
Nick Lewycky
07317f7d33
Reduce the number of functions we look at in the first pass, and preallocate
...
the function equality set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124475 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 05:48:15 +00:00
Nick Lewycky
26859587fd
Clean up the tests a little, make sure we match an instruction in the right
...
test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124473 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 05:13:17 +00:00
Nick Lewycky
ed4efd3358
Fix build with stdcxx by using llvm::next. Patch by Joerg Sonnenberger!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124472 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 04:00:15 +00:00
Rafael Espindola
ddf0e59cc6
Add a triple.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124471 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 03:57:55 +00:00
Nick Lewycky
ae479aa13e
Add missing include for ptrdiff_t. Patch by Joerg Sonnenberger!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124470 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 03:52:25 +00:00
Nick Lewycky
df3bfae151
Fold select + select where both selects are on the same condition.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124469 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 03:28:10 +00:00
Rafael Espindola
1ffb533699
Print the visibility of declarations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124468 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 03:20:10 +00:00
Nico Weber
4c4c732960
PR8951: Support for .equiv in integrated assembler, patch by Jörg Sonnenberger!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124467 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 03:04:41 +00:00
Evan Cheng
40f64cb0de
- Stop simplifycfg from duplicating "ret" instructions into unconditional
...
branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
allocation is done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124462 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-28 02:19:21 +00:00
Evan Cheng
c3a20bab75
Fix PLD encoding.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124458 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27 23:48:34 +00:00
Kevin Enderby
9e56fb12c5
Changed llvm-mc arm target to give an error if .syntax divided is used. Since
...
only .syntax unified is supported.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124454 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27 23:22:36 +00:00
Bob Wilson
9b8c3530cc
Fix a comment typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124450 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27 23:08:52 +00:00
Oscar Fuentes
11d23bd890
Use the paths to libffi's header and library even when no custom
...
location was stated with FFI_INCLUDE_DIR/FFI_LIBRARY_DIR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124449 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-27 22:58:34 +00:00