[llvm] a99a982 - [LV] Add test coverage for remark for unprofitable RT checks.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 13 14:44:36 PST 2025


Author: Florian Hahn
Date: 2025-12-13T22:44:09Z
New Revision: a99a9824400ef39bad4ba496bf06558cba9676ff

URL: https://github.com/llvm/llvm-project/commit/a99a9824400ef39bad4ba496bf06558cba9676ff
DIFF: https://github.com/llvm/llvm-project/commit/a99a9824400ef39bad4ba496bf06558cba9676ff.diff

LOG: [LV] Add test coverage for remark for unprofitable RT checks.

Add test coverage for remark when runtime checks are not profitable with
threshold provided.

Also make sure that X86 remark tests actually passes an X86 triple,
which is needed for the threshold remark.

Also clean up the tests a bit.

Added: 
    

Modified: 
    llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
    llvm/test/Transforms/LoopVectorize/memory-dep-remarks.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll b/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
index 5ec093c5af6ba..7c899922c97e2 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
@@ -1,5 +1,5 @@
-; RUN: opt < %s -passes=loop-vectorize,transform-warning -S -pass-remarks-missed='loop-vectorize' -pass-remarks-analysis='loop-vectorize'  2>&1 | FileCheck %s
-; RUN: opt < %s -passes=loop-vectorize,transform-warning -o /dev/null -pass-remarks-output=%t.yaml
+; RUN: opt < %s -passes=loop-vectorize,transform-warning -S -pass-remarks-missed='loop-vectorize' -pass-remarks-analysis='loop-vectorize' -vectorize-memory-check-threshold=1 -mtriple=x86_64-apple-macosx 2>&1 | FileCheck %s
+; RUN: opt < %s -passes=loop-vectorize,transform-warning -o /dev/null -pass-remarks-output=%t.yaml -vectorize-memory-check-threshold=1 -mtriple=x86_64-apple-macosx
 ; RUN: cat %t.yaml | FileCheck -check-prefix=YAML %s
 
 ; C/C++ code for tests
@@ -44,6 +44,8 @@
 ; CHECK: remark: source.cpp:29:7: loop not vectorized: Control flow cannot be substituted for a select
 ; CHECK: remark: source.cpp:27:3: loop not vectorized
 
+; CHECK: loop not vectorized: cannot prove it is safe to reorder memory operations
+
 ; YAML:       --- !Analysis
 ; YAML-NEXT: Pass:            loop-vectorize
 ; YAML-NEXT: Name:            UnsupportedUncountableLoop
@@ -168,6 +170,13 @@
 ; YAML-NEXT: Args:
 ; YAML-NEXT:   - String:          loop not vectorized
 ; YAML-NEXT: ...
+; YAML-NEXT: --- !AnalysisAliasing
+; YAML-NEXT: Pass:            loop-vectorize
+; YAML-NEXT: Name:            CantReorderMemOps
+; YAML-NEXT: Function:        test_runtime_checks_threshold
+; YAML-NEXT: Args:
+; YAML-NEXT:   - String:          'loop not vectorized: cannot prove it is safe to reorder memory operations'
+; YAML-NEXT: ...
 
 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 
@@ -175,22 +184,22 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 define void @_Z4testPii(ptr nocapture %A, i32 %Length) #0 !dbg !4 {
 entry:
   %cmp10 = icmp sgt i32 %Length, 0, !dbg !12
-  br i1 %cmp10, label %for.body, label %for.end, !dbg !12, !llvm.loop !14
+  br i1 %cmp10, label %loop, label %exit, !dbg !12, !llvm.loop !14
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ]
-  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !16
-  %0 = trunc i64 %indvars.iv to i32, !dbg !16
+loop:                                         ; preds = %entry, %loop
+  %iv = phi i64 [ %iv.next, %loop ], [ 0, %entry ]
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !16
+  %0 = trunc i64 %iv to i32, !dbg !16
   %ld = load i32, ptr %arrayidx, align 4
   store i32 %0, ptr %arrayidx, align 4, !dbg !16, !tbaa !18
   %cmp3 = icmp sle i32 %ld, %Length, !dbg !22
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1, !dbg !12
-  %1 = trunc i64 %indvars.iv.next to i32
+  %iv.next = add nuw nsw i64 %iv, 1, !dbg !12
+  %1 = trunc i64 %iv.next to i32
   %cmp = icmp slt i32 %1, %Length, !dbg !12
   %or.cond = and i1 %cmp3, %cmp, !dbg !22
