diff options
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 15 |
4 files changed, 18 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 1641c3e..c72b6e8 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -3194,7 +3194,7 @@ void AsmPrinter::emitJumpTableSizesSection(const MachineJumpTableInfo &MJTI, return; if (isElf) { - MCSymbolELF *LinkedToSym = dyn_cast<MCSymbolELF>(CurrentFnSym); + auto *LinkedToSym = static_cast<MCSymbolELF *>(CurrentFnSym); int Flags = F.hasComdat() ? static_cast<int>(ELF::SHF_GROUP) : 0; JumpTableSizesSection = OutContext.getELFSection( @@ -4702,7 +4702,7 @@ void AsmPrinter::emitXRayTable() { const Triple &TT = TM.getTargetTriple(); // Use PC-relative addresses on all targets. if (TT.isOSBinFormatELF()) { - auto LinkedToSym = cast<MCSymbolELF>(CurrentFnSym); + auto LinkedToSym = static_cast<const MCSymbolELF *>(CurrentFnSym); auto Flags = ELF::SHF_ALLOC | ELF::SHF_LINK_ORDER; StringRef GroupName; if (F.hasComdat()) { @@ -4825,7 +4825,7 @@ void AsmPrinter::emitPatchableFunctionEntries() { Flags |= ELF::SHF_GROUP; GroupName = F.getComdat()->getName(); } - LinkedToSym = cast<MCSymbolELF>(CurrentFnSym); + LinkedToSym = static_cast<const MCSymbolELF *>(CurrentFnSym); } OutStreamer->switchSection(OutContext.getELFSection( SectionName, ELF::SHT_PROGBITS, Flags, 0, GroupName, F.hasComdat(), diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp index 08ed78e..a7491a2 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp @@ -230,7 +230,7 @@ void DIEHash::hashBlockData(const DIE::const_value_range &Values) { "Base types referenced from DW_OP_convert should have a name"); hashNestedType(C, Name); } else - Hash.update((uint64_t)V.getDIEInteger().getValue()); + Hash.update(V.getDIEInteger().getValue()); } // Hash the contents of a loclistptr class. diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 5577a7d..f9d7e76 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -508,7 +508,8 @@ void DwarfCompileUnit::addWasmRelocBaseGlobal(DIELoc *Loc, StringRef GlobalName, // don't want to depend on target specific headers in this code? const unsigned TI_GLOBAL_RELOC = 3; unsigned PointerSize = Asm->getDataLayout().getPointerSize(); - auto *Sym = cast<MCSymbolWasm>(Asm->GetExternalSymbolSymbol(GlobalName)); + auto *Sym = + static_cast<MCSymbolWasm *>(Asm->GetExternalSymbolSymbol(GlobalName)); // FIXME: this repeats what WebAssemblyMCInstLower:: // GetExternalSymbolSymbol does, since if there's no code that // refers to this symbol, we have to set it here. diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 7188833..5ae2d2a 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -940,14 +940,23 @@ void DwarfDebug::constructCallSiteEntryDIEs(const DISubprogram &SP, // In the case of an indirect call find the register that holds // the callee. const MachineOperand &CalleeOp = TII->getCalleeOperand(MI); - if (!CalleeOp.isGlobal() && - (!CalleeOp.isReg() || !CalleeOp.getReg().isPhysical())) + bool PhysRegCalleeOperand = + CalleeOp.isReg() && CalleeOp.getReg().isPhysical(); + // Hack: WebAssembly CALL instructions have MCInstrDesc that does not + // describe the call target operand. + if (CalleeOp.getOperandNo() < MI.getDesc().operands().size()) { + const MCOperandInfo &MCOI = + MI.getDesc().operands()[CalleeOp.getOperandNo()]; + PhysRegCalleeOperand = + PhysRegCalleeOperand && MCOI.OperandType == MCOI::OPERAND_REGISTER; + } + if (!CalleeOp.isGlobal() && !PhysRegCalleeOperand) continue; unsigned CallReg = 0; const DISubprogram *CalleeSP = nullptr; const Function *CalleeDecl = nullptr; - if (CalleeOp.isReg()) { + if (PhysRegCalleeOperand) { CallReg = CalleeOp.getReg(); if (!CallReg) continue; |