[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