[llvm] r198579 - Refactor function that checks that __builtin_returnaddress's argument is constant.
Rafael EspĂndola
rafael.espindola at gmail.com
Fri Jan 17 09:05:41 PST 2014
Can you add test/CodeGen/Generic/builtin-returnaddress-error.ll back now?
On 5 January 2014 16:43, Bill Wendling <isanbard at gmail.com> wrote:
> Author: void
> Date: Sun Jan 5 18:43:20 2014
> New Revision: 198579
>
> URL: http://llvm.org/viewvc/llvm-project?rev=198579&view=rev
> Log:
> 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.
>
> Modified:
> llvm/trunk/include/llvm/Target/TargetLowering.h
> llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
> llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
> llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
> llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp
> llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp
> llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
> llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
> llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp
> llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>
> Modified: llvm/trunk/include/llvm/Target/TargetLowering.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetLowering.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetLowering.h Sun Jan 5 18:43:20 2014
> @@ -2164,6 +2164,10 @@ public:
> return 0;
> }
>
> +
> + bool verifyReturnAddressArgumentIsConstant(SDValue Op,
> + SelectionDAG &DAG) const;
> +
> //===--------------------------------------------------------------------===//
> // Inline Asm Support hooks
> //
>
> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp (original)
> +++ llvm/trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -22,6 +22,7 @@
> #include "llvm/IR/DataLayout.h"
> #include "llvm/IR/DerivedTypes.h"
> #include "llvm/IR/GlobalVariable.h"
> +#include "llvm/IR/LLVMContext.h"
> #include "llvm/MC/MCAsmInfo.h"
> #include "llvm/MC/MCExpr.h"
> #include "llvm/Support/CommandLine.h"
> @@ -2663,3 +2664,14 @@ BuildUDIV(SDNode *N, SelectionDAG &DAG,
> DAG.getConstant(magics.s-1, getShiftAmountTy(NPQ.getValueType())));
> }
> }
> +
> +bool TargetLowering::
> +verifyReturnAddressArgumentIsConstant(SDValue Op, SelectionDAG &DAG) const {
> + if (!isa<ConstantSDNode>(Op.getOperand(0))) {
> + DAG.getContext()->emitError("argument to '__builtin_return_address' must "
> + "be a constant integer");
> + return true;
> + }
> +
> + return false;
> +}
>
> Modified: llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -2132,11 +2132,8 @@ SDValue AArch64TargetLowering::LowerRETU
> 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);
>
> Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -3753,11 +3753,8 @@ SDValue ARMTargetLowering::LowerRETURNAD
> 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);
>
> Modified: llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -982,11 +982,8 @@ HexagonTargetLowering::LowerRETURNADDR(S
> 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);
>
> Modified: llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -1048,11 +1048,8 @@ SDValue MSP430TargetLowering::LowerRETUR
> 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);
>
> Modified: llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -1845,11 +1845,8 @@ lowerFRAMEADDR(SDValue Op, SelectionDAG
>
> 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) &&
>
> Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -7796,11 +7796,8 @@ SDValue PPCTargetLowering::LowerRETURNAD
> 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();
>
> Modified: llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/Sparc/SparcISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -2471,11 +2471,8 @@ static SDValue LowerRETURNADDR(SDValue O
> 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);
>
> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=198579&r1=198578&r2=198579&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sun Jan 5 18:43:20 2014
> @@ -12173,11 +12173,8 @@ SDValue X86TargetLowering::LowerRETURNAD
> 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);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list