[llvm-commits] [llvm-gcc-4.2] r47859 - /llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp

Chris Lattner sabre at nondot.org
Mon Mar 3 13:59:25 PST 2008


Author: lattner
Date: Mon Mar  3 15:59:25 2008
New Revision: 47859

URL: http://llvm.org/viewvc/llvm-project?rev=47859&view=rev
Log:
Fix test/CFrontend/2008-03-03-CtorAttrType.c by forcing all ctor functions to have
the same type.

Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=47859&r1=47858&r2=47859&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Mon Mar  3 15:59:25 2008
@@ -476,9 +476,17 @@
   std::vector<Constant*> InitList;
   std::vector<Constant*> StructInit;
   StructInit.resize(2);
+  
+  const Type *FPTy = FunctionType::get(Type::VoidTy, std::vector<const Type*>(),
+                                       false);
+  FPTy = PointerType::getUnqual(FPTy);
+  
   for (unsigned i = 0, e = Tors.size(); i != e; ++i) {
     StructInit[0] = ConstantInt::get(Type::Int32Ty, Tors[i].second);
-    StructInit[1] = Tors[i].first;
+    
+    // __attribute__(constructor) can be on a function with any type.  Make sure
+    // the pointer is void()*.
+    StructInit[1] = ConstantExpr::getBitCast(Tors[i].first, FPTy);
     InitList.push_back(ConstantStruct::get(StructInit, false));
   }
   Constant *Array =





More information about the llvm-commits mailing list