diff options
| author | Anna Thomas <anna@azul.com> | 2016-07-22 17:49:40 +0000 |
|---|---|---|
| committer | Anna Thomas <anna@azul.com> | 2016-07-22 17:49:40 +0000 |
| commit | 0be4a0e6a4256df2d14a6723723fc73e7a1d30a8 (patch) | |
| tree | a4ce581802eaf61d57f70fe86bc5e8a0e34fc4b5 /llvm/test/Transforms/GlobalOpt | |
| parent | 2b8747a14e03158957861afcf5cbcf73162ce334 (diff) | |
| download | bcm5719-llvm-0be4a0e6a4256df2d14a6723723fc73e7a1d30a8.tar.gz bcm5719-llvm-0be4a0e6a4256df2d14a6723723fc73e7a1d30a8.zip | |
Invariant start/end intrinsics overloaded for address space
Summary:
The llvm.invariant.start and llvm.invariant.end intrinsics currently
support specifying invariant memory objects only in the default address
space.
With this change, these intrinsics are overloaded for any adddress space
for memory objects
and we can use these llvm invariant intrinsics in non-default address
spaces.
Example: llvm.invariant.start.p1i8(i64 4, i8 addrspace(1)* %ptr)
This overloaded intrinsic is needed for representing final or invariant
memory in managed languages.
Reviewers: apilipenko, reames
Subscribers: llvm-commits
llvm-svn: 276447
Diffstat (limited to 'llvm/test/Transforms/GlobalOpt')
| -rw-r--r-- | llvm/test/Transforms/GlobalOpt/invariant-nodatalayout.ll | 4 | ||||
| -rw-r--r-- | llvm/test/Transforms/GlobalOpt/invariant.ll | 10 |
2 files changed, 7 insertions, 7 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 } |

