llvm-6502/test/Transforms/DeadArgElim
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
..
2006-06-27-struct-ret.ll
2007-02-07-FuncRename.ll
2007-10-18-VarargsReturn.ll
2007-12-20-ParamAttrs.ll Use references to attribute groups on the call/invoke instructions. 2013-02-22 09:09:42 +00:00
2008-01-16-VarargsParamAttrs.ll
2008-06-23-DeadAfterLive.ll
2009-03-17-MRE-Invoke.ll
2010-04-30-DbgInfo.ll Debug Info: add an identifier field to DICompositeType. 2013-08-26 22:39:55 +00:00
2013-05-17-VarargsAndBlockAddress.ll Fix DeleteDeadVarargs not to crash on functions referenced by BlockAddresses 2013-06-13 19:51:17 +00:00
basictest.ll
canon.ll
dbginfo.ll Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
dead_vaargs.ll
deadexternal.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
deadretval2.ll
deadretval.ll
keepalive.ll Catch more CHECK that can be converted to CHECK-LABEL in Transforms for easier debugging. No functionality change. 2013-07-14 01:50:49 +00:00
linkage.ll Fix a bug in Dead Argument Elimination. 2013-10-09 17:21:44 +00:00
multdeadretval.ll
returned.ll Start using CHECK-LABEL in some tests. 2013-07-12 14:54:12 +00:00
variadic_safety.ll Make DeadArgumentElimination more conservative on variadic functions 2013-06-09 02:17:27 +00:00