[LICM] Adjust speculation test to avoid no-op instruction (NFC)
authorNikita Popov <npopov@redhat.com>
Wed, 5 Oct 2022 14:40:29 +0000 (16:40 +0200)
committerNikita Popov <npopov@redhat.com>
Wed, 5 Oct 2022 14:41:20 +0000 (16:41 +0200)
Such GEPs don't exist with opaque pointers, give it an actual
offset.

llvm/test/Transforms/LICM/allow-speculation-option.ll

index 572ce2d..46839cb 100644 (file)
@@ -6,14 +6,14 @@
 define void @test([10 x i32]* %ptr, i32 %N) {
 ; COMMON-LABEL: @test(
 ; COMMON-NEXT:  entry:
-; SPEC_ON-NEXT:   [[GEP:%.*]] = getelementptr [10 x i32], [10 x i32]* [[PTR:%.*]], i32 0, i32 0
+; SPEC_ON-NEXT:   [[GEP:%.*]] = getelementptr [10 x i32], [10 x i32]* [[PTR:%.*]], i32 0, i32 1
 ; COMMON-NEXT:    br label [[LOOP_HEADER:%.*]]
 ; COMMON:       loop.header:
 ; COMMON-NEXT:    [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
 ; COMMON-NEXT:    [[CMP:%.*]] = icmp ult i32 [[IV]], [[N:%.*]]
 ; COMMON-NEXT:    br i1 [[CMP]], label [[LOOP_LATCH]], label [[EXIT:%.*]]
 ; COMMON:       loop.latch:
-; SPEC_OFF-NEXT:  [[GEP:%.*]] = getelementptr [10 x i32], [10 x i32]* [[PTR:%.*]], i32 0, i32 0
+; SPEC_OFF-NEXT:  [[GEP:%.*]] = getelementptr [10 x i32], [10 x i32]* [[PTR:%.*]], i32 0, i32 1
 ; COMMON-NEXT:    [[GEP_IV:%.*]] = getelementptr i32, i32* [[GEP]], i32 [[IV]]
 ; COMMON-NEXT:    store i32 9999, i32* [[GEP_IV]], align 4
 ; COMMON-NEXT:    [[IV_NEXT]] = add i32 [[IV]], 1
@@ -30,7 +30,7 @@ loop.header:
   br i1 %cmp, label %loop.latch, label %exit
 
 loop.latch:
-  %gep = getelementptr [10 x i32], [10 x i32]* %ptr, i32 0, i32 0
+  %gep = getelementptr [10 x i32], [10 x i32]* %ptr, i32 0, i32 1
   %gep.iv = getelementptr i32, i32* %gep, i32 %iv
   store i32 9999, i32* %gep.iv
   %iv.next = add i32 %iv, 1