[PATCH] D77182: [AddressSanitizer] Fix for wrong argument values appearing in backtraces

Evgenii Stepanov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 1 12:58:25 PDT 2020


eugenis added inline comments.


================
Comment at: llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp:3023
+      InitInsts.push_back(cast<Instruction>(Val));
+    InitInsts.push_back(Store);
+  }
----------------
vsk wrote:
> eugenis wrote:
> > What happens with
> > 
> > ```
> > a = alloca
> > store arg, a
> > load a
> > store arg2, a
> > ```
> > will the second store be moved across the aliasing load?
> > 
> Yes, thanks for catching this.
> 
> I plan to address this by stopping the loop when an unknown instruction is seen. I.e., make it bail out if "I" is not a StoreInst or a CastInst that matches the known argument init cases. Does that sound ok?
> 
> Another more expensive/general option is to use the `isSafeToMoveBefore` utility from CodeMoverUtils (this requires DependenceInfo, DomTree, and PostDomTree).
Sounds fine. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77182/new/

https://reviews.llvm.org/D77182





More information about the llvm-commits mailing list