-  br i1 %or.cond, label %for.body, label %for.end, !dbg !22
+  br i1 %or.cond, label %loop, label %exit, !dbg !22
 
-for.end:                                          ; preds = %for.body, %entry
+exit:                                          ; preds = %loop, %entry
   ret void, !dbg !24
 }
 
@@ -202,19 +211,19 @@ for.end:                                          ; preds = %for.body, %entry
 define void @_Z13test_disabledPii(ptr nocapture %A, i32 %Length) #0 !dbg !7 {
 entry:
   %cmp4 = icmp sgt i32 %Length, 0, !dbg !25
-  br i1 %cmp4, label %for.body, label %for.end, !dbg !25, !llvm.loop !27
+  br i1 %cmp4, label %loop, label %exit, !dbg !25, !llvm.loop !27
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ]
-  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !30
-  %0 = trunc i64 %indvars.iv to i32, !dbg !30
+loop:                                         ; preds = %entry, %loop
+  %iv = phi i64 [ %iv.next, %loop ], [ 0, %entry ]
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !30
+  %0 = trunc i64 %iv to i32, !dbg !30
   store i32 %0, ptr %arrayidx, align 4, !dbg !30, !tbaa !18
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1, !dbg !25
-  %lftr.wideiv = trunc i64 %indvars.iv.next to i32, !dbg !25
+  %iv.next = add nuw nsw i64 %iv, 1, !dbg !25
+  %lftr.wideiv = trunc i64 %iv.next to i32, !dbg !25
   %exitcond = icmp eq i32 %lftr.wideiv, %Length, !dbg !25
-  br i1 %exitcond, label %for.end, label %for.body, !dbg !25, !llvm.loop !27
+  br i1 %exitcond, label %exit, label %loop, !dbg !25, !llvm.loop !27
 
-for.end:                                          ; preds = %for.body, %entry
+exit:                                          ; preds = %loop, %entry
   ret void, !dbg !31
 }
 
@@ -226,29 +235,26 @@ for.end:                                          ; preds = %for.body, %entry
 define void @_Z17test_array_boundsPiS_i(ptr nocapture %A, ptr nocapture readonly %B, i32 %Length) #0 !dbg !8 {
 entry:
   %cmp9 = icmp sgt i32 %Length, 0, !dbg !32
-  br i1 %cmp9, label %for.body.preheader, label %for.end, !dbg !32, !llvm.loop !34
+  br i1 %cmp9, label %loop.preheader, label %exit, !dbg !32, !llvm.loop !34
 
-for.body.preheader:                               ; preds = %entry
-  br label %for.body, !dbg !32
+loop.preheader:                               ; preds = %entry
+  br label %loop, !dbg !32
 
-for.body:                                         ; preds = %for.body.preheader, %for.body
-  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %for.body.preheader ]
-  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %indvars.iv, !dbg !35
+loop:                                         ; preds = %loop.preheader, %loop
+  %iv = phi i64 [ %iv.next, %loop ], [ 0, %loop.preheader ]
+  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %iv, !dbg !35
   %0 = load i32, ptr %arrayidx, align 4, !dbg !35, !tbaa !18
   %idxprom1 = sext i32 %0 to i64, !dbg !35
   %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %idxprom1, !dbg !35
   %1 = load i32, ptr %arrayidx2, align 4, !dbg !35, !tbaa !18
