diff options
Diffstat (limited to 'contrib/llvm/lib/CodeGen/AsmPrinter/WinException.cpp')
| -rw-r--r-- | contrib/llvm/lib/CodeGen/AsmPrinter/WinException.cpp | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/contrib/llvm/lib/CodeGen/AsmPrinter/WinException.cpp b/contrib/llvm/lib/CodeGen/AsmPrinter/WinException.cpp index 9d7c96a1b8ef..815658bfb637 100644 --- a/contrib/llvm/lib/CodeGen/AsmPrinter/WinException.cpp +++ b/contrib/llvm/lib/CodeGen/AsmPrinter/WinException.cpp @@ -68,7 +68,7 @@ void WinException::beginFunction(const MachineFunction *MF) {    const Function *F = MF->getFunction(); -  shouldEmitMoves = Asm->needsSEHMoves(); +  shouldEmitMoves = Asm->needsSEHMoves() && MF->hasWinCFI();    const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering();    unsigned PerEncoding = TLOF.getPersonalityEncoding(); @@ -94,14 +94,14 @@ void WinException::beginFunction(const MachineFunction *MF) {    // If we're not using CFI, we don't want the CFI or the personality, but we    // might want EH tables if we had EH pads. -  if (!Asm->MAI->usesWindowsCFI() || (!MF->hasWinCFI() && !PerFn)) { +  if (!Asm->MAI->usesWindowsCFI()) {      if (Per == EHPersonality::MSVC_X86SEH && !hasEHFunclets) {        // If this is 32-bit SEH and we don't have any funclets (really invokes),        // make sure we emit the parent offset label. Some unreferenced filter        // functions may still refer to it.        const WinEHFuncInfo &FuncInfo = *MF->getWinEHFuncInfo();        StringRef FLinkageName = -          GlobalValue::getRealLinkageName(MF->getFunction()->getName()); +          GlobalValue::dropLLVMManglingEscape(MF->getFunction()->getName());        emitEHRegistrationOffsetLabel(FuncInfo, FLinkageName);      }      shouldEmitLSDA = hasEHFunclets; @@ -174,7 +174,7 @@ static MCSymbol *getMCSymbolForMBB(AsmPrinter *Asm,    // their funclet entry block's number.    const MachineFunction *MF = MBB->getParent();    const Function *F = MF->getFunction(); -  StringRef FuncLinkageName = GlobalValue::getRealLinkageName(F->getName()); +  StringRef FuncLinkageName = GlobalValue::dropLLVMManglingEscape(F->getName());    MCContext &Ctx = MF->getContext();    StringRef HandlerPrefix = MBB->isCleanupFuncletEntry() ? "dtor" : "catch";    return Ctx.getOrCreateSymbol("?" + HandlerPrefix + "$" + @@ -252,7 +252,7 @@ void WinException::endFunclet() {          !CurrentFuncletEntry->isCleanupFuncletEntry()) {        // If this is a C++ catch funclet (or the parent function),        // emit a reference to the LSDA for the parent function. -      StringRef FuncLinkageName = GlobalValue::getRealLinkageName(F->getName()); +      StringRef FuncLinkageName = GlobalValue::dropLLVMManglingEscape(F->getName());        MCSymbol *FuncInfoXData = Asm->OutContext.getOrCreateSymbol(            Twine("$cppxdata$", FuncLinkageName));        Asm->OutStreamer->EmitValue(create32bitRef(FuncInfoXData), 4); @@ -536,7 +536,7 @@ void WinException::emitCSpecificHandlerTable(const MachineFunction *MF) {    // Emit a label assignment with the SEH frame offset so we can use it for    // llvm.x86.seh.recoverfp.    StringRef FLinkageName = -      GlobalValue::getRealLinkageName(MF->getFunction()->getName()); +      GlobalValue::dropLLVMManglingEscape(MF->getFunction()->getName());    MCSymbol *ParentFrameOffset =        Ctx.getOrCreateParentFrameOffsetSymbol(FLinkageName);    const MCExpr *MCOffset = @@ -635,7 +635,7 @@ void WinException::emitCXXFrameHandler3Table(const MachineFunction *MF) {    auto &OS = *Asm->OutStreamer;    const WinEHFuncInfo &FuncInfo = *MF->getWinEHFuncInfo(); -  StringRef FuncLinkageName = GlobalValue::getRealLinkageName(F->getName()); +  StringRef FuncLinkageName = GlobalValue::dropLLVMManglingEscape(F->getName());    SmallVector<std::pair<const MCExpr *, int>, 4> IPToStateTable;    MCSymbol *FuncInfoXData = nullptr; @@ -942,7 +942,7 @@ void WinException::emitEHRegistrationOffsetLabel(const WinEHFuncInfo &FuncInfo,  void WinException::emitExceptHandlerTable(const MachineFunction *MF) {    MCStreamer &OS = *Asm->OutStreamer;    const Function *F = MF->getFunction(); -  StringRef FLinkageName = GlobalValue::getRealLinkageName(F->getName()); +  StringRef FLinkageName = GlobalValue::dropLLVMManglingEscape(F->getName());    bool VerboseAsm = OS.isVerboseAsm();    auto AddComment = [&](const Twine &Comment) {  | 
