[llvm-branch-commits] [llvm-branch] r293796 - Merging r293727:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Feb 1 10:42:29 PST 2017


Author: hans
Date: Wed Feb  1 12:42:29 2017
New Revision: 293796

URL: http://llvm.org/viewvc/llvm-project?rev=293796&view=rev
Log:
Merging r293727:
------------------------------------------------------------------------
r293727 | davide | 2017-01-31 17:01:22 -0800 (Tue, 31 Jan 2017) | 3 lines

[IPSCCP] Teach how to not propagate return values of naked functions.

Differential Revision:  https://reviews.llvm.org/D29360
------------------------------------------------------------------------

Added:
    llvm/branches/release_40/test/Transforms/IPConstantProp/naked-return.ll
      - copied unchanged from r293727, llvm/trunk/test/Transforms/IPConstantProp/naked-return.ll
Modified:
    llvm/branches/release_40/   (props changed)
    llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp

Propchange: llvm/branches/release_40/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb  1 12:42:29 2017
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629,293658
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292117,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293230,293259,293291,293293,293417,293522,293629,293658,293727

Modified: llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp?rev=293796&r1=293795&r2=293796&view=diff
==============================================================================
--- llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp (original)
+++ llvm/branches/release_40/lib/Transforms/Scalar/SCCP.cpp Wed Feb  1 12:42:29 2017
@@ -1705,7 +1705,10 @@ static bool runIPSCCP(Module &M, const D
 
     // If this is an exact definition of this function, then we can propagate
     // information about its result into callsites of it.
-    if (F.hasExactDefinition())
+    // Don't touch naked functions. They may contain asm returning a
+    // value we don't see, so we may end up interprocedurally propagating
+    // the return value incorrectly.
+    if (F.hasExactDefinition() && !F.hasFnAttribute(Attribute::Naked))
       Solver.AddTrackedFunction(&F);
 
     // If this function only has direct calls that we can see, we can track its




More information about the llvm-branch-commits mailing list