From: Anders Carlsson Date: Mon, 27 Jul 2009 05:54:15 +0000 (+0000) Subject: Enable the new constant struct builder by default. The old code is still in place... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8dca3b3d09ff48b3ec528cd603f835f120c4d9ee;p=clang Enable the new constant struct builder by default. The old code is still in place but will be removed shortly. The new struct builder works on big endian systems. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77185 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp index b335e90faf..a64fb09eca 100644 --- a/lib/CodeGen/CGExprConstant.cpp +++ b/lib/CodeGen/CGExprConstant.cpp @@ -506,9 +506,10 @@ public: } llvm::Constant *EmitStructInitialization(InitListExpr *ILE) { - // FIXME: Use the returned struct when the builder works well enough. - ConstStructBuilder::BuildStruct(CGM, CGF, ILE); - + return ConstStructBuilder::BuildStruct(CGM, CGF, ILE); + + // FIXME: Remove the old struct builder once we're sure that the new one + // works well enough! const llvm::StructType *SType = cast(ConvertType(ILE->getType())); RecordDecl *RD = ILE->getType()->getAsRecordType()->getDecl(); diff --git a/test/CodeGen/PR3613-static-decl.c b/test/CodeGen/PR3613-static-decl.c index 365b9b2be0..44de0dc0d7 100644 --- a/test/CodeGen/PR3613-static-decl.c +++ b/test/CodeGen/PR3613-static-decl.c @@ -1,5 +1,5 @@ // RUN: clang-cc -triple i386-unknown-unknown -emit-llvm -o %t %s && -// RUN: grep '@g0 = internal global .struct.s0 <{ i32 3 }>' %t | count 1 +// RUN: grep '@g0 = internal global %. { i32 3 }' %t | count 1 struct s0 { int a; diff --git a/test/CodeGen/const-init.c b/test/CodeGen/const-init.c index 0364cc153f..2ee6f0d719 100644 --- a/test/CodeGen/const-init.c +++ b/test/CodeGen/const-init.c @@ -59,7 +59,7 @@ long g11() { static char g12_tmp; long g12 = (long) &g12_tmp; -// RUN: grep '@g13 = global \[1 x .struct.g13_s0\] \[.struct.g13_s0 <{ i32 ptrtoint (i8\* @g12_tmp to i32) }>\]' %t && +// RUN: grep '@g13 = global %. <{ %. { i32 ptrtoint (i8\* @g12_tmp to i32) } }>' %t && struct g13_s0 { long a; }; @@ -85,7 +85,7 @@ void g18(void) { static int *p[] = { &g19 }; } -// RUN: grep '@g20.l0 = internal global .struct.g20_s1 <{ .struct.g20_s0\* null, .struct.g20_s0\*\* getelementptr (.struct.g20_s1\* @g20.l0, i32 0, i32 0) }>' %t && +// RUN: grep '@g20.l0 = internal global %. { .struct.g20_s0\* null, .struct.g20_s0\*\* getelementptr (.struct.g20_s1\* bitcast (%.\* @g20.l0 to .struct.g20_s1\*), i32 0, i32 0) }' %t && struct g20_s0; struct g20_s1 { diff --git a/test/CodeGen/designated-initializers.c b/test/CodeGen/designated-initializers.c index 4669339286..f20bc782b6 100644 --- a/test/CodeGen/designated-initializers.c +++ b/test/CodeGen/designated-initializers.c @@ -1,5 +1,6 @@ -// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm -o - | grep "<{ i8\* null, i32 1024 }>" && -// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm -o - | grep "i32 0, i32 22" +// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm -o %t && +// RUN: grep "{ i8\* null, i32 1024 }" %t && +// RUN: grep "i32 0, i32 22" %t struct foo { void *a;