mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 19:12:56 +02:00
X86: Simplify X86ISD::Wrapper operand checks. NFCI.
We only ever create TargetConstantPool, TargetJumpTable, TargetExternalSymbol, TargetGlobalAddress, TargetGlobalTLSAddress, MCSymbol and TargetBlockAddress nodes as operands of X86ISD::Wrapper nodes, so we can remove one check and invert the other. Also update the documentation comment for X86ISD::Wrapper. Differential Revision: https://reviews.llvm.org/D26731 llvm-svn: 287160
This commit is contained in:
parent
e106f9e78a
commit
b5e975bf79
@ -1564,12 +1564,9 @@ bool X86DAGToDAGISel::selectMOV64Imm32(SDValue N, SDValue &Imm) {
|
||||
"Unexpected node type for MOV32ri64");
|
||||
N = N.getOperand(0);
|
||||
|
||||
if (N->getOpcode() != ISD::TargetConstantPool &&
|
||||
N->getOpcode() != ISD::TargetJumpTable &&
|
||||
N->getOpcode() != ISD::TargetGlobalAddress &&
|
||||
N->getOpcode() != ISD::TargetExternalSymbol &&
|
||||
N->getOpcode() != ISD::MCSymbol &&
|
||||
N->getOpcode() != ISD::TargetBlockAddress)
|
||||
// At least GNU as does not accept 'movl' for TPOFF relocations.
|
||||
// FIXME: We could use 'movl' when we know we are targeting MC.
|
||||
if (N->getOpcode() == ISD::TargetGlobalTLSAddress)
|
||||
return false;
|
||||
|
||||
Imm = N;
|
||||
@ -1715,16 +1712,8 @@ bool X86DAGToDAGISel::selectRelocImm(SDValue N, SDValue &Op) {
|
||||
if (N.getOpcode() != X86ISD::Wrapper)
|
||||
return false;
|
||||
|
||||
unsigned Opc = N.getOperand(0)->getOpcode();
|
||||
if (Opc == ISD::TargetConstantPool || Opc == ISD::TargetJumpTable ||
|
||||
Opc == ISD::TargetExternalSymbol || Opc == ISD::TargetGlobalAddress ||
|
||||
Opc == ISD::TargetGlobalTLSAddress || Opc == ISD::MCSymbol ||
|
||||
Opc == ISD::TargetBlockAddress) {
|
||||
Op = N.getOperand(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
Op = N.getOperand(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool X86DAGToDAGISel::tryFoldLoad(SDNode *P, SDValue N,
|
||||
|
@ -139,8 +139,9 @@ namespace llvm {
|
||||
/// at function entry, used for PIC code.
|
||||
GlobalBaseReg,
|
||||
|
||||
/// A wrapper node for TargetConstantPool,
|
||||
/// TargetExternalSymbol, and TargetGlobalAddress.
|
||||
/// A wrapper node for TargetConstantPool, TargetJumpTable,
|
||||
/// TargetExternalSymbol, TargetGlobalAddress, TargetGlobalTLSAddress,
|
||||
/// MCSymbol and TargetBlockAddress.
|
||||
Wrapper,
|
||||
|
||||
/// Special wrapper used under X86-64 PIC mode for RIP
|
||||
|
Loading…
Reference in New Issue
Block a user