From: Chris Lattner Date: Fri, 12 Nov 2004 22:42:57 +0000 (+0000) Subject: Simplify handling of constant initializers X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=44c94b96710a653e467dbf8d34ce9540ff66a1a0;p=oota-llvm.git Simplify handling of constant initializers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17696 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp index 2c6cf7e91ad..33ed896a1e7 100644 --- a/lib/Transforms/Utils/LowerInvoke.cpp +++ b/lib/Transforms/Utils/LowerInvoke.cpp @@ -55,7 +55,6 @@ namespace { // Used for both models. Function *WriteFn; Function *AbortFn; - Constant *AbortMessageInit; Value *AbortMessage; unsigned AbortMessageLength; @@ -120,24 +119,18 @@ bool LowerInvoke::doInitialization(Module &M) { LongJmpFn = M.getOrInsertFunction("llvm.longjmp", Type::VoidTy, PointerType::get(JmpBufTy), Type::IntTy, 0); - + // The abort message for expensive EH support tells the user that the // program 'unwound' without an 'invoke' instruction. Constant *Msg = ConstantArray::get("ERROR: Exception thrown, but not caught!\n"); AbortMessageLength = Msg->getNumOperands()-1; // don't include \0 - AbortMessageInit = Msg; - - GlobalVariable *MsgGV = M.getGlobalVariable("abort.msg", Msg->getType()); - if (MsgGV && (!MsgGV->hasInitializer() || MsgGV->getInitializer() != Msg)) - MsgGV = 0; - - if (MsgGV) { - std::vector GEPIdx(2, Constant::getNullValue(Type::LongTy)); - AbortMessage = - ConstantExpr::getGetElementPtr(MsgGV, GEPIdx); - } - + + GlobalVariable *MsgGV = new GlobalVariable(Msg->getType(), true, + GlobalValue::InternalLinkage, + Msg, "abortmsg", &M); + std::vector GEPIdx(2, Constant::getNullValue(Type::LongTy)); + AbortMessage = ConstantExpr::getGetElementPtr(MsgGV, GEPIdx); } else { // The abort message for cheap EH support tells the user that EH is not // enabled. @@ -145,17 +138,12 @@ bool LowerInvoke::doInitialization(Module &M) { ConstantArray::get("Exception handler needed, but not enabled. Recompile" " program with -enable-correct-eh-support.\n"); AbortMessageLength = Msg->getNumOperands()-1; // don't include \0 - AbortMessageInit = Msg; - - GlobalVariable *MsgGV = M.getGlobalVariable("abort.msg", Msg->getType()); - if (MsgGV && (!MsgGV->hasInitializer() || MsgGV->getInitializer() != Msg)) - MsgGV = 0; - - if (MsgGV) { - std::vector GEPIdx(2, Constant::getNullValue(Type::LongTy)); - AbortMessage = - ConstantExpr::getGetElementPtr(MsgGV, GEPIdx); - } + + GlobalVariable *MsgGV = new GlobalVariable(Msg->getType(), true, + GlobalValue::InternalLinkage, + Msg, "abortmsg", &M); + std::vector GEPIdx(2, Constant::getNullValue(Type::LongTy)); + AbortMessage = ConstantExpr::getGetElementPtr(MsgGV, GEPIdx); } // We need the 'write' and 'abort' functions for both models. @@ -183,17 +171,6 @@ bool LowerInvoke::doInitialization(Module &M) { void LowerInvoke::writeAbortMessage(Instruction *IB) { if (WriteFn) { - if (!AbortMessage) { - GlobalVariable *MsgGV = new GlobalVariable(AbortMessageInit->getType(), - true, - GlobalValue::InternalLinkage, - AbortMessageInit, "abort.msg", - WriteFn->getParent()); - std::vector GEPIdx(2, Constant::getNullValue(Type::LongTy)); - AbortMessage = - ConstantExpr::getGetElementPtr(MsgGV, GEPIdx); - } - // These are the arguments we WANT... std::vector Args; Args.push_back(ConstantInt::get(Type::IntTy, 2));