From: Chris Lattner Date: Tue, 21 Oct 2003 17:39:59 +0000 (+0000) Subject: Fix problem which effected linking apache X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=389dbfbd8b0e49968a3ddaee90c3486b4740f146;p=oota-llvm.git Fix problem which effected linking apache git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9335 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Bytecode/Writer/SlotCalculator.cpp b/lib/Bytecode/Writer/SlotCalculator.cpp index f527b1838f3..7b4a6da1790 100644 --- a/lib/Bytecode/Writer/SlotCalculator.cpp +++ b/lib/Bytecode/Writer/SlotCalculator.cpp @@ -174,8 +174,12 @@ void SlotCalculator::incorporateFunction(const Function *F) { SC_DEBUG("Inserting Instructions:\n"); // Add all of the instructions to the type planes... - for_each(inst_begin(F), inst_end(F), - bind_obj(this, &SlotCalculator::getOrCreateSlot)); + for (Function::const_iterator BB = F->begin(), E = F->end(); BB != E; ++BB) + for (BasicBlock::const_iterator I = BB->begin(), E = BB->end(); I!=E; ++I) { + getOrCreateSlot(I); + //if (const VANextInst *VAN = dyn_cast(I)) + // getOrCreateSlot(VAN->getArgType()); + } if (!IgnoreNamedNodes) { SC_DEBUG("Inserting SymbolTable values:\n"); diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index a1ebd917376..b755c6f913a 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -268,7 +268,7 @@ ConstantStruct::ConstantStruct(const StructType *T, Operands.reserve(V.size()); for (unsigned i = 0, e = V.size(); i != e; ++i) { assert((V[i]->getType() == ETypes[i] || - (ETypes[i]->isAbstract() && + ((ETypes[i]->isAbstract() || V[i]->getType()->isAbstract()) && ETypes[i]->getPrimitiveID()==V[i]->getType()->getPrimitiveID())) && "Initializer for struct element doesn't match struct element type!"); Operands.push_back(Use(V[i], this)); diff --git a/lib/VMCore/SlotCalculator.cpp b/lib/VMCore/SlotCalculator.cpp index f527b1838f3..7b4a6da1790 100644 --- a/lib/VMCore/SlotCalculator.cpp +++ b/lib/VMCore/SlotCalculator.cpp @@ -174,8 +174,12 @@ void SlotCalculator::incorporateFunction(const Function *F) { SC_DEBUG("Inserting Instructions:\n"); // Add all of the instructions to the type planes... - for_each(inst_begin(F), inst_end(F), - bind_obj(this, &SlotCalculator::getOrCreateSlot)); + for (Function::const_iterator BB = F->begin(), E = F->end(); BB != E; ++BB) + for (BasicBlock::const_iterator I = BB->begin(), E = BB->end(); I!=E; ++I) { + getOrCreateSlot(I); + //if (const VANextInst *VAN = dyn_cast(I)) + // getOrCreateSlot(VAN->getArgType()); + } if (!IgnoreNamedNodes) { SC_DEBUG("Inserting SymbolTable values:\n");