hanchenye-llvm-project/llvm/test/Transforms
Chris Lattner 83791ced7b Teach valuetracking that byval arguments with a specified alignment are
aligned.

Teach memcpyopt to not give up all hope when confonted with an underaligned
memcpy feeding an overaligned byval.  If the *source* of the memcpy can be
determined to be adequeately aligned, or if it can be forced to be, we can
eliminate the memcpy.

This addresses PR9794.  We now compile the example into:

define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp {
entry:
  %call = call i32 @g(%struct.p* byval align 8 %q) nounwind
  ret i32 %call
}

in both x86-64 and x86-32 mode.  We still don't get a tailcall though,
because tailcalls apparently can't handle byval.

llvm-svn: 131884
2011-05-23 00:03:39 +00:00
..
ADCE
ArgumentPromotion fix PR8932, a case where arg promotion could infinitely promote. 2011-01-16 08:09:24 +00:00
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare Roll r127459 back in: 2011-03-11 21:52:04 +00:00
ConstProp implement PR9315, constant folding exp2 in terms of pow (since hosts without 2011-05-22 22:22:35 +00:00
ConstantMerge Don't merge two constants if we care about the address of both. 2011-01-16 17:05:09 +00:00
CorrelatedValuePropagation Test for lazy value info's ability to prove the absense of NULLs in pointers. 2011-01-16 21:57:20 +00:00
DeadArgElim Fix grammar in test. 2011-05-22 01:16:00 +00:00
DeadStoreElimination * The DSE code that tested for overlapping needed to take into account the fact 2011-03-30 21:37:19 +00:00
EarlyCSE Duncan deftly points out that readnone functions aren't 2011-01-03 23:38:13 +00:00
FunctionAttrs
GVN fix PR9841 by having GVN not process dead loads. This was 2011-05-22 07:03:34 +00:00
GlobalDCE
GlobalOpt fix PR9856, an incorrectly conservative assertion: a global can be 2011-05-22 07:15:13 +00:00
IPConstantProp
IndVarSimplify Fixes PR9730: indvars: An asserting value handle still pointed to this value 2011-04-27 23:00:03 +00:00
Inline Commit test change, forgotten as part of r131838. 2011-05-22 05:31:47 +00:00
InstCombine Carve out a place in instcombine to put transformations which work knowing that their 2011-05-22 18:18:41 +00:00
InstSimplify The comparision "max(x,y)==x" is equivalent to "x>=y". Since the max is 2011-05-07 16:56:49 +00:00
Internalize Add test for r127138. 2011-03-07 21:28:14 +00:00
JumpThreading Fix an infinite alternation in JumpThreading where two transforms would repeatedly undo each other. The solution is to perform more aggressive constant folding to make one of the edges just folded away rather than trying to thread it. 2011-04-14 21:35:50 +00:00
LCSSA Do not add PHIs with no users when creating LCSSA form. Patch by Andrew Clinton. 2011-03-15 07:41:25 +00:00
LICM PR9604; try to deal with RAUW updates correctly in the AST. I'm not convinced 2011-04-09 06:55:46 +00:00
LoopDeletion Make LoopDeletion work on loops with multiple edges, as long as the incoming 2011-02-22 22:25:39 +00:00
LoopIdiom Fix PR9815: I was trying to get out of "generating code and then 2011-05-22 17:39:56 +00:00
LoopRotate fix PR9523, a crash in looprotate on a non-canonical loop made out of indirectbr. 2011-04-09 07:25:58 +00:00
LoopSimplify Avoid creating canonical induction variables for non-native types. 2011-03-18 16:50:32 +00:00
LoopStrengthReduce When forming an ICmpZero LSRUse, normalize the non-IV operand 2011-05-18 21:02:18 +00:00
LoopUnroll add a testcase for r125827 2011-02-18 05:05:01 +00:00
LoopUnswitch Factor code for testing whether replacing one value with another 2010-11-18 19:59:41 +00:00
LowerAtomic
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg
MemCpyOpt Teach valuetracking that byval arguments with a specified alignment are 2011-05-23 00:03:39 +00:00
MergeFunc When removing a function from the function set and adding it to deferred, we 2011-02-09 06:32:02 +00:00
PhaseOrdering final step needed to resolve PR6627, which allows us to flatten the code down to 2011-04-28 18:15:47 +00:00
PruneEH
Reassociate Fix reassociate to use a worklist instead of recursing when new 2011-04-12 00:11:56 +00:00
SCCP Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
ScalarRepl Fix PR9820: a read-only call differs from a load in that a load doesn't 2011-05-06 10:30:37 +00:00
SimplifyCFG Add a parameter to ConstantFoldTerminator() that callers can use to ask it to also clean up the condition of any conditional terminator it folds to be unconditional, if that turns the condition into dead code. This just means it calls RecursivelyDeleteTriviallyDeadInstructions() in strategic spots. It defaults to the old behavior. 2011-05-22 16:24:18 +00:00
SimplifyLibCalls Preserve line number information while simplifying libcalls. 2011-03-09 21:27:52 +00:00
Sink
StripSymbols
TailCallElim Don't do tail calls in a function that call setjmp. The stack might be 2011-05-16 03:05:33 +00:00
TailDup Move few target-dependant tests to appropriate directories. 2011-05-06 18:24:46 +00:00