]> granicus.if.org Git - clang/commitdiff
Enable the new constant struct builder by default. The old code is still in place...
authorAnders Carlsson <andersca@mac.com>
Mon, 27 Jul 2009 05:54:15 +0000 (05:54 +0000)
committerAnders Carlsson <andersca@mac.com>
Mon, 27 Jul 2009 05:54:15 +0000 (05:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77185 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGExprConstant.cpp
test/CodeGen/PR3613-static-decl.c
test/CodeGen/const-init.c
test/CodeGen/designated-initializers.c

index b335e90faf16ea0e10e56a2df00589bf797f3bec..a64fb09eca17d3e6cc234b3200a913a1a064acbf 100644 (file)
@@ -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<llvm::StructType>(ConvertType(ILE->getType()));
     RecordDecl *RD = ILE->getType()->getAsRecordType()->getDecl();
index 365b9b2be05e60b8783f35aafe5c54fa8ea9e27e..44de0dc0d7d8b8fc90b451dbeed0d86b74e01ed0 100644 (file)
@@ -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;
index 0364cc153ff867ae8990c487779fee8b4eebae52..2ee6f0d71978715ab63fb6e310b776ff00c8ca01 100644 (file)
@@ -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 {
index 466933928665c71dd869ce1d1566b12d7a1e4221..f20bc782b6acd315fdec7506346087f1d1ab3d06 100644 (file)
@@ -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;