llvm-6502/test/Transforms
Chris Lattner b3f0673d52 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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131884 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-23 00:03:39 +00:00
..
ADCE
ArgumentPromotion
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp implement PR9315, constant folding exp2 in terms of pow (since hosts without 2011-05-22 22:22:35 +00:00
CorrelatedValuePropagation
DeadArgElim Fix grammar in test. 2011-05-22 01:16:00 +00:00
DeadStoreElimination
EarlyCSE
FunctionAttrs
GlobalDCE
GlobalOpt fix PR9856, an incorrectly conservative assertion: a global can be 2011-05-22 07:15:13 +00:00
GVN fix PR9841 by having GVN not process dead loads. This was 2011-05-22 07:03:34 +00:00
IndVarSimplify
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
IPConstantProp
JumpThreading
LCSSA
LICM
LoopDeletion
LoopIdiom Fix PR9815: I was trying to get out of "generating code and then 2011-05-22 17:39:56 +00:00
LoopRotate
LoopSimplify
LoopStrengthReduce When forming an ICmpZero LSRUse, normalize the non-IV operand 2011-05-18 21:02:18 +00:00
LoopUnroll
LoopUnswitch
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
PhaseOrdering
PruneEH
Reassociate
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
SCCP
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
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