[llvm] 11eb8d8 - [NewGVN] Convert tests to opaque pointers (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 21 03:43:16 PDT 2023
Author: Nikita Popov
Date: 2023-04-21T12:43:05+02:00
New Revision: 11eb8d88d829a86bfc252628f105c99b1ead73e6
URL: https://github.com/llvm/llvm-project/commit/11eb8d88d829a86bfc252628f105c99b1ead73e6
DIFF: https://github.com/llvm/llvm-project/commit/11eb8d88d829a86bfc252628f105c99b1ead73e6.diff
LOG: [NewGVN] Convert tests to opaque pointers (NFC)
Added:
Modified:
llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll
llvm/test/Transforms/NewGVN/non-local-offset.ll
llvm/test/Transforms/NewGVN/refine-stores.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll b/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll
index 4b1ec382566c..52b4a595b58a 100644
--- a/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll
+++ b/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll
@@ -1,15 +1,15 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
-; RUN: opt -opaque-pointers=0 < %s -passes=newgvn -S | FileCheck %s
+; RUN: opt < %s -passes=newgvn -S | FileCheck %s
- at last = external global [65 x i32*]
+ at last = external global [65 x ptr]
define i32 @NextRootMove(i32 %wtm, i32 %x, i32 %y, i32 %z) {
; CHECK-LABEL: define i32 @NextRootMove
; CHECK-SAME: (i32 [[WTM:%.*]], i32 [[X:%.*]], i32 [[Y:%.*]], i32 [[Z:%.*]]) {
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[A:%.*]] = alloca i32*, align 8
-; CHECK-NEXT: [[TMP17618:%.*]] = load i32*, i32** getelementptr inbounds ([65 x i32*], [65 x i32*]* @last, i32 0, i32 1), align 4
-; CHECK-NEXT: store i32* [[TMP17618]], i32** [[A]], align 8
+; CHECK-NEXT: [[A:%.*]] = alloca ptr, align 8
+; CHECK-NEXT: [[TMP17618:%.*]] = load ptr, ptr getelementptr inbounds ([65 x ptr], ptr @last, i32 0, i32 1), align 4
+; CHECK-NEXT: store ptr [[TMP17618]], ptr [[A]], align 8
; CHECK-NEXT: br label [[COND_TRUE116:%.*]]
; CHECK: cond_true116:
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[X]], [[Y]]
@@ -27,9 +27,9 @@ define i32 @NextRootMove(i32 %wtm, i32 %x, i32 %y, i32 %z) {
; CHECK-NEXT: ret i32 0
;
entry:
- %A = alloca i32*
- %tmp17618 = load i32*, i32** getelementptr ([65 x i32*], [65 x i32*]* @last, i32 0, i32 1), align 4
- store i32* %tmp17618, i32** %A
+ %A = alloca ptr
+ %tmp17618 = load ptr, ptr getelementptr ([65 x ptr], ptr @last, i32 0, i32 1), align 4
+ store ptr %tmp17618, ptr %A
br label %cond_true116
cond_true116:
@@ -37,8 +37,8 @@ cond_true116:
br i1 %cmp, label %cond_true128, label %cond_true145
cond_true128:
- %tmp17625 = load i32*, i32** getelementptr ([65 x i32*], [65 x i32*]* @last, i32 0, i32 1), align 4
- store i32* %tmp17625, i32** %A
+ %tmp17625 = load ptr, ptr getelementptr ([65 x ptr], ptr @last, i32 0, i32 1), align 4
+ store ptr %tmp17625, ptr %A
%cmp1 = icmp eq i32 %x, %z
br i1 %cmp1 , label %bb98.backedge, label %return.loopexit
@@ -46,8 +46,8 @@ bb98.backedge:
br label %cond_true116
cond_true145:
- %tmp17631 = load i32*, i32** getelementptr ([65 x i32*], [65 x i32*]* @last, i32 0, i32 1), align 4
- store i32* %tmp17631, i32** %A
+ %tmp17631 = load ptr, ptr getelementptr ([65 x ptr], ptr @last, i32 0, i32 1), align 4
+ store ptr %tmp17631, ptr %A
br i1 false, label %bb98.backedge, label %return.loopexit
return.loopexit:
diff --git a/llvm/test/Transforms/NewGVN/non-local-offset.ll b/llvm/test/Transforms/NewGVN/non-local-offset.ll
index 5cca68eff565..a8fc550bf0eb 100644
--- a/llvm/test/Transforms/NewGVN/non-local-offset.ll
+++ b/llvm/test/Transforms/NewGVN/non-local-offset.ll
@@ -1,34 +1,34 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
-; RUN: opt -opaque-pointers=0 -passes=newgvn -S < %s | FileCheck %s
+; RUN: opt -passes=newgvn -S < %s | FileCheck %s
target datalayout = "e-p:64:64:64"
; GVN should ignore the store to p[1] to see that the load from p[0] is
; fully redundant.
-define void @yes(i1 %c, i32* %p, i32* %q) nounwind {
+define void @yes(i1 %c, ptr %p, ptr %q) nounwind {
; CHECK-LABEL: define void @yes
-; CHECK-SAME: (i1 [[C:%.*]], i32* [[P:%.*]], i32* [[Q:%.*]]) #[[ATTR0:[0-9]+]] {
+; CHECK-SAME: (i1 [[C:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: entry:
-; CHECK-NEXT: store i32 0, i32* [[P]], align 4
-; CHECK-NEXT: [[P1:%.*]] = getelementptr inbounds i32, i32* [[P]], i64 1
-; CHECK-NEXT: store i32 1, i32* [[P1]], align 4
+; CHECK-NEXT: store i32 0, ptr [[P]], align 4
+; CHECK-NEXT: [[P1:%.*]] = getelementptr inbounds i32, ptr [[P]], i64 1
+; CHECK-NEXT: store i32 1, ptr [[P1]], align 4
; CHECK-NEXT: br i1 [[C]], label [[IF_ELSE:%.*]], label [[IF_THEN:%.*]]
; CHECK: if.then:
-; CHECK-NEXT: store i32 0, i32* [[Q]], align 4
+; CHECK-NEXT: store i32 0, ptr [[Q]], align 4
; CHECK-NEXT: ret void
; CHECK: if.else:
; CHECK-NEXT: ret void
;
entry:
- store i32 0, i32* %p
- %p1 = getelementptr inbounds i32, i32* %p, i64 1
- store i32 1, i32* %p1
+ store i32 0, ptr %p
+ %p1 = getelementptr inbounds i32, ptr %p, i64 1
+ store i32 1, ptr %p1
br i1 %c, label %if.else, label %if.then
if.then:
- %t = load i32, i32* %p
- store i32 %t, i32* %q
+ %t = load i32, ptr %p
+ store i32 %t, ptr %q
ret void
if.else:
@@ -39,39 +39,35 @@ if.else:
; fully redundant. However, the second load is larger, so it's not a simple
; redundancy.
-define void @watch_out_for_size_change(i1 %c, i32* %p, i32* %q) nounwind {
+define void @watch_out_for_size_change(i1 %c, ptr %p, ptr %q) nounwind {
; CHECK-LABEL: define void @watch_out_for_size_change
-; CHECK-SAME: (i1 [[C:%.*]], i32* [[P:%.*]], i32* [[Q:%.*]]) #[[ATTR0]] {
+; CHECK-SAME: (i1 [[C:%.*]], ptr [[P:%.*]], ptr [[Q:%.*]]) #[[ATTR0]] {
; CHECK-NEXT: entry:
-; CHECK-NEXT: store i32 0, i32* [[P]], align 4
-; CHECK-NEXT: [[P1:%.*]] = getelementptr inbounds i32, i32* [[P]], i64 1
-; CHECK-NEXT: store i32 1, i32* [[P1]], align 4
+; CHECK-NEXT: store i32 0, ptr [[P]], align 4
+; CHECK-NEXT: [[P1:%.*]] = getelementptr inbounds i32, ptr [[P]], i64 1
+; CHECK-NEXT: store i32 1, ptr [[P1]], align 4
; CHECK-NEXT: br i1 [[C]], label [[IF_ELSE:%.*]], label [[IF_THEN:%.*]]
; CHECK: if.then:
-; CHECK-NEXT: store i32 0, i32* [[Q]], align 4
+; CHECK-NEXT: store i32 0, ptr [[Q]], align 4
; CHECK-NEXT: ret void
; CHECK: if.else:
-; CHECK-NEXT: [[PC:%.*]] = bitcast i32* [[P]] to i64*
-; CHECK-NEXT: [[QC:%.*]] = bitcast i32* [[Q]] to i64*
-; CHECK-NEXT: [[T64:%.*]] = load i64, i64* [[PC]], align 4
-; CHECK-NEXT: store i64 [[T64]], i64* [[QC]], align 4
+; CHECK-NEXT: [[T64:%.*]] = load i64, ptr [[P]], align 4
+; CHECK-NEXT: store i64 [[T64]], ptr [[Q]], align 4
; CHECK-NEXT: ret void
;
entry:
- store i32 0, i32* %p
- %p1 = getelementptr inbounds i32, i32* %p, i64 1
- store i32 1, i32* %p1
+ store i32 0, ptr %p
+ %p1 = getelementptr inbounds i32, ptr %p, i64 1
+ store i32 1, ptr %p1
br i1 %c, label %if.else, label %if.then
if.then:
- %t = load i32, i32* %p
- store i32 %t, i32* %q
+ %t = load i32, ptr %p
+ store i32 %t, ptr %q
ret void
if.else:
- %pc = bitcast i32* %p to i64*
- %qc = bitcast i32* %q to i64*
- %t64 = load i64, i64* %pc
- store i64 %t64, i64* %qc
+ %t64 = load i64, ptr %p
+ store i64 %t64, ptr %q
ret void
}
diff --git a/llvm/test/Transforms/NewGVN/refine-stores.ll b/llvm/test/Transforms/NewGVN/refine-stores.ll
index 878392ea200f..a45dd1f48e1c 100644
--- a/llvm/test/Transforms/NewGVN/refine-stores.ll
+++ b/llvm/test/Transforms/NewGVN/refine-stores.ll
@@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt -opaque-pointers=0 < %s -passes=newgvn -S | FileCheck %s
+; RUN: opt < %s -passes=newgvn -S | FileCheck %s
;; Now that we do store refinement, we have to verify that we add fake uses
;; when we skip existing stores.
;; We also are testing that various variations that cause stores to move classes
@@ -11,11 +11,10 @@ target triple = "x86_64-apple-darwin16.5.0"
%struct.eggs = type {}
-define void @spam(i32 *%a) {
+define void @spam(ptr %a) {
; CHECK-LABEL: @spam(
; CHECK-NEXT: bb:
-; CHECK-NEXT: [[FOO:%.*]] = bitcast i32* [[A:%.*]] to %struct.eggs**
-; CHECK-NEXT: store %struct.eggs* null, %struct.eggs** [[FOO]], align 8
+; CHECK-NEXT: store ptr null, ptr [[A:%.*]], align 8
; CHECK-NEXT: br label [[BB1:%.*]]
; CHECK: bb1:
; CHECK-NEXT: br i1 undef, label [[BB3:%.*]], label [[BB2:%.*]]
@@ -23,13 +22,12 @@ define void @spam(i32 *%a) {
; CHECK-NEXT: call void @baz()
; CHECK-NEXT: br label [[BB1]]
; CHECK: bb3:
-; CHECK-NEXT: store i32 0, i32* undef, align 4
-; CHECK-NEXT: store %struct.eggs* null, %struct.eggs** [[FOO]], align 8
+; CHECK-NEXT: store i32 0, ptr undef, align 4
+; CHECK-NEXT: store ptr null, ptr [[A]], align 8
; CHECK-NEXT: unreachable
;
bb:
- %foo = bitcast i32 *%a to %struct.eggs**
- store %struct.eggs* null, %struct.eggs** %foo
+ store ptr null, ptr %a
br label %bb1
bb1: ; preds = %bb2, %bb
@@ -40,13 +38,13 @@ bb2: ; preds = %bb1
br label %bb1
bb3: ; preds = %bb1
- store i32 0, i32* undef
+ store i32 0, ptr undef
;; This store is defined by a memoryphi of the call and the first store
;; At first, we will prove it equivalent to the first store above.
;; Then the call will become reachable, and the equivalence will be removed
;; Without it being a use of the first store, we will not update the store
;; to reflect this.
- store %struct.eggs* null, %struct.eggs** %foo
+ store ptr null, ptr %a
unreachable
}
@@ -58,48 +56,46 @@ define void @a() {
; CHECK-NEXT: b:
; CHECK-NEXT: br label [[C:%.*]]
; CHECK: c:
-; CHECK-NEXT: store i64 undef, i64* null, align 4
+; CHECK-NEXT: store i64 undef, ptr null, align 4
; CHECK-NEXT: br label [[E:%.*]]
; CHECK: e:
-; CHECK-NEXT: [[G:%.*]] = load i64*, i64** null, align 8
-; CHECK-NEXT: store i64* undef, i64** null, align 8
+; CHECK-NEXT: store ptr undef, ptr null, align 8
; CHECK-NEXT: br i1 undef, label [[C]], label [[E]]
;
b:
br label %c
c: ; preds = %e, %b
- %d = phi i64* [ undef, %b ], [ null, %e ]
- store i64 undef, i64* %d
+ %d = phi ptr [ undef, %b ], [ null, %e ]
+ store i64 undef, ptr %d
br label %e
e: ; preds = %e, %c
;; The memory for this load starts out equivalent to just the store in c, we later discover the store after us, and
;; need to make sure the right set of values get marked as changed after memory leaders change
- %g = load i64*, i64** null
- %0 = bitcast i64* %g to i64*
- store i64* undef, i64** null
+ %g = load ptr, ptr null
+ store ptr undef, ptr null
br i1 undef, label %c, label %e
}
%struct.hoge = type {}
-define void @widget(%struct.hoge* %arg) {
+define void @widget(ptr %arg) {
; CHECK-LABEL: @widget(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB1:%.*]]
; CHECK: bb1:
-; CHECK-NEXT: [[TMP:%.*]] = phi %struct.hoge* [ [[ARG:%.*]], [[BB:%.*]] ], [ null, [[BB1]] ]
-; CHECK-NEXT: store %struct.hoge* [[TMP]], %struct.hoge** undef, align 8
+; CHECK-NEXT: [[TMP:%.*]] = phi ptr [ [[ARG:%.*]], [[BB:%.*]] ], [ null, [[BB1]] ]
+; CHECK-NEXT: store ptr [[TMP]], ptr undef, align 8
; CHECK-NEXT: br i1 undef, label [[BB1]], label [[BB2:%.*]]
; CHECK: bb2:
; CHECK-NEXT: [[TMP3:%.*]] = phi i64 [ [[TMP8:%.*]], [[BB7:%.*]] ], [ 0, [[BB1]] ]
; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i64 [[TMP3]], 0
; CHECK-NEXT: br i1 [[TMP4]], label [[BB7]], label [[BB5:%.*]]
; CHECK: bb5:
-; CHECK-NEXT: [[TMP6:%.*]] = load i64, i64* null, align 4
+; CHECK-NEXT: [[TMP6:%.*]] = load i64, ptr null, align 4
; CHECK-NEXT: call void @quux()
-; CHECK-NEXT: store i64 [[TMP6]], i64* undef, align 4
+; CHECK-NEXT: store i64 [[TMP6]], ptr undef, align 4
; CHECK-NEXT: br label [[BB7]]
; CHECK: bb7:
; CHECK-NEXT: [[TMP8]] = add i64 [[TMP3]], 1
@@ -109,8 +105,8 @@ bb:
br label %bb1
bb1: ; preds = %bb1, %bb
- %tmp = phi %struct.hoge* [ %arg, %bb ], [ null, %bb1 ]
- store %struct.hoge* %tmp, %struct.hoge** undef
+ %tmp = phi ptr [ %arg, %bb ], [ null, %bb1 ]
+ store ptr %tmp, ptr undef
br i1 undef, label %bb1, label %bb2
bb2: ; preds = %bb7, %bb1
@@ -121,9 +117,9 @@ bb2: ; preds = %bb7, %bb1
bb5: ; preds = %bb2
;; Originally thought equal to the store that comes after it until the phi edges
;; are completely traversed
- %tmp6 = load i64, i64* null
+ %tmp6 = load i64, ptr null
call void @quux()
- store i64 %tmp6, i64* undef
+ store i64 %tmp6, ptr undef
br label %bb7
bb7: ; preds = %bb5, %bb2
@@ -142,9 +138,7 @@ define void @b() {
; CHECK: m:
; CHECK-NEXT: unreachable
; CHECK: d:
-; CHECK-NEXT: [[G:%.*]] = bitcast %struct.a* [[C]] to i8*
-; CHECK-NEXT: [[F:%.*]] = bitcast i8* [[G]] to i32*
-; CHECK-NEXT: [[E:%.*]] = load i32, i32* [[F]], align 4
+; CHECK-NEXT: [[E:%.*]] = load i32, ptr [[C]], align 4
; CHECK-NEXT: br i1 undef, label [[I:%.*]], label [[J:%.*]]
; CHECK: i:
; CHECK-NEXT: br i1 undef, label [[K:%.*]], label [[M:%.*]]
@@ -159,14 +153,12 @@ define void @b() {
br label %d
m: ; preds = %j, %i
- store i32 %e, i32* %f
+ store i32 %e, ptr %h
unreachable
d: ; preds = %0
- %g = bitcast %struct.a* %c to i8*
- %h = getelementptr i8, i8* %g
- %f = bitcast i8* %h to i32*
- %e = load i32, i32* %f
+ %h = getelementptr i8, ptr %c
+ %e = load i32, ptr %h
br i1 undef, label %i, label %j
i: ; preds = %d
@@ -179,7 +171,7 @@ l: ; preds = %k
%n = phi i32 [ %e, %k ]
;; Becomes equal and then not equal to the other store, and
;; along the way, the load.
- store i32 %n, i32* %f
+ store i32 %n, ptr %h
unreachable
j: ; preds = %d
More information about the llvm-commits
mailing list