-  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !35
+  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !35
   store i32 %1, ptr %arrayidx4, align 4, !dbg !35, !tbaa !18
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1, !dbg !32
-  %lftr.wideiv = trunc i64 %indvars.iv.next to i32, !dbg !32
+  %iv.next = add nuw nsw i64 %iv, 1, !dbg !32
+  %lftr.wideiv = trunc i64 %iv.next to i32, !dbg !32
   %exitcond = icmp eq i32 %lftr.wideiv, %Length, !dbg !32
-  br i1 %exitcond, label %for.end.loopexit, label %for.body, !dbg !32, !llvm.loop !34
-
-for.end.loopexit:                                 ; preds = %for.body
-  br label %for.end
+  br i1 %exitcond, label %exit, label %loop, !dbg !32, !llvm.loop !34
 
-for.end:                                          ; preds = %for.end.loopexit, %entry
+exit:
   ret void, !dbg !36
 }
 
@@ -259,9 +265,9 @@ for.end:                                          ; preds = %for.end.loopexit, %
 ; Function Attrs: nounwind uwtable
 define i32 @test_multiple_failures(ptr nocapture readonly %A) #0 !dbg !46 {
 entry:
-  br label %for.body, !dbg !38
+  br label %loop, !dbg !38
 
-for.body:                                         ; preds = %entry, %for.inc
+loop:                                         ; preds = %entry, %for.inc
   %i.09 = phi i32 [ 0, %entry ], [ %add, %for.inc ]
   %k.09 = phi i32 [ 0, %entry ], [ %k.1, %for.inc ]
   %arrayidx = getelementptr inbounds i32, ptr %A, i32 %i.09, !dbg !40
@@ -269,22 +275,42 @@ for.body:                                         ; preds = %entry, %for.inc
   %tobool = icmp eq i32 %0, 0, !dbg !40
   br i1 %tobool, label %for.inc, label %if.then, !dbg !40
 
-if.then:                                          ; preds = %for.body
+if.then:                                          ; preds = %loop
   %call = tail call i32 (...) @foo(), !dbg !41
   %.pre = load i32, ptr %arrayidx, align 4
   br label %for.inc, !dbg !42
 
-for.inc:                                          ; preds = %for.body, %if.then
-  %1 = phi i32 [ %.pre, %if.then ], [ 0, %for.body ], !dbg !43
-  %k.1 = phi i32 [ %call, %if.then ], [ %k.09, %for.body ]
+for.inc:                                          ; preds = %loop, %if.then
+  %1 = phi i32 [ %.pre, %if.then ], [ 0, %loop ], !dbg !43
+  %k.1 = phi i32 [ %call, %if.then ], [ %k.09, %loop ]
   %add = add nsw i32 %1, %i.09, !dbg !44
   %cmp = icmp slt i32 %add, 1000, !dbg !45
-  br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !38
+  br i1 %cmp, label %loop, label %exit, !dbg !38
 
-for.cond.cleanup:                                 ; preds = %for.inc
+exit:                                 ; preds = %for.inc
   ret i32 %k.1, !dbg !39
 }
 
+define void @test_runtime_checks_threshold(i64 %n, ptr %A, ptr %B, ptr %C) {
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
+  %gep.B = getelementptr inbounds i32, ptr %B, i64 %iv
+  %0 = load i32, ptr %gep.B, align 4
+  %add = add nsw i32 %0, 1
+  %gep.A = getelementptr inbounds i32, ptr %A, i64 %iv
+  store i32 %add, ptr %gep.A, align 4
+  store i32 %add, ptr %C, align 4
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop
+
+exit:
+  ret void
+}
+
 declare i32 @foo(...)
 
 ; CHECK: test_multiple_failure

diff  --git a/llvm/test/Transforms/LoopVectorize/memory-dep-remarks.ll b/llvm/test/Transforms/LoopVectorize/memory-dep-remarks.ll
index d96d85512621c..bf077f4f52823 100644
--- a/llvm/test/Transforms/LoopVectorize/memory-dep-remarks.ll
+++ b/llvm/test/Transforms/LoopVectorize/memory-dep-remarks.ll
@@ -1,5 +1,5 @@
 ; RUN: opt -passes='function(loop-vectorize,require<access-info>)' -disable-output -pass-remarks-analysis=loop-vectorize < %s 2>&1 | FileCheck %s
