summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/GlobalOpt/invariant-nodatalayout.ll4
-rw-r--r--llvm/test/Transforms/GlobalOpt/invariant.ll10
-rw-r--r--llvm/test/Transforms/InstCombine/invariant.ll18
3 files changed, 22 insertions, 10 deletions
diff --git a/llvm/test/Transforms/GlobalOpt/invariant-nodatalayout.ll b/llvm/test/Transforms/GlobalOpt/invariant-nodatalayout.ll
index a2abd52c4e8..d1fbe46257d 100644
--- a/llvm/test/Transforms/GlobalOpt/invariant-nodatalayout.ll
+++ b/llvm/test/Transforms/GlobalOpt/invariant-nodatalayout.ll
@@ -1,14 +1,14 @@
; RUN: opt -globalopt -S -o - < %s | FileCheck %s
; The check here is that it doesn't crash.
-declare {}* @llvm.invariant.start(i64 %size, i8* nocapture %ptr)
+declare {}* @llvm.invariant.start.p0i8(i64 %size, i8* nocapture %ptr)
@object1 = global { i32, i32 } zeroinitializer
; CHECK: @object1 = global { i32, i32 } zeroinitializer
define void @ctor1() {
%ptr = bitcast {i32, i32}* @object1 to i8*
- call {}* @llvm.invariant.start(i64 4, i8* %ptr)
+ call {}* @llvm.invariant.start.p0i8(i64 4, i8* %ptr)
ret void
}
diff --git a/llvm/test/Transforms/GlobalOpt/invariant.ll b/llvm/test/Transforms/GlobalOpt/invariant.ll
index 6b991934789..02ffe2bc424 100644
--- a/llvm/test/Transforms/GlobalOpt/invariant.ll
+++ b/llvm/test/Transforms/GlobalOpt/invariant.ll
@@ -3,10 +3,10 @@
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
-declare {}* @llvm.invariant.start(i64 %size, i8* nocapture %ptr)
+declare {}* @llvm.invariant.start.p0i8(i64 %size, i8* nocapture %ptr)
define void @test1(i8* %ptr) {
- call {}* @llvm.invariant.start(i64 4, i8* %ptr)
+ call {}* @llvm.invariant.start.p0i8(i64 4, i8* %ptr)
ret void
}
@@ -25,7 +25,7 @@ define void @ctor1() {
define void @ctor2() {
store i32 -1, i32* @object2
%A = bitcast i32* @object2 to i8*
- %B = call {}* @llvm.invariant.start(i64 4, i8* %A)
+ %B = call {}* @llvm.invariant.start.p0i8(i64 4, i8* %A)
%C = bitcast {}* %B to i8*
ret void
}
@@ -36,7 +36,7 @@ define void @ctor2() {
define void @ctor3() {
store i32 -1, i32* @object3
%A = bitcast i32* @object3 to i8*
- call {}* @llvm.invariant.start(i64 3, i8* %A)
+ call {}* @llvm.invariant.start.p0i8(i64 3, i8* %A)
ret void
}
@@ -46,7 +46,7 @@ define void @ctor3() {
define void @ctor4() {
store i32 -1, i32* @object4
%A = bitcast i32* @object4 to i8*
- call {}* @llvm.invariant.start(i64 -1, i8* %A)
+ call {}* @llvm.invariant.start.p0i8(i64 -1, i8* %A)
ret void
}
diff --git a/llvm/test/Transforms/InstCombine/invariant.ll b/llvm/test/Transforms/InstCombine/invariant.ll
index 246f9e64041..21e5f0fe858 100644
--- a/llvm/test/Transforms/InstCombine/invariant.ll
+++ b/llvm/test/Transforms/InstCombine/invariant.ll
@@ -2,15 +2,27 @@
; RUN: opt < %s -instcombine -S | FileCheck %s
declare void @g(i8*)
+declare void @g_addr1(i8 addrspace(1)*)
-declare {}* @llvm.invariant.start(i64, i8* nocapture) nounwind readonly
+declare {}* @llvm.invariant.start.p0i8(i64, i8* nocapture) nounwind readonly
+declare {}* @llvm.invariant.start.p1i8(i64, i8 addrspace(1)* nocapture) nounwind readonly
define i8 @f() {
%a = alloca i8 ; <i8*> [#uses=4]
store i8 0, i8* %a
- %i = call {}* @llvm.invariant.start(i64 1, i8* %a) ; <{}*> [#uses=0]
- ; CHECK: call {}* @llvm.invariant.start
+ %i = call {}* @llvm.invariant.start.p0i8(i64 1, i8* %a) ; <{}*> [#uses=0]
+ ; CHECK: call {}* @llvm.invariant.start.p0i8
call void @g(i8* %a)
%r = load i8, i8* %a ; <i8> [#uses=1]
ret i8 %r
}
+
+; make sure llvm.invariant.call in non-default addrspace are also not eliminated.
+define i8 @f_addrspace1(i8 addrspace(1)* %a) {
+ store i8 0, i8 addrspace(1)* %a
+ %i = call {}* @llvm.invariant.start.p1i8(i64 1, i8 addrspace(1)* %a) ; <{}*> [#uses=0]
+ ; CHECK: call {}* @llvm.invariant.start.p1i8
+ call void @g_addr1(i8 addrspace(1)* %a)
+ %r = load i8, i8 addrspace(1)* %a ; <i8> [#uses=1]
+ ret i8 %r
+}
OpenPOWER on IntegriCloud