Mercurial > hg > CbC > CbC_llvm
comparison test/Transforms/InstCombine/invariant.ll @ 120:1172e4bd9c6f
update 4.0.0
author | mir3636 |
---|---|
date | Fri, 25 Nov 2016 19:14:25 +0900 |
parents | afa8332a0e37 |
children |
comparison
equal
deleted
inserted
replaced
101:34baf5011add | 120:1172e4bd9c6f |
---|---|
1 ; Test to make sure unused llvm.invariant.start calls are not trivially eliminated | 1 ; Test to make sure unused llvm.invariant.start calls are not trivially eliminated |
2 ; RUN: opt < %s -instcombine -S | FileCheck %s | 2 ; RUN: opt < %s -instcombine -S | FileCheck %s |
3 | 3 |
4 declare void @g(i8*) | 4 declare void @g(i8*) |
5 declare void @g_addr1(i8 addrspace(1)*) | |
5 | 6 |
6 declare {}* @llvm.invariant.start(i64, i8* nocapture) nounwind readonly | 7 declare {}* @llvm.invariant.start.p0i8(i64, i8* nocapture) nounwind readonly |
8 declare {}* @llvm.invariant.start.p1i8(i64, i8 addrspace(1)* nocapture) nounwind readonly | |
7 | 9 |
8 define i8 @f() { | 10 define i8 @f() { |
9 %a = alloca i8 ; <i8*> [#uses=4] | 11 %a = alloca i8 ; <i8*> [#uses=4] |
10 store i8 0, i8* %a | 12 store i8 0, i8* %a |
11 %i = call {}* @llvm.invariant.start(i64 1, i8* %a) ; <{}*> [#uses=0] | 13 %i = call {}* @llvm.invariant.start.p0i8(i64 1, i8* %a) ; <{}*> [#uses=0] |
12 ; CHECK: call {}* @llvm.invariant.start | 14 ; CHECK: call {}* @llvm.invariant.start.p0i8 |
13 call void @g(i8* %a) | 15 call void @g(i8* %a) |
14 %r = load i8, i8* %a ; <i8> [#uses=1] | 16 %r = load i8, i8* %a ; <i8> [#uses=1] |
15 ret i8 %r | 17 ret i8 %r |
16 } | 18 } |
19 | |
20 ; make sure llvm.invariant.call in non-default addrspace are also not eliminated. | |
21 define i8 @f_addrspace1(i8 addrspace(1)* %a) { | |
22 store i8 0, i8 addrspace(1)* %a | |
23 %i = call {}* @llvm.invariant.start.p1i8(i64 1, i8 addrspace(1)* %a) ; <{}*> [#uses=0] | |
24 ; CHECK: call {}* @llvm.invariant.start.p1i8 | |
25 call void @g_addr1(i8 addrspace(1)* %a) | |
26 %r = load i8, i8 addrspace(1)* %a ; <i8> [#uses=1] | |
27 ret i8 %r | |
28 } |