[PATCH] Do not add unroll disable metadata after unrolling pass for loops with #pragma clang loop unroll(full)

Jingyue Wu jingyue at google.com
Wed Jul 23 12:01:12 PDT 2014

LGTM with some minor comments. Thanks!

Comment at: lib/Transforms/Scalar/LoopUnrollPass.cpp:460
@@ -459,4 +459,3 @@
   if (HasPragma) {
-    // Mark loop as unrolled to prevent unrolling beyond that
-    // requested by the pragma.
-    SetLoopAlreadyUnrolled(L);
+    if (PragmaCount)
+      // If loop has an unroll count pragma mark loop as unrolled to prevent
I'd say PragmaCount != 0 because it's an integer. 

Comment at: test/Transforms/LoopUnroll/unroll-pragmas-disabled.ll:41
@@ -42,1 +40,3 @@
+; An unroll disable metadata node is only added for the unroll count case.
+; In this case, metadata should not change.
To be clear, can we explain why this loop cannot be unrolled? 

Comment at: test/Transforms/LoopUnroll/unroll-pragmas-disabled.ll:56
@@ -55,1 +55,3 @@
   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
+  %exitcond = icmp eq i64 %indvars.iv.next, 1000000
+  br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !5
Would it be better if we make the trip count a variable, so that the loop can't be unrolled regardless of the threshold? I think that would make the test more resilience.


More information about the llvm-commits mailing list