[PATCH] D12838: [GlobalsAA] Teach GlobalsAA about nocapture
hfinkel@anl.gov via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 23 00:02:52 PDT 2015
hfinkel added inline comments.
================
Comment at: lib/Analysis/GlobalsModRef.cpp:806
@@ +805,3 @@
+ for (auto &A : CS.args())
+ if (GetUnderlyingObject(A, DL) == GV)
+ return ConservativeResult;
----------------
This check does not seem conservative enough. GetUnderlyingObject has a depth limit, and cannot look through PHIs/selects. Since we know that GV is not captured as a precondition of this function (which we should explicitly document), calling GetUnderlyingObjects with no depth limit might be conservatively correct, although I'm afraid of unbounded compile-time in that case, Alternatively, you can call GetUnderlyingObject (or better, GetUnderlyingObjects), but return conservatively if not all returned objects are such that isIdentifiedObject returns true.
Repository:
rL LLVM
http://reviews.llvm.org/D12838
More information about the llvm-commits
mailing list