llvm-6502/test/Transforms
Chris Lattner d2fa781169 Implement the first half of PR3290: if there is a store of an
integer to a (transitive) bitcast the alloca and if that integer
has the full size of the alloca, then it clobbers the whole thing.
Handle this by extracting pieces out of the stored integer and 
filing them away in the SROA'd elements.

This triggers fairly frequently because the CFE uses integers to
pass small structs by value and the inliner exposes these.  For 
example, in kimwitu++, I see a bunch of these with i64 stores to
"%struct.std::pair<std::_Rb_tree_const_iterator<kc::impl_abstract_phylum*>,bool>"

In 176.gcc I see a few i32 stores to "%struct..0anon".

In the testcase, this is a difference between compiling test1 to:

_test1:
	subl	$12, %esp
	movl	20(%esp), %eax
	movl	%eax, 4(%esp)
	movl	16(%esp), %eax
	movl	%eax, (%esp)
	movl	(%esp), %eax
	addl	4(%esp), %eax
	addl	$12, %esp
	ret

vs:

_test1:
	movl	8(%esp), %eax
	addl	4(%esp), %eax
	ret

The second half of this will be to handle loads of the same form.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61853 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-07 08:11:13 +00:00
..
ADCE Remove the ability for ADCE to remove unreachable blocks in loop nests, because, as Eli pointed out, SimplifyCFG already does this. 2008-07-03 17:21:41 +00:00
ArgumentPromotion Update the callgraph correctly in ArgumentPromotion. 2008-09-08 11:07:35 +00:00
BlockPlacement Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
BranchFolding Don't branch fold inline asm statements. 2007-10-19 21:09:55 +00:00
CodeExtractor sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
CodeGenPrepare reenable test 2008-11-24 21:27:20 +00:00
CondProp Remove llvm-upgrade and update test cases. 2008-03-01 09:15:35 +00:00
ConstantMerge sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
ConstProp apply Eli's patch for PR2165 and provide a testcase. 2008-10-16 05:26:51 +00:00
DeadArgElim Support inreg, zext and sext as return value attributes. 2008-09-29 20:49:50 +00:00
DeadStoreElimination Reimplement the inner loop of DSE. It now uniformly uses getDependence(), 2008-12-06 00:53:22 +00:00
FunctionAttrs When calculating 'nocapture' argument attributes, allow 2009-01-02 11:54:37 +00:00
GlobalDCE Delete unused global aliases with internal linkage. 2009-01-05 20:37:33 +00:00
GlobalOpt Reimplement the old and horrible bison parser for .ll files with a nice 2009-01-02 07:01:27 +00:00
GVN fix PR3217: fully cached queries need to be verified against the 2008-12-16 07:10:09 +00:00
GVNPRE sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
IndVarsSimplify convertToSignExtendedInteger should return opInvalidOp instead of asserting if sematics of float does not allow arithmetics. 2008-11-25 19:00:29 +00:00
Inline Add PR number. 2008-11-05 18:41:15 +00:00
InstCombine make m_ConstantInt(int64_t) safely match ConstantInt's that are larger than i64. 2009-01-05 23:45:50 +00:00
Internalize Teach the internalize pass to also internalize 2009-01-05 21:24:45 +00:00
IPConstantProp Modify some ipconstprop tests to also test with invokes. 2008-06-19 09:27:44 +00:00
JumpThreading testcase for br undef folding. 2008-12-03 07:48:27 +00:00
LCSSA sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LICM Remove GCSE and LoadVN from the testsuite. 2008-08-16 00:00:54 +00:00
LoopDeletion don't spew tons of stuff to the output. This testcase is *not* for 2008-12-03 06:41:50 +00:00
LoopIndexSplit Rewrite code that 1) filters loops and 2) calculates new loop bounds. 2008-12-04 21:38:42 +00:00
LoopRotate sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LoopSimplify sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LoopStrengthReduce Remove. 2008-09-09 21:41:34 +00:00
LoopUnroll Add -unroll-allow-partial command line option that enabled the loop unroller to 2008-07-29 13:21:23 +00:00
LoopUnswitch Actually test something. Use PR3170 test case. 2008-12-08 23:44:46 +00:00
LowerInvoke sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LowerSetJmp sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LowerSwitch sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
Mem2Reg no need to print output 2008-10-27 06:56:35 +00:00
MemCpyOpt Fix two issues that Eli Friedman pointed out, where would misoptimized code like: 2008-06-01 22:26:26 +00:00
MergeFunc Fix tests not to emit IR output 2008-11-04 23:02:39 +00:00
PredicateSimplifier sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
PruneEH Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
RaiseAllocations sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
Reassociate Remove GCSE and LoadVN from the testsuite. 2008-08-16 00:00:54 +00:00
ScalarRepl Implement the first half of PR3290: if there is a store of an 2009-01-07 08:11:13 +00:00
SCCP Fix SCCP's handling of struct value loads and stores. SCCP doesn't 2008-08-13 21:22:48 +00:00
SimplifyCFG Add a helper to remove a branch and DCE the condition, and use it 2008-12-16 20:54:32 +00:00
SimplifyLibCalls Run a post-pass that marks known function declarations by name. 2009-01-04 20:27:34 +00:00
SRETPromotion Add a basic test for the SRETPromotion pass. 2008-08-07 15:55:18 +00:00
StripSymbols sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
TailCallElim sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
TailDup Revert 52223. 2008-06-12 20:55:39 +00:00