[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