<div dir="ltr">FYI: reverted in r369241.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 19, 2019 at 12:58 AM David Jones <<a href="mailto:dlj@google.com">dlj@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">It looks like this revision breaks some tests under UBSAN.<div><br></div><div>Example failure:</div><div>llvm/test/Transforms/FunctionAttrs/arg_returned.ll</div><div><br></div><div><br></div><div>[...]/llvm/lib/Transforms/IPO/Attributor.cpp:891:17: runtime error: load of value 64, which is not a valid value for type 'bool'<br>    #0 [...] in AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::$_9::operator()(llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, bool) const [...]/llvm/lib/Transforms/IPO/Attributor.cpp:891:17<br>    #1 [...] in void llvm::function_ref<void (llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, bool)>::callback_fn<AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::$_9>(long, llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, bool) [...]/llvm/include/llvm/ADT/STLExtras.h:125:12<br>    #2 [...] in llvm::function_ref<void (llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, bool)>::operator()(llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, bool) const [...]/llvm/include/llvm/ADT/STLExtras.h:142:12<br>    #3 [...] in bool genericValueTraversal<llvm::AAReturnedValues, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState>(llvm::Attributor&, llvm::IRPosition, llvm::AAReturnedValues const&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, llvm::function_ref<void (llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&, bool)> const&, int) [...]/llvm/lib/Transforms/IPO/Attributor.cpp:207:5<br>    #4 [...] in AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::$_2::operator()(llvm::Value&, AAReturnedValuesImpl::updateImpl(llvm::Attributor&)::RVState&) const [...]/llvm/lib/Transforms/IPO/Attributor.cpp:902:12<br>    #5 [...] in AAReturnedValuesImpl::updateImpl(llvm::Attributor&) [...]/llvm/lib/Transforms/IPO/Attributor.cpp:959:9<br>    #6 [...] in llvm::AbstractAttribute::update(llvm::Attributor&) [...]/llvm/lib/Transforms/IPO/Attributor.cpp:264:16<br>    #7 [...] in llvm::Attributor::run() [...]/llvm/lib/Transforms/IPO/Attributor.cpp:2526:17<br>    #8 [...] in runAttributorOnModule(llvm::Module&) [...]/llvm/lib/Transforms/IPO/Attributor.cpp:2864:12<br>    #9 [...] in (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) [...]/llvm/lib/IR/LegacyPassManager.cpp:1750:27<br>    #10 [...] in llvm::legacy::PassManagerImpl::run(llvm::Module&) [...]/llvm/lib/IR/LegacyPassManager.cpp:1863:44<br>    #11 [...] in main [...]/llvm/tools/opt/opt.cpp:892:12<br>    #12 [...] in __libc_start_main (/usr/grte/v4/lib64/libc.so.6+[...])<br>    #13 [...] in _start /usr/grte/v4/debug-src/src/csu/../sysdeps/x86_64/start.S:108<br><br>SUMMARY: UndefinedBehaviorSanitizer: invalid-bool-load [...]/llvm/lib/Transforms/IPO/Attributor.cpp:891:17 in <br>FileCheck error: '-' is empty.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 16, 2019 at 2:53 PM Johannes Doerfert via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: jdoerfert<br>
Date: Fri Aug 16 14:55:01 2019<br>
New Revision: 369159<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=369159&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=369159&view=rev</a><br>
Log:<br>
[Attributor] Fix: Make sure we set the changed flag<br>
<br>
The flag was updated *before* we actually run the visitor callback so we<br>
might miss updates.<br>
<br>
Modified:<br>
    llvm/trunk/lib/Transforms/IPO/Attributor.cpp<br>
<br>
Modified: llvm/trunk/lib/Transforms/IPO/Attributor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Attributor.cpp?rev=369159&r1=369158&r2=369159&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Attributor.cpp?rev=369159&r1=369158&r2=369159&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/IPO/Attributor.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/IPO/Attributor.cpp Fri Aug 16 14:55:01 2019<br>
@@ -878,7 +878,7 @@ ChangeStatus AAReturnedValuesImpl::updat<br>
     // The map in which we collect return values -> return instrs.<br>
     decltype(ReturnedValues) &RetValsMap;<br>
     // The flag to indicate a change.<br>
-    bool Changed;<br>
+    bool &Changed;<br>
     // The return instrs we come from.<br>
     SmallPtrSet<ReturnInst *, 2> RetInsts;<br>
   };<br>
@@ -906,9 +906,8 @@ ChangeStatus AAReturnedValuesImpl::updat<br>
   // Callback for all "return intructions" live in the associated function.<br>
   auto CheckReturnInst = [this, &VisitReturnedValue, &Changed](Instruction &I) {<br>
     ReturnInst &Ret = cast<ReturnInst>(I);<br>
-    RVState RVS({ReturnedValues, false, {}});<br>
+    RVState RVS({ReturnedValues, Changed, {}});<br>
     RVS.RetInsts.insert(&Ret);<br>
-    Changed |= RVS.Changed;<br>
     return VisitReturnedValue(*Ret.getReturnValue(), RVS);<br>
   };<br>
<br>
@@ -955,7 +954,8 @@ ChangeStatus AAReturnedValuesImpl::updat<br>
       if (Argument *Arg = dyn_cast<Argument>(RetVal)) {<br>
         // Arguments are mapped to call site operands and we begin the traversal<br>
         // again.<br>
-        RVState RVS({NewRVsMap, false, RetValAAIt.second});<br>
+        bool Unused;<br>
+        RVState RVS({NewRVsMap, Unused, RetValAAIt.second});<br>
         VisitReturnedValue(*CB->getArgOperand(Arg->getArgNo()), RVS);<br>
         continue;<br>
       } else if (isa<CallBase>(RetVal)) {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>
</blockquote></div>