llvm/test/Transforms
Shuxin Yang e0409098ae Fix a bug in Dead Argument Elimination.
If a function seen at compile time is not necessarily the one linked to
the binary being built, it is illegal to change the actual arguments
passing to it. 

  e.g. 
   --------------------------
   void foo(int lol) {
     // foo() has linkage satisifying isWeakForLinker()
     // "lol" is not used at all.
   }

   void bar(int lo2) {
      // xform to foo(undef) is illegal, as compiler dose not know which
      // instance of foo() will be linked to the the binary being built.
      foo(lol2); 
   }
  -----------------------------

  Such functions can be captured by isWeakForLinker(). NOTE that
mayBeOverridden() is insufficient for this purpose as it dosen't include
linkage types like AvailableExternallyLinkage and LinkOnceODRLinkage.
Take link_odr* as an example, it indicates a set of *EQUIVALENT* globals
that can be merged at link-time. However, the semantic of 
*EQUIVALENT*-functions includes parameters. Changing parameters breaks
the assumption.

  Thank John McCall for help, especially for the explanation of subtle
difference between linkage types.

  rdar://11546243


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192302 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-09 17:21:44 +00:00
..
ADCE
ArgumentPromotion
BBVectorize
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp
CorrelatedValuePropagation
DeadArgElim Fix a bug in Dead Argument Elimination. 2013-10-09 17:21:44 +00:00
DeadStoreElimination
DebugIR Use right pointer type in DebugIR 2013-09-27 22:26:25 +00:00
EarlyCSE
FunctionAttrs
GCOVProfiling
GlobalDCE
GlobalOpt Revert r191834 until we measure the effect of this benchmarks and maybe find a better way to fix it 2013-10-07 19:03:24 +00:00
GVN TBAA: update tbaa format from scalar format to struct-path aware format. 2013-09-30 18:17:55 +00:00
IndVarSimplify
Inline TBAA: remove !tbaa from testing cases when they are not needed. 2013-09-30 18:17:35 +00:00
InstCombine Change objectsize intrinsic to accept different address spaces. 2013-10-07 18:06:48 +00:00
InstSimplify Add a test that large offsets on GEPs on 32 bits targets are handled correctly. 2013-09-28 21:27:49 +00:00
Internalize Optimize linkonce_odr unnamed_addr functions during LTO. 2013-10-03 18:29:09 +00:00
IPConstantProp
JumpThreading TBAA: handle scalar TBAA format and struct-path aware TBAA format. 2013-09-27 18:34:27 +00:00
LCSSA
LICM Debug Info: In DIBuilder, the derived-from field of a DW_TAG_pointer_type 2013-10-05 01:43:03 +00:00
LoopDeletion
LoopIdiom
LoopRotate
LoopSimplify UpdatePHINodes in BasicBlockUtils should not crash on duplicate predecessors 2013-10-04 23:41:05 +00:00
LoopStrengthReduce SCEVExpander: Fix a regression I introduced by to eagerly adding RAII objects. 2013-10-01 12:17:11 +00:00
LoopUnroll
LoopUnswitch
LoopVectorize LoopVectorize: External uses must use the last value in a reduction cycle 2013-10-07 21:05:43 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc Don't merge tiny functions. 2013-10-01 18:05:30 +00:00
MetaRenamer
ObjCARC
PhaseOrdering
PruneEH
Reassociate
Reg2Mem
ScalarRepl
SCCP
SimplifyCFG
Sink
SLPVectorizer SLPVectorizer: Sort inputs to commutative binary operations 2013-10-04 20:39:16 +00:00
SROA SROA: Handle casts involving vectors of pointers and integer scalars. 2013-09-21 20:36:04 +00:00
StripSymbols
StructurizeCFG StructurizeCFG: Add dependency on LowerSwitch pass 2013-10-02 17:04:59 +00:00
TailCallElim
TailDup