[gcc r16-1041] Move get_call_rtx_from to final.c
H.J. Lu
hjl@gcc.gnu.org
Mon Jun 2 00:06:43 GMT 2025
https://gcc.gnu.org/g:2da641d01700907d600ff9027ecfc82500342428
commit r16-1041-g2da641d01700907d600ff9027ecfc82500342428
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Sun Jun 1 09:29:48 2025 +0800
Move get_call_rtx_from to final.c
Move get_call_rtx_from to final.c and call call_from_call_insn.
PR other/120493
* final.cc (call_from_call_insn): Change the argument type to
const rtx_call_insn *.
(get_call_rtx_from): New.
* rtl.h (is_a_helper <const rtx_call_insn *>::test): New.
(get_call_rtx_from): Moved to the final.cc section.
* rtlanal.cc (get_call_rtx_from): Removed.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diff:
---
gcc/final.cc | 11 ++++++++++-
gcc/rtl.h | 10 +++++++++-
gcc/rtlanal.cc | 15 ---------------
3 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/gcc/final.cc b/gcc/final.cc
index 12c6eb0ac09c..a4dbab72914b 100644
--- a/gcc/final.cc
+++ b/gcc/final.cc
@@ -2072,7 +2072,7 @@ output_alternate_entry_point (FILE *file, rtx_insn *insn)
/* Given a CALL_INSN, find and return the nested CALL. */
static rtx
-call_from_call_insn (rtx_call_insn *insn)
+call_from_call_insn (const rtx_call_insn *insn)
{
rtx x;
gcc_assert (CALL_P (insn));
@@ -2098,6 +2098,15 @@ call_from_call_insn (rtx_call_insn *insn)
return x;
}
+/* Return the CALL in X if there is one. */
+
+rtx
+get_call_rtx_from (const rtx_insn *insn)
+{
+ const rtx_call_insn *call_insn = as_a<const rtx_call_insn *> (insn);
+ return call_from_call_insn (call_insn);
+}
+
/* Print a comment into the asm showing FILENAME, LINENUM, and the
corresponding source line, if available. */
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 7049ed775e8f..8a740219c2a0 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -957,6 +957,14 @@ is_a_helper <rtx_call_insn *>::test (rtx_insn *insn)
return CALL_P (insn);
}
+template <>
+template <>
+inline bool
+is_a_helper <const rtx_call_insn *>::test (const rtx_insn *insn)
+{
+ return CALL_P (insn);
+}
+
template <>
template <>
inline bool
@@ -3682,7 +3690,6 @@ extern bool nonzero_address_p (const_rtx);
extern bool rtx_unstable_p (const_rtx);
extern bool rtx_varies_p (const_rtx, bool);
extern bool rtx_addr_varies_p (const_rtx, bool);
-extern rtx get_call_rtx_from (const rtx_insn *);
extern tree get_call_fndecl (const rtx_insn *);
extern HOST_WIDE_INT get_integer_term (const_rtx);
extern rtx get_related_value (const_rtx);
@@ -4572,6 +4579,7 @@ extern void simplify_using_condition (rtx, rtx *, bitmap);
extern void compute_alignments (void);
extern void update_alignments (vec<rtx> &);
extern int asm_str_count (const char *templ);
+extern rtx get_call_rtx_from (const rtx_insn *);
struct rtl_hooks
{
diff --git a/gcc/rtlanal.cc b/gcc/rtlanal.cc
index 900f53e252a9..239d6691c4ca 100644
--- a/gcc/rtlanal.cc
+++ b/gcc/rtlanal.cc
@@ -813,21 +813,6 @@ rtx_addr_varies_p (const_rtx x, bool for_alias)
return false;
}
-/* Return the CALL in X if there is one. */
-
-rtx
-get_call_rtx_from (const rtx_insn *insn)
-{
- rtx x = PATTERN (insn);
- if (GET_CODE (x) == PARALLEL)
- x = XVECEXP (x, 0, 0);
- if (GET_CODE (x) == SET)
- x = SET_SRC (x);
- if (GET_CODE (x) == CALL && MEM_P (XEXP (x, 0)))
- return x;
- return NULL_RTX;
-}
-
/* Get the declaration of the function called by INSN. */
tree
More information about the Gcc-cvs
mailing list