[llvm] r243141 - Remove the user-count threshold when analyzing read attributes

Jingyue Wu jingyue at google.com
Fri Jul 24 12:05:54 PDT 2015

Author: jingyue
Date: Fri Jul 24 14:05:53 2015
New Revision: 243141

URL: http://llvm.org/viewvc/llvm-project?rev=243141&view=rev
Remove the user-count threshold when analyzing read attributes

This threshold limited FunctionAttrs ability to prove arguments to be read-only. 
In NVPTX, a specialized instruction ld.global.nc can be used to load memory
with non-coherent texture cache. We notice that in SHOC [1] benchmark, some
function arguments are not marked with readonly because FunctionAttrs reaches
a hardcoded threshold when analysis uses.

Removing this threshold won't cause significant regression in compilation time, because the worst-case time complexity of the algorithm is still O(# of instructions) for each parameter.

Patched by Xuetian Weng.  

[1] https://github.com/vetter/shoc

Reviewers: nlewycky, jingyue, nicholas

Subscribers: nicholas, test, llvm-commits

Differential Revision: http://reviews.llvm.org/D11311


Modified: llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp?rev=243141&r1=243140&r2=243141&view=diff
--- llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp Fri Jul 24 14:05:53 2015
@@ -425,9 +425,6 @@ determinePointerReadAttrs(Argument *A,
   // We don't need to track IsWritten. If A is written to, return immediately.
   for (Use &U : A->uses()) {
-    if (Count++ >= 20)
-      return Attribute::None;

More information about the llvm-commits mailing list