summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll')
-rw-r--r--llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll21
1 files changed, 17 insertions, 4 deletions
diff --git a/llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll b/llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll
index 5194b2ca741..4607373ab2c 100644
--- a/llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll
+++ b/llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll
@@ -1,12 +1,10 @@
-; RUN: opt < %s -globalopt -S > %t
-; RUN: grep "@Y = internal unnamed_addr global \[3 x [%]struct.X\] zeroinitializer" %t
-; RUN: grep load %t | count 6
-; RUN: grep "add i32 [%]a, [%]b" %t | count 3
+; RUN: opt < %s -globalopt -S | FileCheck %s
; globalopt should not sra the global, because it can't see the index.
%struct.X = type { [3 x i32], [3 x i32] }
+; CHECK: @Y = internal unnamed_addr global [3 x %struct.X] zeroinitializer
@Y = internal global [3 x %struct.X] zeroinitializer
@addr = external global i8
@@ -15,6 +13,11 @@ define void @frob() {
store i32 1, i32* getelementptr inbounds ([3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 0, i32 0, i64 ptrtoint (i8* @addr to i64)), align 4
ret void
}
+
+; CHECK-LABEL: @borf
+; CHECK: %a = load
+; CHECK: %b = load
+; CHECK: add i32 %a, %b
define i32 @borf(i64 %i, i64 %j) {
%p = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 0, i32 0, i64 0
%a = load i32, i32* %p
@@ -23,6 +26,11 @@ define i32 @borf(i64 %i, i64 %j) {
%c = add i32 %a, %b
ret i32 %c
}
+
+; CHECK-LABEL: @borg
+; CHECK: %a = load
+; CHECK: %b = load
+; CHECK: add i32 %a, %b
define i32 @borg(i64 %i, i64 %j) {
%p = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 1, i32 0, i64 1
%a = load i32, i32* %p
@@ -31,6 +39,11 @@ define i32 @borg(i64 %i, i64 %j) {
%c = add i32 %a, %b
ret i32 %c
}
+
+; CHECK-LABEL: @borh
+; CHECK: %a = load
+; CHECK: %b = load
+; CHECK: add i32 %a, %b
define i32 @borh(i64 %i, i64 %j) {
%p = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* @Y, i64 0, i64 2, i32 0, i64 2
%a = load i32, i32* %p
OpenPOWER on IntegriCloud