-; RUN: opt < %s -passes='function(require<access-info>,loop-vectorize)' -o /dev/null -pass-remarks-output=%t.yaml
+; RUN: opt < %s -passes='function(require<access-info>,loop-vectorize)' -disable-output -pass-remarks-output=%t.yaml
 ; RUN: cat %t.yaml | FileCheck -check-prefix=YAML %s
 
 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
@@ -17,23 +17,23 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
 define void @test_unknown_bounds(i64 %n, ptr nocapture %A, ptr nocapture readonly %B) !dbg !13 {
 entry:
   %cmp10 = icmp sgt i64 %n, 0
-  br i1 %cmp10, label %for.body, label %for.cond.cleanup
+  br i1 %cmp10, label %loop, label %exit
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
-  %0 = load i32, ptr %arrayidx, align 4
+loop:
+  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
+  %gep.B = getelementptr inbounds i32, ptr %B, i64 %iv
+  %0 = load i32, ptr %gep.B, align 4
   %idxprom1 = sext i32 %0 to i64, !dbg !35
   %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %idxprom1, !dbg !35
   %1 = load i32, ptr %arrayidx2, align 4, !dbg !35
   %add = add nsw i32 %1, 1
-  %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv
-  store i32 %add, ptr %arrayidx4, align 4
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body, !dbg !28
+  %gep.A = getelementptr inbounds i32, ptr %A, i64 %iv
+  store i32 %add, ptr %gep.A, align 4
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop, !dbg !28
 
-for.cond.cleanup:                                 ; preds = %for.body, %entry
+exit:
   ret void
 }
 
@@ -50,24 +50,24 @@ for.cond.cleanup:                                 ; preds = %for.body, %entry
 define void @test_nodep(i64 %n, ptr nocapture readonly %A, ptr nocapture %B) !dbg !44 {
 entry:
   %cmp12 = icmp sgt i64 %n, 1
-  br i1 %cmp12, label %for.body, label %for.cond.cleanup
+  br i1 %cmp12, label %loop, label %exit
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 1, %entry ], [ %indvars.iv.next, %for.body ]
-  %0 = add nsw i64 %indvars.iv, -1
+loop:
+  %iv = phi i64 [ 1, %entry ], [ %iv.next, %loop ]
+  %0 = add nsw i64 %iv, -1
   %arrayidx = getelementptr inbounds i32, ptr %A, i64 %0, !dbg !61
   %1 = load i32, ptr %arrayidx, align 4, !dbg !61
-  %2 = add nuw nsw i64 %indvars.iv, 2
+  %2 = add nuw nsw i64 %iv, 2
   %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %2, !dbg !63
   %3 = load i32, ptr %arrayidx2, align 4, !dbg !63
   %add3 = add nsw i32 %3, %1
-  %arrayidx5 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
+  %arrayidx5 = getelementptr inbounds i32, ptr %B, i64 %iv
   store i32 %add3, ptr %arrayidx5, align 4
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop
 
-for.cond.cleanup:                                 ; preds = %for.body, %entry
+exit:
   ret void
 }
 
@@ -86,22 +86,22 @@ for.cond.cleanup:                                 ; preds = %for.body, %entry
 define dso_local void @test_forward(i64 %n, ptr nocapture %A, ptr nocapture %B) !dbg !70 {
 entry:
   %cmp11 = icmp sgt i64 %n, 1
-  br i1 %cmp11, label %for.body, label %for.cond.cleanup, !dbg !81
+  br i1 %cmp11, label %loop, label %exit, !dbg !81
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 1, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !83
+loop:
+  %iv = phi i64 [ 1, %entry ], [ %iv.next, %loop ]
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !83
   store i32 10, ptr %arrayidx, align 4
-  %0 = add nsw i64 %indvars.iv, -2
+  %0 = add nsw i64 %iv, -2
   %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %0, !dbg !87
   %1 = load i32, ptr %arrayidx2, align 4, !dbg !87
-  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv, !dbg !88
-  store i32 %1, ptr %arrayidx4, align 4, !dbg !89
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body, !dbg !81
+  %gep.B = getelementptr inbounds i32, ptr %B, i64 %iv, !dbg !88
+  store i32 %1, ptr %gep.B, align 4, !dbg !89
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop, !dbg !81
 
-  for.cond.cleanup:                                 ; preds = %for.body, %entry
+  exit:
     ret void
 }
 
