[llvm-commits] [llvm-gcc-4.2] r134723 - /llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
Chris Lattner
sabre at nondot.org
Fri Jul 8 12:58:16 PDT 2011
Author: lattner
Date: Fri Jul 8 14:58:16 2011
New Revision: 134723
URL: http://llvm.org/viewvc/llvm-project?rev=134723&view=rev
Log:
fix failure on llvm-gcc-x86_64-darwin10-cross-i686-linux buildbot,
void and function types cannot be in a struct, so wrap them with a pointer.
Modified:
llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=134723&r1=134722&r2=134723&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Fri Jul 8 14:58:16 2011
@@ -139,7 +139,11 @@
const StructType *STy = cast<StructType>(V->getType()->getElementType());
- LTypes.insert(LTypes.end(), STy->subtype_begin(), STy->subtype_end());
+ for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i)
+ if (const PointerType *PTy = dyn_cast<PointerType>(STy->getElementType(i)))
+ LTypes.push_back(PTy->getElementType());
+ else
+ LTypes.push_back(Type::getVoidTy(Context));
// Now, llvm.pch.types value is not required so remove it from the symbol
// table.
@@ -153,10 +157,18 @@
if (LTypes.empty())
return;
- const StructType *AggregateTy = StructType::get(Context, LTypes);
+ // Convert the LTypes list to a list of pointers.
+ std::vector<const Type*> PTys;
+ for (unsigned i = 0, e = LTypes.size(); i != e; ++i) {
+ // Cannot form pointer to void. Use i8 as a sentinel.
+ if (LTypes[i]->isVoidTy())
+ PTys.push_back(Type::getInt8Ty(Context));
+ else
+ PTys.push_back(LTypes[i]->getPointerTo());
+ }
// Create variable to hold this string table.
- (void)new GlobalVariable(*TheModule, AggregateTy, true,
+ (void)new GlobalVariable(*TheModule, StructType::get(Context, PTys), true,
GlobalValue::ExternalLinkage,
/*noinit*/0, "llvm.pch.types");
}
More information about the llvm-commits
mailing list