diff options
author | Bill Wendling <isanbard@gmail.com> | 2014-01-06 00:43:20 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2014-01-06 00:43:20 +0000 |
commit | 4644d79871d5c337608dff99816ddbdc40cb1175 (patch) | |
tree | c48572a9ed99ae6272ea444c0430eacf984e9b69 /lib/Target | |
parent | 7f1068198534f563fa7640056ec1d595e6662c09 (diff) | |
download | llvm-4644d79871d5c337608dff99816ddbdc40cb1175.tar.gz llvm-4644d79871d5c337608dff99816ddbdc40cb1175.tar.bz2 llvm-4644d79871d5c337608dff99816ddbdc40cb1175.tar.xz |
Refactor function that checks that __builtin_returnaddress's argument is constant.
This moves the check up into the parent class so that all targets can use it
without having to copy (and keep in sync) the same error message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198579 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/AArch64/AArch64ISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/Hexagon/HexagonISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/MSP430/MSP430ISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/Mips/MipsISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/Sparc/SparcISelLowering.cpp | 5 | ||||
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 5 |
8 files changed, 8 insertions, 32 deletions
diff --git a/lib/Target/AArch64/AArch64ISelLowering.cpp b/lib/Target/AArch64/AArch64ISelLowering.cpp index b4bd0194ee..c8bd592371 100644 --- a/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -2132,11 +2132,8 @@ SDValue AArch64TargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) co MachineFrameInfo *MFI = MF.getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } EVT VT = Op.getValueType(); SDLoc dl(Op); diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index ef165dc06e..841b2ab2fd 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -3753,11 +3753,8 @@ SDValue ARMTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const{ MachineFrameInfo *MFI = MF.getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } EVT VT = Op.getValueType(); SDLoc dl(Op); diff --git a/lib/Target/Hexagon/HexagonISelLowering.cpp b/lib/Target/Hexagon/HexagonISelLowering.cpp index e1e954afc5..1d82285317 100644 --- a/lib/Target/Hexagon/HexagonISelLowering.cpp +++ b/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -982,11 +982,8 @@ HexagonTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const { MachineFrameInfo *MFI = MF.getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } EVT VT = Op.getValueType(); SDLoc dl(Op); diff --git a/lib/Target/MSP430/MSP430ISelLowering.cpp b/lib/Target/MSP430/MSP430ISelLowering.cpp index a1a7c5e08e..3a9d2698aa 100644 --- a/lib/Target/MSP430/MSP430ISelLowering.cpp +++ b/lib/Target/MSP430/MSP430ISelLowering.cpp @@ -1048,11 +1048,8 @@ SDValue MSP430TargetLowering::LowerRETURNADDR(SDValue Op, MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } unsigned Depth = cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue(); SDLoc dl(Op); diff --git a/lib/Target/Mips/MipsISelLowering.cpp b/lib/Target/Mips/MipsISelLowering.cpp index 220b1c4a35..40d385e46b 100644 --- a/lib/Target/Mips/MipsISelLowering.cpp +++ b/lib/Target/Mips/MipsISelLowering.cpp @@ -1845,11 +1845,8 @@ lowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const { SDValue MipsTargetLowering::lowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const { - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } // check the depth assert((cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue() == 0) && diff --git a/lib/Target/PowerPC/PPCISelLowering.cpp b/lib/Target/PowerPC/PPCISelLowering.cpp index 630385cc7c..2e87681ab9 100644 --- a/lib/Target/PowerPC/PPCISelLowering.cpp +++ b/lib/Target/PowerPC/PPCISelLowering.cpp @@ -7796,11 +7796,8 @@ SDValue PPCTargetLowering::LowerRETURNADDR(SDValue Op, MachineFrameInfo *MFI = MF.getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } SDLoc dl(Op); unsigned Depth = cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue(); diff --git a/lib/Target/Sparc/SparcISelLowering.cpp b/lib/Target/Sparc/SparcISelLowering.cpp index 5442e5704c..9c83787395 100644 --- a/lib/Target/Sparc/SparcISelLowering.cpp +++ b/lib/Target/Sparc/SparcISelLowering.cpp @@ -2471,11 +2471,8 @@ static SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG, MachineFrameInfo *MFI = MF.getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (TLI.verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } EVT VT = Op.getValueType(); SDLoc dl(Op); diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 005efbb60d..38d7cb678d 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -12173,11 +12173,8 @@ SDValue X86TargetLowering::LowerRETURNADDR(SDValue Op, MachineFrameInfo *MFI = DAG.getMachineFunction().getFrameInfo(); MFI->setReturnAddressIsTaken(true); - if (!isa<ConstantSDNode>(Op.getOperand(0))) { - DAG.getContext()->emitError("argument to '__builtin_return_address' must " - "be a constant integer"); + if (verifyReturnAddressArgumentIsConstant(Op, DAG)) return SDValue(); - } unsigned Depth = cast<ConstantSDNode>(Op.getOperand(0))->getZExtValue(); SDLoc dl(Op); |