@@ -121,21 +121,21 @@ for.body:                                         ; preds = %entry, %for.body
 define dso_local void @test_backwardVectorizable(i64 %n, ptr nocapture %A) !dbg !93 {
 entry:
   %cmp8 = icmp sgt i64 %n, 4
-  br i1 %cmp8, label %for.body, label %for.cond.cleanup
+  br i1 %cmp8, label %loop, label %exit
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 4, %entry ], [ %indvars.iv.next, %for.body ]
-  %0 = add nsw i64 %indvars.iv, -4, !dbg !106
+loop:
+  %iv = phi i64 [ 4, %entry ], [ %iv.next, %loop ]
+  %0 = add nsw i64 %iv, -4, !dbg !106
   %arrayidx = getelementptr inbounds i32, ptr %A, i64 %0, !dbg !108
   %1 = load i32, ptr %arrayidx, align 4, !dbg !108
   %add = add nsw i32 %1, 1
-  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !110
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !110
   store i32 %add, ptr %arrayidx2, align 4, !dbg !111
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop
 
-  for.cond.cleanup:                                 ; preds = %for.body, %entry
+  exit:
     ret void
 }
 
@@ -155,29 +155,29 @@ for.body:                                         ; preds = %entry, %for.body
 define void @test_backward_dep(i64 %n, ptr nocapture %A) {
 entry:
   %cmp.not19 = icmp slt i64 %n, 4
-  br i1 %cmp.not19, label %for.cond.cleanup, label %for.body.preheader
+  br i1 %cmp.not19, label %exit, label %loop.preheader
 
-for.body.preheader:                               ; preds = %entry
+loop.preheader:                               ; preds = %entry
   %sub = add nsw i64 %n, -3
-  br label %for.body
+  br label %loop
 
-for.body:                                         ; preds = %for.body.preheader, %for.body
-  %indvars.iv = phi i64 [ 1, %for.body.preheader ], [ %indvars.iv.next, %for.body ]
-  %0 = add nsw i64 %indvars.iv, -1
+loop:                                         ; preds = %loop.preheader, %loop
+  %iv = phi i64 [ 1, %loop.preheader ], [ %iv.next, %loop ]
+  %0 = add nsw i64 %iv, -1
   %arrayidx = getelementptr inbounds i32, ptr %A, i64 %0
   %1 = load i32, ptr %arrayidx, align 8
-  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !157
+  %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !157
   store i32 %1, ptr %arrayidx3, align 8
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 3
-  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv.next, !dbg !160
+  %iv.next = add nuw nsw i64 %iv, 3
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %iv.next, !dbg !160
   %2 = load i32, ptr %arrayidx5, align 8, !dbg !160
-  %3 = add nuw nsw i64 %indvars.iv, 1
+  %3 = add nuw nsw i64 %iv, 1
   %arrayidx8 = getelementptr inbounds i32, ptr %A, i64 %3
   store i32 %2, ptr %arrayidx8, align 8
-  %cmp.not = icmp ugt i64 %indvars.iv.next, %n
-  br i1 %cmp.not, label %for.cond.cleanup, label %for.body
+  %cmp.not = icmp ugt i64 %iv.next, %n
+  br i1 %cmp.not, label %exit, label %loop
 
-  for.cond.cleanup:                                 ; preds = %for.body, %entry
+  exit:
     ret void
 }
 
