diff options
Diffstat (limited to 'llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll')
-rw-r--r-- | llvm/test/Transforms/GlobalOpt/globalsra-unknown-index.ll | 21 |
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 |