[llvm] r369294 - Re-apply fixed "[Attributor] Fix: Make sure we set the changed flag"

Johannes Doerfert via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 19 12:14:10 PDT 2019


Author: jdoerfert
Date: Mon Aug 19 12:14:10 2019
New Revision: 369294

URL: http://llvm.org/viewvc/llvm-project?rev=369294&view=rev
Log:
Re-apply fixed "[Attributor] Fix: Make sure we set the changed flag"

This reverts commit cedd0d9a6e4b433e1cd6585d1d4d152eb5e60b11.

Re-apply the original commit but make sure the variables are initialized
(even if they are not used) so UBSan is not complaining.

Modified:
    llvm/trunk/lib/Transforms/IPO/Attributor.cpp

Modified: llvm/trunk/lib/Transforms/IPO/Attributor.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Attributor.cpp?rev=369294&r1=369293&r2=369294&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/Attributor.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/Attributor.cpp Mon Aug 19 12:14:10 2019
@@ -878,7 +878,7 @@ ChangeStatus AAReturnedValuesImpl::updat
     // The map in which we collect return values -> return instrs.
     decltype(ReturnedValues) &RetValsMap;
     // The flag to indicate a change.
-    bool Changed;
+    bool &Changed;
     // The return instrs we come from.
     SmallPtrSet<ReturnInst *, 2> RetInsts;
   };
@@ -906,9 +906,8 @@ ChangeStatus AAReturnedValuesImpl::updat
   // Callback for all "return intructions" live in the associated function.
   auto CheckReturnInst = [this, &VisitReturnedValue, &Changed](Instruction &I) {
     ReturnInst &Ret = cast<ReturnInst>(I);
-    RVState RVS({ReturnedValues, false, {}});
+    RVState RVS({ReturnedValues, Changed, {}});
     RVS.RetInsts.insert(&Ret);
-    Changed |= RVS.Changed;
     return VisitReturnedValue(*Ret.getReturnValue(), RVS);
   };
 
@@ -955,7 +954,8 @@ ChangeStatus AAReturnedValuesImpl::updat
       if (Argument *Arg = dyn_cast<Argument>(RetVal)) {
         // Arguments are mapped to call site operands and we begin the traversal
         // again.
-        RVState RVS({NewRVsMap, false, RetValAAIt.second});
+        bool Unused = false;
+        RVState RVS({NewRVsMap, Unused, RetValAAIt.second});
         VisitReturnedValue(*CB->getArgOperand(Arg->getArgNo()), RVS);
         continue;
       } else if (isa<CallBase>(RetVal)) {




More information about the llvm-commits mailing list