1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 05:23:45 +02:00
Commit Graph

1265 Commits

Author SHA1 Message Date
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
Chris Lattner
7c507ae857 fix PR5262.
llvm-svn: 84810
2009-10-22 00:17:26 +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
Victor Hernandez
0996619220 Make changes to rev 84292 as requested by Chris Lattner.
Most changes are cleanup, but there is 1 correctness fix:
I fixed InstCombine so that the icmp is removed only if the malloc call is removed (which requires explicit removal because the Worklist won't DCE any calls since they can have side-effects).

llvm-svn: 84772
2009-10-21 19:11:40 +00:00
Torok Edwin
a8a12b7d98 Fix PR5262: when folding select into PHI, make sure all operands are available
in the PHI's Basic Block. This uses a conservative approach, because we don't
have dominator info in instcombine.

llvm-svn: 84754
2009-10-21 10:49:00 +00:00
Chris Lattner
882034fdaf add a real testcase for PR4313
llvm-svn: 84676
2009-10-20 21:04:26 +00:00
Chris Lattner
0737ccf048 add a test similar to that needed for PR4313, but that doesn't
fail without the patch.

llvm-svn: 84675
2009-10-20 21:00:47 +00:00
Chris Lattner
ccbe8ab252 the date on this testcase is wrong, it is unreduced, and it passes without the fix for PR4313.
llvm-svn: 84674
2009-10-20 20:57:58 +00:00
Chris Lattner
f3be536c0a merge and filecheckize
llvm-svn: 84672
2009-10-20 20:39:43 +00:00
Chris Lattner
827cc8fa02 merge two tests and convert to filecheck.
llvm-svn: 84671
2009-10-20 20:33:46 +00:00
Chris Lattner
803539f022 alternate fix for PR5258 which avoids worklist problems, with reduced testcase.
llvm-svn: 84667
2009-10-20 20:27:49 +00:00
Torok Edwin
bdcd45a9d6 Fix PR5258, jump-threading creating invalid PHIs.
When an incoming value for a PHI is updated, we must also updated all other
incoming values for the same BB to match, otherwise we create invalid PHIs.

llvm-svn: 84638
2009-10-20 15:42:00 +00:00
Torok Edwin
3801e755cc Fix PR4313: IPSCCP was not setting the lattice value for the invoke instruction
when the invoke had multiple return values: it set the lattice value only on the
extractvalue.
This caused the invoke's lattice value to remain the default (undefined), and
later propagated to extractvalue's operand, which incorrectly introduces
undefined behavior.

llvm-svn: 84637
2009-10-20 15:15:09 +00:00
Dan Gohman
d2e75c9ae0 Fix SplitBlockPredecessors' LoopInfo updating code to handle the case
where a loop's header is being split and it has predecessors which are not
contained by the most-nested loop which contains the loop.
This fixes PR5235.

llvm-svn: 84505
2009-10-19 16:04:50 +00:00
Chris Lattner
e7c0e7f1a9 remove a now-pointless regtest
llvm-svn: 84409
2009-10-18 05:20:17 +00:00
Chris Lattner
878fd28407 remove testcase for dead pass
llvm-svn: 84406
2009-10-18 05:03:41 +00:00
Chris Lattner
2c890dc2b4 Teach vm core to more aggressively fold 'trunc' constantexprs,
allowing it to simplify the crazy constantexprs in the testcases
down to something sensible.  This allows -std-compile-opts to
completely "devirtualize" the pointers to member functions in
the testcase from PR5176.

llvm-svn: 84368
2009-10-17 21:53:27 +00:00
Chris Lattner
ebc645ca40 remove # uses from FileCheck lines.
llvm-svn: 84367
2009-10-17 21:51:19 +00:00
Chris Lattner
270ab44108 rename test
llvm-svn: 84364
2009-10-17 21:31:19 +00:00
Chris Lattner
7f32b72975 Simplify some code (first hunk) and fix PR5208 (second hunk) by
updating the callgraph when introducing a call.

llvm-svn: 84310
2009-10-17 05:39:39 +00:00
Victor Hernandez
4d7283f82c Autoupgrade malloc insts to malloc calls.
Update testcases that rely on malloc insts being present.

Also prematurely remove MallocInst handling from IndMemRemoval and RaiseAllocations to help pass tests in this incremental step.

llvm-svn: 84292
2009-10-17 00:00:19 +00:00
Victor Hernandez
00adf339dd HeapAllocSRoA also needs to check if malloc array size can be computed.
llvm-svn: 84288
2009-10-16 23:12:25 +00:00
Victor Hernandez
0122f679a8 Invert isSafeToGetMallocArraySize check because we return NULL when we don't know the size.
Thanks to Duncan Sands for noticing this bug.

llvm-svn: 84260
2009-10-16 18:07:17 +00:00
Duncan Sands
71fecaa52c Check that GVN performs this transform even if the calls
themselves are not marked readonly, but only the called
functions.

llvm-svn: 84253
2009-10-16 12:18:23 +00:00
Chris Lattner
a1f5264dd2 make instcombine's instruction sinking more aggressive in the
presence of PHI nodes.

llvm-svn: 84103
2009-10-14 15:21:58 +00:00
Chris Lattner
26c670aa44 change simplifycfg to not duplicate 'unwind' instructions. Hopefully
this will increase the likelihood of common code getting sunk towards
the unwind.

llvm-svn: 83996
2009-10-13 18:13:05 +00:00
Chris Lattner
f5049b6bb8 convert to filecheck
llvm-svn: 83995
2009-10-13 18:10:05 +00:00
Chris Lattner
8ddeaf680a rename test
llvm-svn: 83994
2009-10-13 18:08:21 +00:00
Victor Hernandez
21280bc3af Memory dependence analysis was incorrectly stopping to scan for stores to a pointer at bitcast uses of a malloc call.
It should continue scanning until the malloc call, and this patch fixes that.

llvm-svn: 83931
2009-10-13 01:42:53 +00:00
Edward O'Callaghan
da365e84bc Missing CHECK: lines makes test exit abnormally.
llvm-svn: 83835
2009-10-12 09:01:26 +00:00
Edward O'Callaghan
9393833f23 FileCheck not CheckFile, oops.
llvm-svn: 83834
2009-10-12 08:51:28 +00:00
Edward O'Callaghan
13bf3f7804 Convert InstCombine/call.ll to CheckFile.
llvm-svn: 83833
2009-10-12 08:46:47 +00:00
Edward O'Callaghan
4d633eaaae Convert the rest of the InstCombine tests from notcast to FileCheck.
llvm-svn: 83828
2009-10-12 07:18:14 +00:00
Nick Lewycky
3a206901cb Remove this part of the test, it never actually tested anything anyways. This
unbreaks make check after evocallaghan's changes.

llvm-svn: 83827
2009-10-12 06:32:42 +00:00
Edward O'Callaghan
0cc7f5e34a Fix syntax error missed in converting zext.ll test. Convert 2003-11-13-ConstExprCastCall.ll to FileCheck from notcast.
llvm-svn: 83826
2009-10-12 06:23:56 +00:00
Edward O'Callaghan
843b0c8830 Convert InstCombine tests from notcast to FileCheck.
llvm-svn: 83825
2009-10-12 06:14:06 +00:00
Chris Lattner
cb56deb798 reduce vec_shuffle2 and merge into vec_shuffle.
llvm-svn: 83807
2009-10-11 22:54:48 +00:00
Chris Lattner
33bff4602c filecheckize vec_shuffle.ll and merge shuffle.ll into it.
llvm-svn: 83806
2009-10-11 22:52:15 +00:00
Chris Lattner
b044bc079a filecheckize
llvm-svn: 83805
2009-10-11 22:45:17 +00:00
Chris Lattner
68ac2f7b2c rename test
llvm-svn: 83804
2009-10-11 22:44:16 +00:00
Chris Lattner
fa84cccd57 remove old testcase
llvm-svn: 83803
2009-10-11 22:42:06 +00:00
Chris Lattner
65bef57da8 merge test into shift.ll, this also eliminates awful grepping on -stats output
llvm-svn: 83802
2009-10-11 22:39:58 +00:00
Chris Lattner
bc0f470f07 convert to filecheck.
llvm-svn: 83801
2009-10-11 22:36:59 +00:00
Chris Lattner
b033a0ac47 teach instcombine to simplify xor's harder, catching the
new testcase.

llvm-svn: 83799
2009-10-11 22:22:13 +00:00
Chris Lattner
c8e0cdb676 convert xor2 to filecheck, merge in a random regtest
llvm-svn: 83796
2009-10-11 21:42:08 +00:00
Chris Lattner
100f3ac565 generalize a transformation even more: we don't care whether the
input the the mul is a zext from bool, just that it is all zeros
other than the low bit.  This fixes some phase ordering issues
that would cause us to miss some xforms in mul.ll when the worklist
is visited differently.

llvm-svn: 83794
2009-10-11 21:29:45 +00:00
Chris Lattner
40d1618562 simplify a transformation by making it more general.
llvm-svn: 83792
2009-10-11 21:22:21 +00:00
Torok Edwin
ed37f33b81 LICM shouldn't sink/delete debug information. Fix this and add a testcase.
For now the metadata of sinked/hoisted instructions is still wrong, but that'll
be fixed when instructions will have debug metadata directly attached.

llvm-svn: 83786
2009-10-11 19:15:54 +00:00
Chris Lattner
8ae883b5f0 when folding duplicate conditions, delete the
now-probably-dead instruction tree feeding it.

llvm-svn: 83778
2009-10-11 18:39:58 +00:00
Chris Lattner
601cc4c588 implement rdar://7293527, a trivial instcombine that llvm-gcc
gets but clang doesn't, because it is implemented in GCC's
fold routine.

llvm-svn: 83761
2009-10-11 07:53:15 +00:00