diff options
| author | Owen Anderson <resistor@mac.com> | 2009-07-02 17:04:01 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2009-07-02 17:04:01 +0000 |
| commit | 09063cec4e8e9d570b24ec820f337e77d035bff2 (patch) | |
| tree | 534b01c8e4308bae066fedffaf2c03d3a7ada128 | |
| parent | f85afb2591dbfa04251234e60a61aa03ed552b23 (diff) | |
| download | bcm5719-llvm-09063cec4e8e9d570b24ec820f337e77d035bff2.tar.gz bcm5719-llvm-09063cec4e8e9d570b24ec820f337e77d035bff2.zip | |
Use LLVMContext for generating UndefValue constants too!
llvm-svn: 74703
| -rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/AsmParser/LLParser.h | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index a266fa78ce5..6d61f544e25 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -1374,8 +1374,8 @@ LLParser::PerFunctionState::~PerFunctionState() { for (std::map<std::string, std::pair<Value*, LocTy> >::iterator I = ForwardRefVals.begin(), E = ForwardRefVals.end(); I != E; ++I) if (!isa<BasicBlock>(I->second.first)) { - I->second.first->replaceAllUsesWith(UndefValue::get(I->second.first - ->getType())); + I->second.first->replaceAllUsesWith( + P.getContext().getUndef(I->second.first->getType())); delete I->second.first; I->second.first = 0; } @@ -1383,8 +1383,8 @@ LLParser::PerFunctionState::~PerFunctionState() { for (std::map<unsigned, std::pair<Value*, LocTy> >::iterator I = ForwardRefValIDs.begin(), E = ForwardRefValIDs.end(); I != E; ++I) if (!isa<BasicBlock>(I->second.first)) { - I->second.first->replaceAllUsesWith(UndefValue::get(I->second.first - ->getType())); + I->second.first->replaceAllUsesWith( + P.getContext().getUndef(I->second.first->getType())); delete I->second.first; I->second.first = 0; } @@ -2074,12 +2074,12 @@ bool LLParser::ConvertGlobalValIDToValue(const Type *Ty, ValID &ID, if ((!Ty->isFirstClassType() || Ty == Type::LabelTy) && !isa<OpaqueType>(Ty)) return Error(ID.Loc, "invalid type for undef constant"); - V = UndefValue::get(Ty); + V = Context.getUndef(Ty); return false; case ValID::t_EmptyArray: if (!isa<ArrayType>(Ty) || cast<ArrayType>(Ty)->getNumElements() != 0) return Error(ID.Loc, "invalid empty array initializer"); - V = UndefValue::get(Ty); + V = Context.getUndef(Ty); return false; case ValID::t_Zero: // FIXME: LabelTy should not be a first-class type. @@ -2604,7 +2604,7 @@ bool LLParser::ParseRet(Instruction *&Inst, BasicBlock *BB, RVs.push_back(RV); } - RV = UndefValue::get(PFS.getFunction().getReturnType()); + RV = Context.getUndef(PFS.getFunction().getReturnType()); for (unsigned i = 0, e = RVs.size(); i != e; ++i) { Instruction *I = InsertValueInst::Create(RV, RVs[i], i, "mrv"); BB->getInstList().push_back(I); diff --git a/llvm/lib/AsmParser/LLParser.h b/llvm/lib/AsmParser/LLParser.h index ae1d9c7665d..6691f60536e 100644 --- a/llvm/lib/AsmParser/LLParser.h +++ b/llvm/lib/AsmParser/LLParser.h @@ -77,6 +77,8 @@ namespace llvm { Context(m->getContext()), Lex(F, Err), M(m) {} bool Run(); + LLVMContext& getContext() { return Context; } + private: bool Error(LocTy L, const std::string &Msg) const { |

