[PATCH] D43383: [llvm-mc] - Produce R_X86_64_PLT32 for "call/jmp foo".
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 19 10:02:01 PST 2018
George Rimar via Phabricator <reviews at reviews.llvm.org> writes:
> +bool X86MCCodeEmitter::isPCRel32Branch(const MCInst &MI) const {
> + unsigned Opcode = MI.getOpcode();
> + const MCInstrDesc &Desc = MCII.get(Opcode);
> + if ((Opcode != X86::CALL64pcrel32 && Opcode != X86::JMP_4) ||
> + getImmFixupKind(Desc.TSFlags) != FK_PCRel_4)
> + return false;
> +
> + unsigned CurOp = X86II::getOperandBias(Desc);
> + const MCOperand &Op = MI.getOperand(CurOp);
> + if (!Op.isExpr() || Op.getExpr()->getKind() != MCExpr::SymbolRef)
> + return false;
> +
> + const MCSymbolRefExpr *Ref =
> + static_cast<const MCSymbolRefExpr *>(Op.getExpr());
> + return Ref->getKind() == MCSymbolRefExpr::VK_None;
> +}
Can you use a dyn_cast instead of static_cast and move it earlier?
Something like
if (!Op.isExpr())
return false;
const MCSymbolRefExpr *Ref =
dyn_cast<const MCSymbolRefExpr *>(Op.getExpr());
return Ref && Ref->getKind() == MCSymbolRefExpr::VK_None;
LGTM with that nit if possible.
Cheers,
Rafael
More information about the llvm-commits
mailing list