X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FDwarfEHPrepare.cpp;h=eae78a950d9a64fabe06d97d426aeb6db3f5c750;hb=d1a0b9f13e60483ba64036f599cf2064704e6773;hp=81f8c1b127d76458616d511c65d711a4f2ef718d;hpb=49ab3a626a3e64c91707e899e75c3724f7fbaf23;p=oota-llvm.git diff --git a/lib/CodeGen/DwarfEHPrepare.cpp b/lib/CodeGen/DwarfEHPrepare.cpp index 81f8c1b127d..eae78a950d9 100644 --- a/lib/CodeGen/DwarfEHPrepare.cpp +++ b/lib/CodeGen/DwarfEHPrepare.cpp @@ -16,6 +16,7 @@ #include "llvm/ADT/BitVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/Analysis/CFG.h" +#include "llvm/Analysis/EHPersonalities.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/Function.h" @@ -168,7 +169,7 @@ size_t DwarfEHPrepare::pruneUnreachableResumes( BasicBlock *BB = RI->getParent(); new UnreachableInst(Ctx, RI); RI->eraseFromParent(); - SimplifyCFG(BB, TTI, 1, TLI->getDataLayout()); + SimplifyCFG(BB, TTI, 1); } } Resumes.resize(ResumesLeft); @@ -191,6 +192,11 @@ bool DwarfEHPrepare::InsertUnwindResumeCalls(Function &Fn) { if (Resumes.empty()) return false; + // Check the personality, don't do anything if it's funclet-based. + EHPersonality Pers = classifyEHPersonality(Fn.getPersonalityFn()); + if (isFuncletEHPersonality(Pers)) + return false; + LLVMContext &Ctx = Fn.getContext(); size_t ResumesLeft = pruneUnreachableResumes(Fn, Resumes, CleanupLPads);