diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-02-16 19:43:39 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-02-16 19:43:39 +0000 |
commit | 150065722a5f010adb0f801d26d8a129a5243669 (patch) | |
tree | fb697fa3b58afa018394974b136d02b0fc069787 | |
parent | 2fa98001f832836e3f652c211a9d2f80501d659a (diff) |
IRgen: Switch EmitCompoundLiteralLValue to use CreateMemTemp.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96373 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGExpr.cpp | 4 | ||||
-rw-r--r-- | test/CodeGenCXX/alloca-align.cpp | 15 |
2 files changed, 12 insertions, 7 deletions
diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index 830954fd10..01820c7aee 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -1520,9 +1520,7 @@ CodeGenFunction::EmitLValueForFieldInitialization(llvm::Value* BaseValue, } LValue CodeGenFunction::EmitCompoundLiteralLValue(const CompoundLiteralExpr* E){ - llvm::Value *DeclPtr = CreateTempAlloca(ConvertTypeForMem(E->getType()), - ".compoundliteral"); - + llvm::Value *DeclPtr = CreateMemTemp(E->getType(), ".compoundliteral"); const Expr* InitExpr = E->getInitializer(); LValue Result = LValue::MakeAddr(DeclPtr, MakeQualifiers(E->getType())); diff --git a/test/CodeGenCXX/alloca-align.cpp b/test/CodeGenCXX/alloca-align.cpp index de6b34d060..b496e039e9 100644 --- a/test/CodeGenCXX/alloca-align.cpp +++ b/test/CodeGenCXX/alloca-align.cpp @@ -1,12 +1,19 @@ // RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s // -// CHECK: alloca %struct.MemsetRange, align 16 +// CHECK: define void @f0 +// CHECK: alloca %struct.s0, align 16 +// CHECK: define void @f1 +// CHECK: alloca %struct.s0, align 16 -struct MemsetRange { +struct s0 { int Start, End; unsigned Alignment; int TheStores __attribute__((aligned(16))); }; -void foobar() { - (void) MemsetRange(); +extern "C" void f0() { + (void) s0(); +} + +extern "C" void f1() { + (struct s0) { 0, 0, 0, 0 }; } |