Index: llvm/lib/Target/ARM/ARMISelLowering.h =================================================================== --- llvm/lib/Target/ARM/ARMISelLowering.h +++ llvm/lib/Target/ARM/ARMISelLowering.h @@ -309,6 +309,8 @@ void AdjustInstrPostInstrSelection(MachineInstr &MI, SDNode *Node) const override; + SDValue unwrapAddress(SDValue N) const override; + SDValue PerformCMOVCombine(SDNode *N, SelectionDAG &DAG) const; SDValue PerformBRCONDCombine(SDNode *N, SelectionDAG &DAG) const; SDValue PerformCMOVToBFICombine(SDNode *N, SelectionDAG &DAG) const; Index: llvm/lib/Target/ARM/ARMISelLowering.cpp =================================================================== --- llvm/lib/Target/ARM/ARMISelLowering.cpp +++ llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -9656,6 +9656,14 @@ MO.setIsDef(true); } +SDValue ARMTargetLowering::unwrapAddress(SDValue N) const { + if (N->getOpcode() == ARMISD::Wrapper || + N->getOpcode() == ARMISD::WrapperPIC || + N->getOpcode() == ARMISD::WrapperJT) + return N->getOperand(0); + return N; +} + //===----------------------------------------------------------------------===// // ARM Optimization Hooks //===----------------------------------------------------------------------===//