@@ -200,22 +200,22 @@ for.body:                                         ; preds = %for.body.preheader,
 define void @test_forwardButPreventsForwarding_dep(i64 %n, ptr nocapture %A, ptr nocapture %B) !dbg !166 {
 entry:
   %cmp11 = icmp sgt i64 %n, 3
-  br i1 %cmp11, label %for.body, label %for.cond.cleanup
+  br i1 %cmp11, label %loop, label %exit
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 3, %entry ], [ %indvars.iv.next, %for.body ]
-  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !179
+loop:
+  %iv = phi i64 [ 3, %entry ], [ %iv.next, %loop ]
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !179
   store i32 10, ptr %arrayidx, align 4
-  %0 = add nsw i64 %indvars.iv, -3
+  %0 = add nsw i64 %iv, -3
   %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %0, !dbg !183
   %1 = load i32, ptr %arrayidx2, align 4, !dbg !183
-  %arrayidx4 = getelementptr inbounds i32, ptr %B, i64 %indvars.iv
-  store i32 %1, ptr %arrayidx4, align 4
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
+  %gep.B = getelementptr inbounds i32, ptr %B, i64 %iv
+  store i32 %1, ptr %gep.B, align 4
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop
 
-  for.cond.cleanup:                                 ; preds = %for.body, %entry
+  exit:
     ret void
 }
 
@@ -238,24 +238,24 @@ for.body:                                         ; preds = %entry, %for.body
 define void @test_backwardVectorizableButPreventsForwarding(i64 %n, ptr nocapture %A) !dbg !189 {
 entry:
   %cmp13 = icmp sgt i64 %n, 15
-  br i1 %cmp13, label %for.body, label %for.cond.cleanup
+  br i1 %cmp13, label %loop, label %exit
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 15, %entry ], [ %indvars.iv.next, %for.body ]
-  %0 = add nsw i64 %indvars.iv, -2
+loop:
+  %iv = phi i64 [ 15, %entry ], [ %iv.next, %loop ]
+  %0 = add nsw i64 %iv, -2
   %arrayidx = getelementptr inbounds i32, ptr %A, i64 %0
   %1 = load i32, ptr %arrayidx, align 4
-  %2 = add nsw i64 %indvars.iv, -15
+  %2 = add nsw i64 %iv, -15
   %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %2, !dbg !207
   %3 = load i32, ptr %arrayidx3, align 4
   %add = add nsw i32 %3, %1
-  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !209
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !209
   store i32 %add, ptr %arrayidx5, align 4, !dbg !209
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
+  %iv.next = add nuw nsw i64 %iv, 1
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop
 
-  for.cond.cleanup:                                 ; preds = %for.body, %entry
+  exit:
     ret void
 }
 
@@ -274,20 +274,20 @@ for.body:                                         ; preds = %entry, %for.body
 define void @test_unknown_dep(i64 %n, ptr nocapture %A) !dbg !214 {
 entry:
   %cmp8 = icmp sgt i64 %n, 0
-  br i1 %cmp8, label %for.body, label %for.cond.cleanup
+  br i1 %cmp8, label %loop, label %exit
 
-for.body:                                         ; preds = %entry, %for.body
-  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
-  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
-  %0 = shl nsw i64 %indvars.iv.next, 2
+loop:
+  %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
+  %iv.next = add nuw nsw i64 %iv, 1
+  %0 = shl nsw i64 %iv.next, 2
   %arrayidx = getelementptr inbounds i32, ptr %A, i64 %0, !dbg !229
   store i32 10, ptr %arrayidx, align 4
-  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %indvars.iv, !dbg !231
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %iv, !dbg !231
   store i32 100, ptr %arrayidx2, align 4, !dbg !231
-  %exitcond.not = icmp eq i64 %indvars.iv.next, %n
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
+  %ec = icmp eq i64 %iv.next, %n
+  br i1 %ec, label %exit, label %loop
 
-  for.cond.cleanup:                                 ; preds = %for.body, %entry
+  exit:
     ret void
 }
 


        


More information about the llvm-commits mailing list