[llvm] DAG: Remove verifyReturnAddressArgumentIsConstant (PR #147240)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 6 23:15:19 PDT 2025
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/147240
The intrinsic argument is already marked with immarg so non-constant
values are rejected by the IR verifier.
>From 86b107cae53560350fd6bbb667bbb994063ed301 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Mon, 7 Jul 2025 15:07:23 +0900
Subject: [PATCH] DAG: Remove verifyReturnAddressArgumentIsConstant
The intrinsic argument is already marked with immarg so non-constant
values are rejected by the IR verifier.
---
llvm/include/llvm/CodeGen/TargetLowering.h | 3 ---
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp | 11 -----------
llvm/lib/Target/ARM/ARMISelLowering.cpp | 3 ---
llvm/lib/Target/CSKY/CSKYISelLowering.cpp | 3 ---
llvm/lib/Target/Hexagon/HexagonISelLowering.cpp | 3 ---
llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp | 3 ---
llvm/lib/Target/MSP430/MSP430ISelLowering.cpp | 3 ---
llvm/lib/Target/Mips/MipsISelLowering.cpp | 3 ---
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 3 ---
llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 3 ---
llvm/lib/Target/Sparc/SparcISelLowering.cpp | 3 ---
llvm/lib/Target/SystemZ/SystemZISelLowering.cpp | 3 ---
llvm/lib/Target/VE/VEISelLowering.cpp | 3 ---
.../Target/WebAssembly/WebAssemblyISelLowering.cpp | 3 ---
llvm/lib/Target/X86/X86ISelLowering.cpp | 3 ---
15 files changed, 53 deletions(-)
diff --git a/llvm/include/llvm/CodeGen/TargetLowering.h b/llvm/include/llvm/CodeGen/TargetLowering.h
index b07937c11b024..420f1d5fb20ca 100644
--- a/llvm/include/llvm/CodeGen/TargetLowering.h
+++ b/llvm/include/llvm/CodeGen/TargetLowering.h
@@ -5083,9 +5083,6 @@ class LLVM_ABI TargetLowering : public TargetLoweringBase {
return nullptr;
}
- bool verifyReturnAddressArgumentIsConstant(SDValue Op,
- SelectionDAG &DAG) const;
-
//===--------------------------------------------------------------------===//
// Inline Asm Support hooks
//
diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
index 000f8cc6786a5..88179d9591af9 100644
--- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
@@ -7412,17 +7412,6 @@ TargetLowering::prepareSREMEqFold(EVT SETCCVT, SDValue REMNode,
return Blended;
}
-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;
-}
-
SDValue TargetLowering::getSqrtInputTest(SDValue Op, SelectionDAG &DAG,
const DenormalMode &Mode) const {
SDLoc DL(Op);
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 2d73725291d11..eb3c741c6ded2 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -6187,9 +6187,6 @@ SDValue ARMTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const{
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
EVT VT = Op.getValueType();
SDLoc dl(Op);
unsigned Depth = Op.getConstantOperandVal(0);
diff --git a/llvm/lib/Target/CSKY/CSKYISelLowering.cpp b/llvm/lib/Target/CSKY/CSKYISelLowering.cpp
index 34221cc699589..707017106e61d 100644
--- a/llvm/lib/Target/CSKY/CSKYISelLowering.cpp
+++ b/llvm/lib/Target/CSKY/CSKYISelLowering.cpp
@@ -1207,9 +1207,6 @@ SDValue CSKYTargetLowering::LowerRETURNADDR(SDValue Op,
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
EVT VT = Op.getValueType();
SDLoc dl(Op);
unsigned Depth = Op.getConstantOperandVal(0);
diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
index e7d0ec6ee0fe5..00925ed42fcd4 100644
--- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
@@ -1183,9 +1183,6 @@ HexagonTargetLowering::LowerRETURNADDR(SDValue Op, SelectionDAG &DAG) const {
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
EVT VT = Op.getValueType();
SDLoc dl(Op);
unsigned Depth = Op.getConstantOperandVal(0);
diff --git a/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp b/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
index 7dae4d30d31be..602ce240814e9 100644
--- a/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+++ b/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
@@ -2607,9 +2607,6 @@ SDValue LoongArchTargetLowering::lowerFRAMEADDR(SDValue Op,
SDValue LoongArchTargetLowering::lowerRETURNADDR(SDValue Op,
SelectionDAG &DAG) const {
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
// Currently only support lowering return address for current frame.
if (Op.getConstantOperandVal(0) != 0) {
DAG.getContext()->emitError(
diff --git a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
index fd31dbad41fd1..32b759ac88f56 100644
--- a/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
+++ b/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp
@@ -1142,9 +1142,6 @@ SDValue MSP430TargetLowering::LowerRETURNADDR(SDValue Op,
MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
unsigned Depth = Op.getConstantOperandVal(0);
SDLoc dl(Op);
EVT PtrVT = Op.getValueType();
diff --git a/llvm/lib/Target/Mips/MipsISelLowering.cpp b/llvm/lib/Target/Mips/MipsISelLowering.cpp
index 9b4b336727235..5a15b7d9849d3 100644
--- a/llvm/lib/Target/Mips/MipsISelLowering.cpp
+++ b/llvm/lib/Target/Mips/MipsISelLowering.cpp
@@ -2698,9 +2698,6 @@ lowerFRAMEADDR(SDValue Op, SelectionDAG &DAG) const {
SDValue MipsTargetLowering::lowerRETURNADDR(SDValue Op,
SelectionDAG &DAG) const {
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
// check the depth
if (Op.getConstantOperandVal(0) != 0) {
DAG.getContext()->emitError(
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index 7bd027ab63ee2..3616b86a7fd3f 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -17961,9 +17961,6 @@ SDValue PPCTargetLowering::LowerRETURNADDR(SDValue Op,
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
SDLoc dl(Op);
unsigned Depth = Op.getConstantOperandVal(0);
diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
index d3872b8cd7e6c..d2694815be378 100644
--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -9339,9 +9339,6 @@ SDValue RISCVTargetLowering::lowerRETURNADDR(SDValue Op,
MVT XLenVT = Subtarget.getXLenVT();
int XLenInBytes = Subtarget.getXLen() / 8;
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
EVT VT = Op.getValueType();
SDLoc DL(Op);
unsigned Depth = Op.getConstantOperandVal(0);
diff --git a/llvm/lib/Target/Sparc/SparcISelLowering.cpp b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
index 9640e4c49f02d..21dbe8f585b3e 100644
--- a/llvm/lib/Target/Sparc/SparcISelLowering.cpp
+++ b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
@@ -2874,9 +2874,6 @@ static SDValue LowerRETURNADDR(SDValue Op, SelectionDAG &DAG,
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (TLI.verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
EVT VT = Op.getValueType();
SDLoc dl(Op);
uint64_t depth = Op.getConstantOperandVal(0);
diff --git a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
index c6044514fa951..262b607b953cc 100644
--- a/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
@@ -4252,9 +4252,6 @@ SDValue SystemZTargetLowering::lowerRETURNADDR(SDValue Op,
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
SDLoc DL(Op);
unsigned Depth = Op.getConstantOperandVal(0);
EVT PtrVT = getPointerTy(DAG.getDataLayout());
diff --git a/llvm/lib/Target/VE/VEISelLowering.cpp b/llvm/lib/Target/VE/VEISelLowering.cpp
index 14f0d7b2a4176..9e8f400256198 100644
--- a/llvm/lib/Target/VE/VEISelLowering.cpp
+++ b/llvm/lib/Target/VE/VEISelLowering.cpp
@@ -1739,9 +1739,6 @@ static SDValue lowerRETURNADDR(SDValue Op, SelectionDAG &DAG,
MachineFrameInfo &MFI = MF.getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (TLI.verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
SDValue FrameAddr = lowerFRAMEADDR(Op, DAG, TLI, Subtarget);
SDLoc DL(Op);
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
index dfbf6cfb3ff49..bf2e04caa0a61 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
@@ -1910,9 +1910,6 @@ SDValue WebAssemblyTargetLowering::LowerRETURNADDR(SDValue Op,
return SDValue();
}
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
unsigned Depth = Op.getConstantOperandVal(0);
MakeLibCallOptions CallOptions;
return makeLibCall(DAG, RTLIB::RETURN_ADDRESS, Op.getValueType(),
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index f8f29b9f2cdc7..9662b18213a63 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -28211,9 +28211,6 @@ SDValue X86TargetLowering::LowerRETURNADDR(SDValue Op,
MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo();
MFI.setReturnAddressIsTaken(true);
- if (verifyReturnAddressArgumentIsConstant(Op, DAG))
- return SDValue();
-
unsigned Depth = Op.getConstantOperandVal(0);
SDLoc dl(Op);
EVT PtrVT = Op.getValueType();
More information about the llvm-commits
mailing list