Chris Lattner
e6b261fec5
Make loop-idiom use TargetLibraryInfo to determine whether it is allowed
...
to hack on memset, memcpy etc.
llvm-svn: 125974
2011-02-18 22:22:15 +00:00
Oscar Fuentes
5ed962656c
Move library stuff out of the toplevel CMakeLists.txt file.
...
llvm-svn: 125968
2011-02-18 22:06:14 +00:00
Jakob Stoklund Olesen
5bfec69b1d
Add VirtRegMap::rewrite() and use it in the new register allocators.
...
The rewriter works almost identically to -rewriter=trivial, except it also
eliminates any identity copies.
This makes the new register allocators independent of VirtRegRewriter.cpp which
will be going away at the same time as RegAllocLinearScan.
llvm-svn: 125967
2011-02-18 22:03:18 +00:00
Chris Lattner
0e125bb4d0
introduce a new TargetLibraryInfo pass, which transformations can use to
...
query about available library functions. For now this just has
memset_pattern16, which exists on darwin, but it can be extended for a
bunch of other things in the future.
llvm-svn: 125965
2011-02-18 21:50:34 +00:00
Bill Wendling
8fbe09f160
Reapply r114997 now that the buildbots have been updated.
...
llvm-svn: 125960
2011-02-18 21:12:58 +00:00
Bruno Cardoso Lopes
cdd20affec
Fix style and a typo
...
llvm-svn: 125949
2011-02-18 19:49:06 +00:00
Bruno Cardoso Lopes
9cd43977c3
Add assembly parsing support for "msr" and also fix its encoding. Also add
...
testcases for the disassembler to make sure it still works for "msr".
llvm-svn: 125948
2011-02-18 19:45:59 +00:00
Chris Lattner
c37910ea28
improve support for OpenBSD, patch by Amit Kulkarni!
...
llvm-svn: 125943
2011-02-18 17:04:56 +00:00
Rafael Espindola
7c0cb2bbf5
Expose getTypeName to the C API. Patch by Patrick Walton.
...
llvm-svn: 125845
2011-02-18 16:35:37 +00:00
Duncan Sands
84653b3674
Add some transforms of the kind X-Y>X -> 0>Y which are valid when there is no
...
overflow. These subsume some existing equality transforms, so zap those.
llvm-svn: 125843
2011-02-18 16:25:37 +00:00
Chris Lattner
0281731cc2
add a poor division by constant case.
...
llvm-svn: 125832
2011-02-18 05:35:49 +00:00
Cameron Zwarich
0a1a36dc46
Roll out r125794 to help diagnose the llvm-gcc-i386-linux-selfhost failure.
...
llvm-svn: 125830
2011-02-18 04:58:10 +00:00
Chris Lattner
1a924e770a
prevent jump threading from merging blocks when their address is
...
taken (and used!). This prevents merging the blocks (invalidating
the block addresses) in a case like this:
#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
void foo() {
printf("%p\n", _THIS_IP_);
printf("%p\n", _THIS_IP_);
printf("%p\n", _THIS_IP_);
}
which fixes PR4151.
llvm-svn: 125829
2011-02-18 04:43:06 +00:00
Chris Lattner
8488640da7
hoist GlobalValue::removeDeadConstantUsers up to being a method on Constant.
...
llvm-svn: 125828
2011-02-18 04:41:42 +00:00
Chris Lattner
4a14fbc50c
Don't unroll loops whose header block's address is taken.
...
This is part of a futile attempt to not "break" bizzaro
code like this:
l1:
printf("l1: %p\n", &&l1);
++x;
if( x < 3 ) goto l1;
Previously we'd fold &&l1 to 1, which is fine per our semantics
but not helpful to the user.
llvm-svn: 125827
2011-02-18 04:25:21 +00:00
Joerg Sonnenberger
f69c80bac2
Recognize monitor/mwait with explicit register arguments
...
llvm-svn: 125805
2011-02-18 00:48:11 +00:00
Argyrios Kyrtzidis
4f3f9c7ba9
Check the errorcode.
...
llvm-svn: 125804
2011-02-18 00:47:07 +00:00
Jakob Stoklund Olesen
73e203e3d3
Trim debugging output.
...
llvm-svn: 125802
2011-02-18 00:32:47 +00:00
Joerg Sonnenberger
889a508157
Recognize leavel and leaveq aliases for leave.
...
Validate encoding of leave in 64bit mode.
llvm-svn: 125795
2011-02-17 23:36:39 +00:00
Devang Patel
f922a431ee
Do not lose debug info of an inlined function argument even if the argument is only used through GEPs.
...
llvm-svn: 125794
2011-02-17 23:33:27 +00:00
Chris Lattner
a8fed47eed
have instcombine preserve nsw/nuw/exact when sinking
...
common operations through a phi.
llvm-svn: 125790
2011-02-17 23:01:49 +00:00
Jakob Stoklund Olesen
99827e861f
Add basic register allocator statistics.
...
llvm-svn: 125789
2011-02-17 22:53:48 +00:00
Chris Lattner
75ae5a45ff
fix typo
...
llvm-svn: 125787
2011-02-17 22:32:54 +00:00
Chris Lattner
abb8eb2c63
fix instcombine merging GEPs through a PHI to only make the
...
result inbounds if all of the inputs are inbounds.
llvm-svn: 125785
2011-02-17 22:21:26 +00:00
Nadav Rotem
7cc6d12ad0
Enhance constant folding of bitcast operations on vectors of floats.
...
Add getAllOnesValue of FP numbers to Constants and APFloat.
Add more tests.
llvm-svn: 125776
2011-02-17 21:22:27 +00:00
Chris Lattner
d406764d52
add is always integer, thanks to Frits for noticing this.
...
llvm-svn: 125774
2011-02-17 20:55:29 +00:00
David Greene
3a2b508e8f
[AVX] Recorganize X86ShuffleDecode into its own library
...
(LLVMX86Utils.a) to break cyclic library dependencies between
LLVMX86CodeGen.a and LLVMX86AsmParser.a. Previously this code was in
a header file and marked static but AVX requires some additional
functionality here that won't be used by all clients. Since including
unused static functions causes a gcc compiler warning, keeping it as a
header would break builds that use -Werror. Putting this in its own
library solves both problems at once.
llvm-svn: 125765
2011-02-17 19:18:59 +00:00
Jakob Stoklund Olesen
93c8736abb
Split local live ranges.
...
A local live range is live in a single basic block. If such a range fails to
allocate, try to find a sub-range that would get a larger spill weight than its
interference.
llvm-svn: 125764
2011-02-17 19:13:53 +00:00
Dan Gohman
f0f8e14370
The labyrinthine X86 backend no longer appears to require
...
these patterns.
llvm-svn: 125759
2011-02-17 18:50:19 +00:00
Duncan Sands
c6196aa481
Fix wrong logic in promotion of signed mul-with-overflow (I pointed this out at
...
the time but presumably my email got lost). Examples where the previous logic
got it wrong: (1) a signed i8 multiply of 64 by 2 overflows, but the high part is
zero; (2) a signed i8 multiple of -128 by 2 overflows, but the high part is all
ones.
llvm-svn: 125748
2011-02-17 12:42:48 +00:00
NAKAMURA Takumi
4c14a5cc2c
Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 generally.
...
No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way.
llvm-svn: 125747
2011-02-17 12:24:17 +00:00
NAKAMURA Takumi
0544fe7287
Fix whitespace.
...
llvm-svn: 125746
2011-02-17 12:23:50 +00:00
Duncan Sands
491eb276a7
This has been implemented.
...
llvm-svn: 125738
2011-02-17 08:16:56 +00:00
Duncan Sands
e522001171
Transform "A + B >= A + C" into "B >= C" if the adds do not wrap. Likewise for some
...
variations (some of these were already present so I unified the code). Spotted by my
auto-simplifier as occurring a lot.
llvm-svn: 125734
2011-02-17 07:46:37 +00:00
Cameron Zwarich
83f4cee199
Switch to SmallVector in SimpleRegisterCoalescing for a 3.5% speedup on 403.gcc.
...
llvm-svn: 125728
2011-02-17 06:52:07 +00:00
Cameron Zwarich
ecd44922ab
Adjust indenting of arguments.
...
llvm-svn: 125727
2011-02-17 06:13:46 +00:00
Cameron Zwarich
0b0cc4d75e
Return Changed from SplitPHIEdges rather than always returning true.
...
llvm-svn: 125726
2011-02-17 06:13:43 +00:00
Chris Lattner
5592071768
preserve NUW/NSW when transforming add x,x
...
llvm-svn: 125711
2011-02-17 02:23:02 +00:00
Chris Lattner
727eebee58
add some notes on compares + binops. Remove redundant entries.
...
llvm-svn: 125702
2011-02-17 01:43:46 +00:00
Chris Lattner
3eb0af94c4
fix PR9215, preventing -reassociate from clearing nsw/nuw when
...
it swaps the LHS/RHS of a single binop.
llvm-svn: 125700
2011-02-17 01:29:24 +00:00
Chris Lattner
28bf91f78e
Add a few missed xforms from GCC PR14753
...
llvm-svn: 125681
2011-02-16 19:16:34 +00:00
Stuart Hastings
81c4306005
Swap VT and DebugLoc operands of getExtLoad() for consistency with
...
other getNode() methods. Radar 9002173.
llvm-svn: 125665
2011-02-16 16:23:55 +00:00
Eli Friedman
c8fb2557b9
Remove outdated README entry.
...
llvm-svn: 125660
2011-02-16 07:41:19 +00:00
Eli Friedman
0254c4c01b
Remove outdated README entry.
...
llvm-svn: 125659
2011-02-16 07:18:18 +00:00
Eli Friedman
5f75515e5d
Update README entry.
...
llvm-svn: 125658
2011-02-16 07:17:44 +00:00
Eric Christopher
e5ca1e0506
Refactor zero folding slightly. Clean up todo.
...
llvm-svn: 125651
2011-02-16 04:50:12 +00:00
Rafael Espindola
490d02a334
Gas is very inconsistent about when a relaxation/relocation is needed. Do
...
the right thing and stop trying to copy it. Fixes PR8944.
llvm-svn: 125648
2011-02-16 03:25:55 +00:00
Eric Christopher
ef72141a75
The change for PR9190 wasn't quite right. We need to avoid making the
...
transformation if we can't legally create a build vector of the correct
type. Check that we can make the transformation first, and add a TODO to
refactor this code with similar cases.
Fixes: PR9223 and rdar://9000350
llvm-svn: 125631
2011-02-16 01:10:03 +00:00
Rafael Espindola
58ac6e1677
Add support for pushsection and popsection. Patch by Joerg Sonnenberger.
...
llvm-svn: 125629
2011-02-16 01:08:29 +00:00
Evan Cheng
2eecc22fdb
Remove a duplicated check.
...
llvm-svn: 125625
2011-02-16 00:37:02 +00:00