mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Inline the postResolveValues method. It was poorly named anyway
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8976 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1f9bcd3988
commit
6e44802ec0
@ -176,33 +176,6 @@ Constant *BytecodeParser::getConstantValue(const Type *Ty, unsigned Slot) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BytecodeParser::postResolveValues(ValueTable &ValTab) {
|
|
||||||
while (!ValTab.empty()) {
|
|
||||||
ValueList &VL = *ValTab.back();
|
|
||||||
ValTab.pop_back();
|
|
||||||
|
|
||||||
while (!VL.empty()) {
|
|
||||||
Value *V = VL.back();
|
|
||||||
unsigned IDNumber = getValueIDNumberFromPlaceHolder(V);
|
|
||||||
VL.pop_back();
|
|
||||||
|
|
||||||
Value *NewVal = getValue(V->getType(), IDNumber, false);
|
|
||||||
if (NewVal == 0)
|
|
||||||
throw std::string("Unresolvable reference found: <" +
|
|
||||||
V->getType()->getDescription() + ">:" +
|
|
||||||
utostr(IDNumber) + ".");
|
|
||||||
|
|
||||||
// Fixup all of the uses of this placeholder def...
|
|
||||||
V->replaceAllUsesWith(NewVal);
|
|
||||||
|
|
||||||
// Now that all the uses are gone, delete the placeholder...
|
|
||||||
// If we couldn't find a def (error case), then leak a little
|
|
||||||
delete V; // memory, 'cause otherwise we can't remove all uses!
|
|
||||||
}
|
|
||||||
delete &VL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::auto_ptr<BasicBlock>
|
std::auto_ptr<BasicBlock>
|
||||||
BytecodeParser::ParseBasicBlock(const unsigned char *&Buf,
|
BytecodeParser::ParseBasicBlock(const unsigned char *&Buf,
|
||||||
const unsigned char *EndBuf) {
|
const unsigned char *EndBuf) {
|
||||||
@ -381,9 +354,31 @@ void BytecodeParser::materializeFunction(Function* F) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check for unresolvable references
|
// Check for unresolvable references
|
||||||
postResolveValues(LateResolveValues);
|
while (!LateResolveValues.empty()) {
|
||||||
|
ValueList &VL = *LateResolveValues.back();
|
||||||
|
LateResolveValues.pop_back();
|
||||||
|
|
||||||
//ResolveReferencesToValue(F, FunctionSlot);
|
while (!VL.empty()) {
|
||||||
|
Value *V = VL.back();
|
||||||
|
unsigned IDNumber = getValueIDNumberFromPlaceHolder(V);
|
||||||
|
VL.pop_back();
|
||||||
|
|
||||||
|
Value *NewVal = getValue(V->getType(), IDNumber, false);
|
||||||
|
if (NewVal == 0)
|
||||||
|
throw std::string("Unresolvable reference found: <" +
|
||||||
|
V->getType()->getDescription() + ">:" +
|
||||||
|
utostr(IDNumber) + ".");
|
||||||
|
|
||||||
|
// Fixup all of the uses of this placeholder def...
|
||||||
|
V->replaceAllUsesWith(NewVal);
|
||||||
|
|
||||||
|
// Now that all the uses are gone, delete the placeholder...
|
||||||
|
// If we couldn't find a def (error case), then leak a little
|
||||||
|
// memory, because otherwise we can't remove all uses!
|
||||||
|
delete V;
|
||||||
|
}
|
||||||
|
delete &VL;
|
||||||
|
}
|
||||||
|
|
||||||
// Clear out function-level types...
|
// Clear out function-level types...
|
||||||
FunctionTypeValues.clear();
|
FunctionTypeValues.clear();
|
||||||
|
@ -77,11 +77,9 @@ public:
|
|||||||
std::cerr << "BytecodeParser instance!\n";
|
std::cerr << "BytecodeParser instance!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
private: // All of this data is transient across calls to ParseBytecode
|
private:
|
||||||
struct ValueList : public User {
|
struct ValueList : public User {
|
||||||
ValueList() : User(Type::TypeTy, Value::TypeVal) {
|
ValueList() : User(Type::TypeTy, Value::TypeVal) {}
|
||||||
}
|
|
||||||
~ValueList() {}
|
|
||||||
|
|
||||||
// vector compatibility methods
|
// vector compatibility methods
|
||||||
unsigned size() const { return getNumOperands(); }
|
unsigned size() const { return getNumOperands(); }
|
||||||
@ -185,7 +183,6 @@ private:
|
|||||||
|
|
||||||
int insertValue(Value *V, ValueTable &Table); // -1 = Failure
|
int insertValue(Value *V, ValueTable &Table); // -1 = Failure
|
||||||
void setValueTo(ValueTable &D, unsigned Slot, Value *V);
|
void setValueTo(ValueTable &D, unsigned Slot, Value *V);
|
||||||
void postResolveValues(ValueTable &ValTab);
|
|
||||||
|
|
||||||
unsigned getTypeSlot(const Type *Ty);
|
unsigned getTypeSlot(const Type *Ty);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user