Chris Lattner
2ee1f0f0b5
enhance FoldReinterpretLoadFromConstPtr to handle loads of up to 32
...
bytes (i256).
llvm-svn: 84941
2009-10-23 06:50:36 +00:00
Chris Lattner
b1d2706a4c
teach libanalysis to fold int and fp loads from almost arbitrary
...
non-type-safe constant initializers. This sort of thing happens
quite a bit for 4-byte loads out of string constants, unions,
bitfields, and an interesting endianness check from sqlite, which
is something like this:
const int sqlite3one = 1;
# define SQLITE_BIGENDIAN (*(char *)(&sqlite3one)==0)
# define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
# define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
all of these macros now constant fold away.
This implements PR3152 and is based on a patch started by Eli, but heavily
modified and extended.
llvm-svn: 84936
2009-10-23 06:23:49 +00:00
Evan Cheng
0db11ae5a2
X86 needs critical path anti-dependency breaking.
...
llvm-svn: 84931
2009-10-23 05:57:35 +00:00
Dale Johannesen
3f91e235b8
Commit fixes for half precision I noted in review, so
...
they don't get lost; I don't think the originator has
write access.
llvm-svn: 84928
2009-10-23 04:02:51 +00:00
Victor Hernandez
48872a3306
Minor code cleanup.
...
llvm-svn: 84919
2009-10-23 00:59:10 +00:00
Bill Wendling
283fb69c0a
Neuter stack protectors by only checking character arrays. This is what GCC
...
does.
llvm-svn: 84916
2009-10-23 00:01:05 +00:00
David Goodwin
82c1dd9754
Allow the target to select the level of anti-dependence breaking that should be performed by the post-RA scheduler. The default is none.
...
llvm-svn: 84911
2009-10-22 23:19:17 +00:00
Ted Kremenek
b9ff937285
Use 'waitpid' instead of 'wait'. Basing Program::Wait() on 'wait()' prevents it being correct within a multithreaded context.
...
This address: PR 5277 (Program::Wait is unsafe to call from multiple threads).
Note: If waitpid() turns out to be non-portable, we can add more autoconf magic, or look into
another solution.
llvm-svn: 84903
2009-10-22 22:16:17 +00:00
Benjamin Kramer
13aa437a5e
Random include cleanup.
...
llvm-svn: 84898
2009-10-22 21:49:41 +00:00
Jeffrey Yasskin
7ed6722fc4
Fix OProfileJITEventListener after r84054 renamed CompileUnit to Scope.
...
llvm-svn: 84895
2009-10-22 20:57:35 +00:00
Bill Wendling
c6d3a6ed66
Tidying up some code and comments. No functionality change.
...
llvm-svn: 84894
2009-10-22 20:48:59 +00:00
Devang Patel
5c461d6dcd
Hide MetadataContext implementation details.
...
llvm-svn: 84886
2009-10-22 19:36:54 +00:00
Devang Patel
2a0e2f1794
Fix getMDs() interface such that it does not expose implementation details.
...
llvm-svn: 84885
2009-10-22 18:55:16 +00:00
Devang Patel
1fa3e26912
Using TrackingVH instead of WeakVH or WeakMetadataVH.
...
llvm-svn: 84884
2009-10-22 18:25:28 +00:00
Devang Patel
944cbf7647
Sort handler names to ensure deterministic behavior.
...
llvm-svn: 84878
2009-10-22 17:40:37 +00:00
Bob Wilson
8f4f73da55
Revert 84843. Evan, this was breaking some of the if-conversion tests.
...
llvm-svn: 84868
2009-10-22 16:52:21 +00:00
Nicolas Geoffray
7955fa8d35
Verify that the function and exception table have been allocated
...
before freeing them.
llvm-svn: 84859
2009-10-22 14:35:57 +00:00
Benjamin Kramer
b159c164d2
Shift art to the right to keep GCC from complaining about multi-line comments.
...
llvm-svn: 84849
2009-10-22 09:28:49 +00:00
Evan Cheng
2edd1efa46
Move if-conversion before post-regalloc scheduling so the predicated instruction get scheduled properly.
...
llvm-svn: 84843
2009-10-22 06:48:32 +00:00
Evan Cheng
d411ac1267
Load / store multiple was missing opportunites when the load / store bundles are at the end of the bb. Test case is already in, the bug is exposed by subsequent commit.
...
llvm-svn: 84842
2009-10-22 06:47:35 +00:00
Chris Lattner
cd80b1711b
move another load optimization from instcombine -> libanalysis.
...
llvm-svn: 84841
2009-10-22 06:44:07 +00:00
Chris Lattner
3fb4c19b7d
move 'loading i32 from string' optimization from instcombine
...
to libanalysis. Instcombine shrinking... does this even
make sense???
llvm-svn: 84840
2009-10-22 06:38:35 +00:00
Chris Lattner
2c8c8533b1
Move some constant folding logic for loads out of instcombine into
...
Analysis/ConstantFolding.cpp. This doesn't change the behavior of
instcombine but makes other clients of ConstantFoldInstruction
able to handle loads. This was partially extracted from Eli's patch
in PR3152.
llvm-svn: 84836
2009-10-22 06:25:11 +00:00
Evan Cheng
0c6aa52214
Trim more includes.
...
llvm-svn: 84832
2009-10-22 05:11:00 +00:00
Evan Cheng
166f455456
Trim include.
...
llvm-svn: 84831
2009-10-22 05:08:49 +00:00
Chris Lattner
e0932e92e9
fix warning.
...
llvm-svn: 84826
2009-10-22 03:42:27 +00:00
Devang Patel
6df2865e24
Fix getHandlerNames() interface. Now it populate clinet supplied small vector with handler names.
...
llvm-svn: 84820
2009-10-22 01:01:24 +00:00
Evan Cheng
8fdd1661fa
Don't generate sbfx / ubfx with negative lsb field. Patch by David Conrad.
...
llvm-svn: 84813
2009-10-22 00:40:00 +00:00
Devang Patel
125861a48c
Use StringRef to construct MDString.
...
llvm-svn: 84811
2009-10-22 00:22:05 +00:00
Chris Lattner
7c507ae857
fix PR5262.
...
llvm-svn: 84810
2009-10-22 00:17:26 +00:00
Anton Korobeynikov
bbc637e96d
Use special DAG-to-DAG preprocessing to allow mem-mem instructions to be selected.
...
Yay for ASCII graphics!
llvm-svn: 84808
2009-10-22 00:16:00 +00:00
Anton Korobeynikov
726b132e13
Fix null pointer dereference.
...
llvm-svn: 84806
2009-10-22 00:15:17 +00:00
Devang Patel
068e5420ce
Remove meaningless const.
...
Pass StringRef by value.
llvm-svn: 84804
2009-10-22 00:10:15 +00:00
Dan Gohman
2d8e5654a8
Revert the main portion of r31856. It was causing BranchFolding
...
to break up CFG diamonds by banishing one of the blocks to the end of
the function, which is bad for code density and branch size.
This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the
benchmark cited as the reason for the change, however I've examined
the code and it looks more like a case of gaming a particular
branch than of being generally applicable.
llvm-svn: 84803
2009-10-22 00:03:58 +00:00
Devang Patel
f9d56f4830
Derive metadata hierarchy from Value instead of User.
...
llvm-svn: 84801
2009-10-21 23:57:35 +00:00
Chris Lattner
bf5a89d82b
revert r84754, it isn't the right approach. Edwin, please propose
...
patches for fixes like this instead of committing them directly.
llvm-svn: 84799
2009-10-21 23:41:58 +00:00
Jim Grosbach
f79f9afb91
Missing piece of the ARM frame index post-scavenging conditionalization
...
llvm-svn: 84798
2009-10-21 23:40:56 +00:00
Benjamin Kramer
1af3b8ca4d
Fix thinko noticed by Chris.
...
llvm-svn: 84797
2009-10-21 23:29:32 +00:00
Dale Johannesen
2bb120a97f
Rename msasm to alignstack per review.
...
llvm-svn: 84795
2009-10-21 23:28:00 +00:00
Benjamin Kramer
87ca5b37b6
Remove pointless return; at end of function.
...
llvm-svn: 84794
2009-10-21 23:27:54 +00:00
Jim Grosbach
3ae825eccf
The spill restore needs to be resolved to the SP/FP just like the spill
...
llvm-svn: 84792
2009-10-21 22:59:56 +00:00
Jim Grosbach
363a67d9c5
Conditionalize ARM/T2 frame index post-scavenging while working out fixes
...
for a few bugs.
llvm-svn: 84791
2009-10-21 22:59:24 +00:00
Benjamin Kramer
a5cb240184
Simplify code. No intended functionality change.
...
llvm-svn: 84790
2009-10-21 22:55:51 +00:00
Devang Patel
7e3d4b199c
Use StringRef.
...
llvm-svn: 84786
2009-10-21 21:57:13 +00:00
Bob Wilson
26a4580439
Most of the NEON shuffle instructions do not support 64-bit element types.
...
llvm-svn: 84785
2009-10-21 21:36:27 +00:00
Devang Patel
d10159397a
Do not use SmallVector to store MDNode elements.
...
llvm-svn: 84784
2009-10-21 21:25:09 +00:00
Anton Korobeynikov
141a4a2f42
Revert r84764, it breaks mingw build
...
llvm-svn: 84783
2009-10-21 21:15:18 +00:00
Jim Grosbach
452de96b04
Improve handling of immediates by splitting 32-bit immediates into two 16-bit
...
immediate operands when they will fit into the using instruction.
llvm-svn: 84778
2009-10-21 20:44:34 +00:00
Anton Korobeynikov
23ea13afbb
Add DAG printing for RMW stuff debugging
...
llvm-svn: 84776
2009-10-21 19:18:28 +00:00
Anton Korobeynikov
d233af8049
RMW preprocessing stuff was incorrect. Grab the stuff from x86 backend and disable some tests until it will be clever enough to handle them.
...
llvm-svn: 84775
2009-10-21 19:17:55 +00:00