From: Daniel Dunbar Date: Tue, 16 Feb 2010 19:43:39 +0000 (+0000) Subject: IRgen: Switch EmitCompoundLiteralLValue to use CreateMemTemp. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=150065722a5f010adb0f801d26d8a129a5243669;p=clang IRgen: Switch EmitCompoundLiteralLValue to use CreateMemTemp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96373 91177308-0d34-0410-b5e6-96231b3b80d8 --- 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 }; }