[PATCH] D35438: CodeGen: Insert addr space cast for automatic/temp var at right position
Yaxun Liu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 18 07:47:34 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL308313: CodeGen: Insert addr space cast for automatic/temp var at right position (authored by yaxunl).
Changed prior to commit:
https://reviews.llvm.org/D35438?vs=106910&id=107097#toc
Repository:
rL LLVM
https://reviews.llvm.org/D35438
Files:
cfe/trunk/lib/CodeGen/CGExpr.cpp
cfe/trunk/test/CodeGenCXX/amdgcn-automatic-variable.cpp
Index: cfe/trunk/lib/CodeGen/CGExpr.cpp
===================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp
@@ -73,9 +73,12 @@
// cast alloca to the default address space when necessary.
if (CastToDefaultAddrSpace && getASTAllocaAddressSpace() != LangAS::Default) {
auto DestAddrSpace = getContext().getTargetAddressSpace(LangAS::Default);
+ auto CurIP = Builder.saveIP();
+ Builder.SetInsertPoint(AllocaInsertPt);
V = getTargetHooks().performAddrSpaceCast(
*this, V, getASTAllocaAddressSpace(), LangAS::Default,
Ty->getPointerTo(DestAddrSpace), /*non-null*/ true);
+ Builder.restoreIP(CurIP);
}
return Address(V, Align);
Index: cfe/trunk/test/CodeGenCXX/amdgcn-automatic-variable.cpp
===================================================================
--- cfe/trunk/test/CodeGenCXX/amdgcn-automatic-variable.cpp
+++ cfe/trunk/test/CodeGenCXX/amdgcn-automatic-variable.cpp
@@ -13,39 +13,39 @@
// CHECK-LABEL: define void @_Z5func2v()
void func2(void) {
// CHECK: %lv1 = alloca i32, align 4, addrspace(5)
+ // CHECK: %[[r0:.*]] = addrspacecast i32 addrspace(5)* %lv1 to i32*
// CHECK: %lv2 = alloca i32, align 4, addrspace(5)
+ // CHECK: %[[r1:.*]] = addrspacecast i32 addrspace(5)* %lv2 to i32*
// CHECK: %la = alloca [100 x i32], align 4, addrspace(5)
+ // CHECK: %[[r2:.*]] = addrspacecast [100 x i32] addrspace(5)* %la to [100 x i32]*
// CHECK: %lp1 = alloca i32*, align 8, addrspace(5)
+ // CHECK: %[[r3:.*]] = addrspacecast i32* addrspace(5)* %lp1 to i32**
// CHECK: %lp2 = alloca i32*, align 8, addrspace(5)
+ // CHECK: %[[r4:.*]] = addrspacecast i32* addrspace(5)* %lp2 to i32**
// CHECK: %lvc = alloca i32, align 4, addrspace(5)
+ // CHECK: %[[r5:.*]] = addrspacecast i32 addrspace(5)* %lvc to i32*
- // CHECK: %[[r0:.*]] = addrspacecast i32 addrspace(5)* %lv1 to i32*
// CHECK: store i32 1, i32* %[[r0]]
int lv1;
lv1 = 1;
- // CHECK: %[[r1:.*]] = addrspacecast i32 addrspace(5)* %lv2 to i32*
// CHECK: store i32 2, i32* %[[r1]]
int lv2 = 2;
- // CHECK: %[[r2:.*]] = addrspacecast [100 x i32] addrspace(5)* %la to [100 x i32]*
// CHECK: %[[arrayidx:.*]] = getelementptr inbounds [100 x i32], [100 x i32]* %[[r2]], i64 0, i64 0
// CHECK: store i32 3, i32* %[[arrayidx]], align 4
int la[100];
la[0] = 3;
- // CHECK: %[[r3:.*]] = addrspacecast i32* addrspace(5)* %lp1 to i32**
// CHECK: store i32* %[[r0]], i32** %[[r3]], align 8
int *lp1 = &lv1;
- // CHECK: %[[r4:.*]] = addrspacecast i32* addrspace(5)* %lp2 to i32**
// CHECK: %[[arraydecay:.*]] = getelementptr inbounds [100 x i32], [100 x i32]* %[[r2]], i32 0, i32 0
// CHECK: store i32* %[[arraydecay]], i32** %[[r4]], align 8
int *lp2 = la;
// CHECK: call void @_Z5func1Pi(i32* %[[r0]])
func1(&lv1);
- // CHECK: %[[r5:.*]] = addrspacecast i32 addrspace(5)* %lvc to i32*
// CHECK: store i32 4, i32* %[[r5]]
// CHECK: store i32 4, i32* %[[r0]]
const int lvc = 4;
@@ -81,4 +81,25 @@
func1(&x);
}
+// CHECK-LABEL: define void @_Z5func5v
+void func5() {
+ return;
+ int x = 0;
+}
+
+// CHECK-LABEL: define void @_Z5func6v
+void func6() {
+ return;
+ int x;
+}
+
+// CHECK-LABEL: define void @_Z5func7v
+extern void use(int *);
+void func7() {
+ goto later;
+ int x;
+later:
+ use(&x);
+}
+
// CHECK-NOT: !opencl.ocl.version
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35438.107097.patch
Type: text/x-patch
Size: 3420 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170718/db866ac6/attachment.bin>
More information about the cfe-commits
mailing list