Die obviously, rather than obscurely deep down in make_decl_llvm. I hit this with the Ada f-e: it was replacing fields in a record type without updating constructors, with the result that the constructor element fields did not belong to the constructor type, and thus were not laid out when the type was.
Ciao, Duncan.
Index: gcc.llvm.master/gcc/llvm-convert.cpp =================================================================== --- gcc.llvm.master.orig/gcc/llvm-convert.cpp 2007-02-28 11:00:24.000000000 +0100 +++ gcc.llvm.master/gcc/llvm-convert.cpp 2007-02-28 11:00:48.000000000 +0100 @@ -5110,6 +5110,7 @@ ProcessBitFieldInitialization(Field, Val, STy, ResultElts); } else { // If not, things are much simpler. + assert(DECL_LLVM_SET_P(Field) && "Struct not laid out for LLVM?"); unsigned FieldNo = cast<ConstantInt>(DECL_LLVM(Field))->getZExtValue(); // If this is an initialization of a global that ends with a variable
_______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits