Skip to content

Conversation

@alexey-bataev
Copy link
Member

@alexey-bataev alexey-bataev commented Apr 22, 2025

No description provided.

Created using spr 1.3.5
@llvmbot llvmbot added the llvm:analysis Includes value tracking, cost tables and constant folding label Apr 22, 2025
@llvmbot
Copy link
Member

llvmbot commented Apr 22, 2025

@llvm/pr-subscribers-llvm-analysis

Author: Alexey Bataev (alexey-bataev)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/136710.diff

1 Files Affected:

  • (added) llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll (+260)
diff --git a/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll b/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
new file mode 100644
index 0000000000000..7d1a801cd87fe
--- /dev/null
+++ b/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
@@ -0,0 +1,260 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
+; RUN: opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < %s 2>&1 | FileCheck %s
+; RUN: opt -passes='print<access-info>' -disable-output -mtriple=x86_64 < %s 2>&1 | FileCheck %s
+
+; REQUIRES: riscv-registered-target, x86-registered-target
+
+; Dependence distance between read and write is greater than the trip
+; count of the loop.  Thus, values written are never read for any
+; valid vectorization of the loop.
+define void @test(ptr %p) {
+; CHECK-LABEL: 'test'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [0, %entry], [%iv.next, %loop]
+  %a1 = getelementptr i64, ptr %p, i64 %iv
+  %v = load i64, ptr %a1, align 8
+  %offset = add i64 %iv, 200
+  %a2 = getelementptr i64, ptr %p, i64 %offset
+  store i64 %v, ptr %a2, align 8
+  %iv.next = add i64 %iv, 1
+  %cmp = icmp ne i64 %iv, 199
+  br i1 %cmp, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+; Dependence distance is less than trip count, thus we must prove that
+; chosen VF guaranteed to be less than dependence distance.
+define void @test_may_clobber1(ptr %p) {
+; CHECK-LABEL: 'test_may_clobber1'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe with a maximum safe vector width of 6400 bits, with a maximum safe store-load forward width of 256 bits
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        BackwardVectorizable:
+; CHECK-NEXT:            %v = load i64, ptr %a1, align 32 ->
+; CHECK-NEXT:            store i64 %v, ptr %a2, align 32
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [0, %entry], [%iv.next, %loop]
+  %a1 = getelementptr i64, ptr %p, i64 %iv
+  %v = load i64, ptr %a1, align 32
+  %offset = add i64 %iv, 100
+  %a2 = getelementptr i64, ptr %p, i64 %offset
+  store i64 %v, ptr %a2, align 32
+  %iv.next = add i64 %iv, 1
+  %cmp = icmp ne i64 %iv, 199
+  br i1 %cmp, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+define void @test_may_clobber2(ptr %p) {
+; CHECK-LABEL: 'test_may_clobber2'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
+; CHECK-NEXT:  Backward loop carried data dependence that prevents store-to-load forwarding.
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        BackwardVectorizableButPreventsForwarding:
+; CHECK-NEXT:            %v = load i64, ptr %a1, align 32 ->
+; CHECK-NEXT:            store i64 %v, ptr %a2, align 32
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [0, %entry], [%iv.next, %loop]
+  %a1 = getelementptr i64, ptr %p, i64 %iv
+  %v = load i64, ptr %a1, align 32
+  %offset = add i64 %iv, 9
+  %a2 = getelementptr i64, ptr %p, i64 %offset
+  store i64 %v, ptr %a2, align 32
+  %iv.next = add i64 %iv, 1
+  %cmp = icmp ne i64 %iv, 199
+  br i1 %cmp, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+define void @test_may_clobber3(ptr %p) {
+; CHECK-LABEL: 'test_may_clobber3'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe with a maximum safe vector width of 640 bits, with a maximum safe store-load forward width of 128 bits
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        BackwardVectorizable:
+; CHECK-NEXT:            %v = load i64, ptr %a1, align 32 ->
+; CHECK-NEXT:            store i64 %v, ptr %a2, align 32
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [0, %entry], [%iv.next, %loop]
+  %a1 = getelementptr i64, ptr %p, i64 %iv
+  %v = load i64, ptr %a1, align 32
+  %offset = add i64 %iv, 10
+  %a2 = getelementptr i64, ptr %p, i64 %offset
+  store i64 %v, ptr %a2, align 32
+  %iv.next = add i64 %iv, 1
+  %cmp = icmp ne i64 %iv, 199
+  br i1 %cmp, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+; Trvially no overlap due to maximum possible value of VLEN and LMUL
+define void @trivial_due_max_vscale(ptr %p) {
+; CHECK-LABEL: 'trivial_due_max_vscale'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [0, %entry], [%iv.next, %loop]
+  %a1 = getelementptr i64, ptr %p, i64 %iv
+  %v = load i64, ptr %a1, align 32
+  %offset = add i64 %iv, 8192
+  %a2 = getelementptr i64, ptr %p, i64 %offset
+  store i64 %v, ptr %a2, align 32
+  %iv.next = add i64 %iv, 1
+  %cmp = icmp ne i64 %iv, 199
+  br i1 %cmp, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+; Dependence distance could be violated via LMUL>=2 or interleaving
+define void @no_high_lmul_or_interleave(ptr %p) {
+; CHECK-LABEL: 'no_high_lmul_or_interleave'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe with a maximum safe vector width of 65536 bits
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        BackwardVectorizable:
+; CHECK-NEXT:            %v = load i64, ptr %a1, align 32 ->
+; CHECK-NEXT:            store i64 %v, ptr %a2, align 32
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i64 [0, %entry], [%iv.next, %loop]
+  %a1 = getelementptr i64, ptr %p, i64 %iv
+  %v = load i64, ptr %a1, align 32
+  %offset = add i64 %iv, 1024
+  %a2 = getelementptr i64, ptr %p, i64 %offset
+  store i64 %v, ptr %a2, align 32
+  %iv.next = add i64 %iv, 1
+  %cmp = icmp ne i64 %iv, 3001
+  br i1 %cmp, label %loop, label %exit
+
+exit:
+  ret void
+}
+
+define void @non-power-2-storeloadforward(ptr %A) {
+; CHECK-LABEL: 'non-power-2-storeloadforward'
+; CHECK-NEXT:    for.body:
+; CHECK-NEXT:      Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop
+; CHECK-NEXT:  Backward loop carried data dependence that prevents store-to-load forwarding.
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        Forward:
+; CHECK-NEXT:            %3 = load i32, ptr %arrayidx2, align 4 ->
+; CHECK-NEXT:            store i32 %add3, ptr %arrayidx5, align 4
+; CHECK-EMPTY:
+; CHECK-NEXT:        BackwardVectorizableButPreventsForwarding:
+; CHECK-NEXT:            %1 = load i32, ptr %arrayidx, align 4 ->
+; CHECK-NEXT:            store i32 %add3, ptr %arrayidx5, align 4
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %for.body
+
+for.body:
+  %iv = phi i64 [ 16, %entry ], [ %iv.next, %for.body ]
+  %0 = add nsw i64 %iv, -3
+  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %0
+  %1 = load i32, ptr %arrayidx, align 4
+  %2 = add nsw i64 %iv, 4
+  %arrayidx2 = getelementptr inbounds i32, ptr %A, i64 %2
+  %3 = load i32, ptr %arrayidx2, align 4
+  %add3 = add nsw i32 %3, %1
+  %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %iv
+  store i32 %add3, ptr %arrayidx5, align 4
+  %iv.next = add i64 %iv, 1
+  %lftr.wideiv = trunc i64 %iv.next to i32
+  %exitcond = icmp ne i32 %lftr.wideiv, 128
+  br i1 %exitcond, label %for.body, label %for.end
+
+for.end:
+  ret void
+}

@alexey-bataev alexey-bataev requested review from ayalz and fhahn April 22, 2025 15:29
@alexey-bataev
Copy link
Member Author

Ping!

Created using spr 1.3.5
@artagnon artagnon changed the title [LV][LAA][NFC]Add a test with non-power-of-2 store-load forward distance, NFC [LAA] Add tests with non-power-of-2 store-load forward distance Apr 28, 2025
@artagnon
Copy link
Contributor

Hi, I tweaked the title a bit: I hope you don't mind. This change LGTM, but you probably want to wait for @fhahn.

Copy link
Contributor

@fhahn fhahn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks

@alexey-bataev alexey-bataev merged commit 51bbebb into main Apr 28, 2025
8 of 11 checks passed
@alexey-bataev alexey-bataev deleted the users/alexey-bataev/spr/lvlaanfcadd-a-test-with-non-power-of-2-store-load-forward-distance-nfc branch April 28, 2025 21:02
@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder ml-opt-dev-x86-64 running on ml-opt-dev-x86-64-b1 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/137/builds/17662

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/ml-opt-dev-x86-64-b1/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /b/ml-opt-dev-x86-64-b1/build/bin/FileCheck /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /b/ml-opt-dev-x86-64-b1/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /b/ml-opt-dev-x86-64-b1/build/bin/FileCheck /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /b/ml-opt-dev-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder ml-opt-rel-x86-64 running on ml-opt-rel-x86-64-b1 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/185/builds/17416

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/ml-opt-rel-x86-64-b1/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /b/ml-opt-rel-x86-64-b1/build/bin/FileCheck /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /b/ml-opt-rel-x86-64-b1/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /b/ml-opt-rel-x86-64-b1/build/bin/FileCheck /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /b/ml-opt-rel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder ml-opt-devrel-x86-64 running on ml-opt-devrel-x86-64-b2 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/175/builds/17634

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/ml-opt-devrel-x86-64-b1/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /b/ml-opt-devrel-x86-64-b1/build/bin/FileCheck /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /b/ml-opt-devrel-x86-64-b1/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /b/ml-opt-devrel-x86-64-b1/build/bin/FileCheck /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /b/ml-opt-devrel-x86-64-b1/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder llvm-clang-x86_64-gcc-ubuntu running on sie-linux-worker3 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/174/builds/16923

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/FileCheck /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/build/bin/FileCheck /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
�[1m/home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: �[0m�[0;1;31merror: �[0m�[1mCHECK-NEXT: expected string not found in input
�[0m; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
�[0;1;32m              ^
�[0m�[1m<stdin>:89:10: �[0m�[0;1;30mnote: �[0m�[1mscanning from here
�[0m Forward:
�[0;1;32m         ^
�[0m�[1m<stdin>:90:2: �[0m�[0;1;30mnote: �[0m�[1mpossible intended match here
�[0m %3 = load i32, ptr %gep.iv.4, align 4 -> 
�[0;1;32m ^
�[0m
Input file: <stdin>
Check file: /home/buildbot/buildbot-root/llvm-clang-x86_64-gcc-ubuntu/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
�[1m�[0m�[0;1;30m             1: �[0m�[1m�[0;1;46mPrinting analysis 'Loop Access Analysis' for function �[0m'test'�[0;1;46m: �[0m
�[0;1;32mlabel:11'0                                                            ^~~~~~
�[0m�[0;1;32mlabel:11'1                                                            ^~~~~~
�[0m�[0;1;30m             2: �[0m�[1m�[0;1;46m �[0mloop:�[0;1;46m �[0m
�[0;1;32mnext:12          ^~~~~
�[0m�[0;1;30m             3: �[0m�[1m�[0;1;46m �[0mMemory dependences are safe�[0;1;46m �[0m
�[0;1;32mnext:13          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
�[0m�[0;1;30m             4: �[0m�[1m�[0;1;46m �[0mDependences:�[0;1;46m �[0m
�[0;1;32mnext:14          ^~~~~~~~~~~~
�[0m�[0;1;30m             5: �[0m�[1m�[0;1;46m �[0mRun-time memory checks:�[0;1;46m �[0m
�[0;1;32mnext:15          ^~~~~~~~~~~~~~~~~~~~~~~
�[0m�[0;1;30m             6: �[0m�[1m�[0;1;46m �[0mGrouped accesses:�[0;1;46m �[0m
�[0;1;32mnext:16          ^~~~~~~~~~~~~~~~~
�[0m�[0;1;30m             7: �[0m�[1m�[0;1;46m�[0m �[0m
�[0;1;32mempty:17        ^
�[0m�[0;1;30m             8: �[0m�[1m�[0;1;46m �[0mNon vectorizable stores to invariant address were not found in loop.�[0;1;46m �[0m
�[0;1;32mnext:18          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
�[0m�[0;1;30m             9: �[0m�[1m�[0;1;46m �[0mSCEV assumptions:�[0;1;46m �[0m
�[0;1;32mnext:19          ^~~~~~~~~~~~~~~~~
�[0m�[0;1;30m            10: �[0m�[1m�[0;1;46m�[0m �[0m
�[0;1;32mempty:20        ^
�[0m�[0;1;30m            11: �[0m�[1m�[0;1;46m �[0mExpressions re-written:�[0;1;46m �[0m
�[0;1;32mnext:21          ^~~~~~~~~~~~~~~~~~~~~~~
�[0m�[0;1;30m            12: �[0m�[1m�[0;1;46mPrinting analysis 'Loop Access Analysis' for function �[0m'test_may_clobber1'�[0;1;46m: �[0m
�[0;1;32mlabel:44'0                                                            ^~~~~~~~~~~~~~~~~~~
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder clang-aarch64-sve-vls running on linaro-g3-02 while building llvm at step 7 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/143/builds/7317

Here is the relevant piece of the build log for the reference
Step 7 (ninja check 1) failure: stage 1 checked (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/llvm/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1/bin/FileCheck /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/llvm/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/stage1/bin/FileCheck /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/llvm/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/home/tcwg-buildbot/worker/clang-aarch64-sve-vls/llvm/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /home/tcwg-buildbot/worker/clang-aarch64-sve-vls/llvm/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder lld-x86_64-ubuntu-fast running on as-builder-4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/33/builds/15606

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/FileCheck /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/FileCheck /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 28, 2025

LLVM Buildbot has detected a new failure on builder premerge-monolithic-linux running on premerge-linux-1 while building llvm at step 7 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/153/builds/30167

Here is the relevant piece of the build log for the reference
Step 7 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/build/buildbot/premerge-monolithic-linux/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /build/buildbot/premerge-monolithic-linux/build/bin/FileCheck /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /build/buildbot/premerge-monolithic-linux/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /build/buildbot/premerge-monolithic-linux/build/bin/FileCheck /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 29, 2025

LLVM Buildbot has detected a new failure on builder llvm-clang-x86_64-expensive-checks-debian running on gribozavr4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/16/builds/18103

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/1/llvm-clang-x86_64-expensive-checks-debian/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /b/1/llvm-clang-x86_64-expensive-checks-debian/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /b/1/llvm-clang-x86_64-expensive-checks-debian/build/bin/FileCheck /b/1/llvm-clang-x86_64-expensive-checks-debian/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /b/1/llvm-clang-x86_64-expensive-checks-debian/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /b/1/llvm-clang-x86_64-expensive-checks-debian/build/bin/FileCheck /b/1/llvm-clang-x86_64-expensive-checks-debian/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/b/1/llvm-clang-x86_64-expensive-checks-debian/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /b/1/llvm-clang-x86_64-expensive-checks-debian/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 29, 2025

LLVM Buildbot has detected a new failure on builder clang-x86_64-debian-fast running on gribozavr4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/56/builds/24553

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/1/clang-x86_64-debian-fast/llvm.obj/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /b/1/clang-x86_64-debian-fast/llvm.obj/bin/FileCheck /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /b/1/clang-x86_64-debian-fast/llvm.obj/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /b/1/clang-x86_64-debian-fast/llvm.obj/bin/FileCheck /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /b/1/clang-x86_64-debian-fast/llvm.src/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

@llvm-ci
Copy link
Collaborator

llvm-ci commented Apr 29, 2025

LLVM Buildbot has detected a new failure on builder llvm-x86_64-debian-dylib running on gribozavr4 while building llvm at step 7 "test-build-unified-tree-check-llvm".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/60/builds/25959

Here is the relevant piece of the build log for the reference
Step 7 (test-build-unified-tree-check-llvm) failure: test (failure)
******************** TEST 'LLVM :: Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/b/1/llvm-x86_64-debian-dylib/build/bin/opt -passes='print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v < /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll 2>&1 | /b/1/llvm-x86_64-debian-dylib/build/bin/FileCheck /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll # RUN: at line 2
+ /b/1/llvm-x86_64-debian-dylib/build/bin/opt '-passes=print<access-info>' -disable-output -mtriple=riscv64 -mattr=+v
+ /b/1/llvm-x86_64-debian-dylib/build/bin/FileCheck /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll
/b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll:224:15: error: CHECK-NEXT: expected string not found in input
; CHECK-NEXT: %3 = load i32, ptr %arrayidx2, align 4 ->
              ^
<stdin>:89:10: note: scanning from here
 Forward:
         ^
<stdin>:90:2: note: possible intended match here
 %3 = load i32, ptr %gep.iv.4, align 4 -> 
 ^

Input file: <stdin>
Check file: /b/1/llvm-x86_64-debian-dylib/llvm-project/llvm/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance-non-power-of-2.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            .
            .
            .
           84: Printing analysis 'Loop Access Analysis' for function 'non_power_2_storeloadforward': 
           85:  loop: 
           86:  Report: unsafe dependent memory operations in loop. Use #pragma clang loop distribute(enable) to allow loop distribution to attempt to isolate the offending operations into a separate loop 
           87: Backward loop carried data dependence that prevents store-to-load forwarding. 
           88:  Dependences: 
           89:  Forward: 
next:224'0              X error: no match found
           90:  %3 = load i32, ptr %gep.iv.4, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next:224'1      ?                                          possible intended match
           91:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  
next:224'0     ~
           93:  BackwardVectorizableButPreventsForwarding: 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  %1 = load i32, ptr %gep.iv.sub.3, align 4 ->  
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store i32 %add3, ptr %gep.iv, align 4 
next:224'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            .
            .
...

IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
GeorgeARM pushed a commit to GeorgeARM/llvm-project that referenced this pull request May 7, 2025
GeorgeARM pushed a commit to GeorgeARM/llvm-project that referenced this pull request May 7, 2025
GeorgeARM pushed a commit to GeorgeARM/llvm-project that referenced this pull request May 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llvm:analysis Includes value tracking, cost tables and constant folding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants