This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [SFN+LVU+IEPM v4 1/9] [SFN] adjust RTL insn-walking API
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: Richard Biener <richard dot guenther at gmail dot com>, Jason Merrill <jason at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 14 Dec 2017 09:55:30 -0200
- Subject: Re: [SFN+LVU+IEPM v4 1/9] [SFN] adjust RTL insn-walking API
- Authentication-results: sourceware.org; auth=none
- References: <orlgjec1b5.fsf_-_@lxoliva.fsfla.org> <20171110023448.28164-1-aoliva@redhat.com> <748cdfaf-491d-b1bf-ab38-9799cada7de6@redhat.com> <or4lowwuk7.fsf@lxoliva.fsfla.org>
On Dec 12, 2017, Alexandre Oliva <aoliva@redhat.com> wrote:
> On Dec 7, 2017, Jeff Law <law@redhat.com> wrote:
>> On 11/09/2017 07:34 PM, Alexandre Oliva wrote:
>>> (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
> Thanks, FTR, here it is, as installed:
On Aug 31, 2017, Alexandre Oliva <aoliva@redhat.com> wrote:
> (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
[SFN] next/prev_nonnote_insn_bb are no more, even for ports
The patch that added _nondebug to next_ and prev_nonnote_insn_bb
failed to find and adjust uses within config. Fixed.
Sanity-checked by cross-building both *-elf targets (with binutils and
newlib) on x86_64-linux-gnu. I'm going ahead and checking it in
shortly.
for gcc/ChangeLog
PR bootstrap/83396
* config/arc/arc.c (hwloop_optimize): Skip debug insns.
* config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
* config/sh/sh.c: Skip debug insns besides notes.
* config/sh/sh.md: Likewise.
* config/sh/sh_treg_combine.cc: Likewise.
* config/sh/sync.md: Likewise.
---
gcc/config/arc/arc.c | 2 +-
gcc/config/sh/sh-protos.h | 2 +-
gcc/config/sh/sh.c | 10 +++++-----
gcc/config/sh/sh.md | 18 +++++++++---------
gcc/config/sh/sh_treg_combine.cc | 8 ++++----
gcc/config/sh/sync.md | 2 +-
6 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index b8eec10086dd..9974a1f999b5 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -7499,7 +7499,7 @@ hwloop_optimize (hwloop_info loop)
&& NOTE_KIND (entry_after) != NOTE_INSN_CALL_ARG_LOCATION))
entry_after = NEXT_INSN (entry_after);
#endif
- entry_after = next_nonnote_insn_bb (entry_after);
+ entry_after = next_nonnote_nondebug_insn_bb (entry_after);
gcc_assert (entry_after);
emit_insn_before (seq, entry_after);
diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h
index e98030d31bd7..0a83fbe17011 100644
--- a/gcc/config/sh/sh-protos.h
+++ b/gcc/config/sh/sh-protos.h
@@ -122,7 +122,7 @@ struct set_of_reg
/* Given a reg rtx and a start insn, try to find the insn that sets the
specified reg by using the specified insn stepping function, such as
- 'prev_nonnote_insn_bb'. When the insn is found, try to extract the rtx
+ 'prev_nonnote_nondebug_insn_bb'. When the insn is found, try to extract the rtx
of the reg set. */
template <typename F> inline set_of_reg
sh_find_set_of_reg (rtx reg, rtx_insn* insn, F stepfunc,
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 0d7d7bc53ca2..3776415f1589 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -11897,7 +11897,7 @@ sh_is_logical_t_store_expr (rtx op, rtx_insn* insn)
else
{
set_of_reg op_set = sh_find_set_of_reg (ops[i], insn,
- prev_nonnote_insn_bb);
+ prev_nonnote_nondebug_insn_bb);
if (op_set.set_src == NULL_RTX)
continue;
@@ -11929,7 +11929,7 @@ sh_try_omit_signzero_extend (rtx extended_op, rtx_insn* insn)
if (GET_MODE (extended_op) != SImode)
return NULL_RTX;
- set_of_reg s = sh_find_set_of_reg (extended_op, insn, prev_nonnote_insn_bb);
+ set_of_reg s = sh_find_set_of_reg (extended_op, insn, prev_nonnote_nondebug_insn_bb);
if (s.set_src == NULL_RTX)
return NULL_RTX;
@@ -11966,9 +11966,9 @@ sh_split_movrt_negc_to_movt_xor (rtx_insn* curr_insn, rtx operands[])
return false;
set_of_reg t_before_negc = sh_find_set_of_reg (get_t_reg_rtx (), curr_insn,
- prev_nonnote_insn_bb);
+ prev_nonnote_nondebug_insn_bb);
set_of_reg t_after_negc = sh_find_set_of_reg (get_t_reg_rtx (), curr_insn,
- next_nonnote_insn_bb);
+ next_nonnote_nondebug_insn_bb);
if (t_before_negc.set_rtx != NULL_RTX && t_after_negc.set_rtx != NULL_RTX
&& rtx_equal_p (t_before_negc.set_rtx, t_after_negc.set_rtx)
@@ -12010,7 +12010,7 @@ sh_find_extending_set_of_reg (rtx reg, rtx_insn* curr_insn)
cases, where a zero_extend is followed an (implicit) sign_extend, and it
fails to see the sign_extend. */
sh_extending_set_of_reg result =
- sh_find_set_of_reg (reg, curr_insn, prev_nonnote_insn_bb, true);
+ sh_find_set_of_reg (reg, curr_insn, prev_nonnote_nondebug_insn_bb, true);
if (result.set_src != NULL)
{
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 840fd922d41e..587af3b25581 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -848,7 +848,7 @@
/* FIXME: Maybe also search the predecessor basic blocks to catch
more cases. */
set_of_reg op = sh_find_set_of_reg (operands[0], curr_insn,
- prev_nonnote_insn_bb);
+ prev_nonnote_nondebug_insn_bb);
if (op.set_src != NULL && GET_CODE (op.set_src) == AND
&& !sh_insn_operands_modified_between_p (op.insn, op.insn, curr_insn))
@@ -939,7 +939,7 @@
if (dump_file)
fprintf (dump_file, "cmpgesi_t: trying to optimize for const_int 0\n");
- rtx_insn* i = next_nonnote_insn_bb (curr_insn);
+ rtx_insn* i = next_nonnote_nondebug_insn_bb (curr_insn);
if (dump_file)
{
@@ -3094,7 +3094,7 @@
&& ! sh_dynamicalize_shift_p (shift_count))
{
if (prev_set_t_insn == NULL)
- prev_set_t_insn = prev_nonnote_insn_bb (curr_insn);
+ prev_set_t_insn = prev_nonnote_nondebug_insn_bb (curr_insn);
/* Skip the nott insn, which was probably inserted by the splitter
of *rotcr_neg_t. Don't use one of the recog functions
@@ -3106,7 +3106,7 @@
if (GET_CODE (pat) == SET
&& t_reg_operand (XEXP (pat, 0), SImode)
&& negt_reg_operand (XEXP (pat, 1), SImode))
- prev_set_t_insn = prev_nonnote_insn_bb (prev_set_t_insn);
+ prev_set_t_insn = prev_nonnote_nondebug_insn_bb (prev_set_t_insn);
}
if (! (prev_set_t_insn != NULL_RTX
@@ -3194,7 +3194,7 @@
if (sh_ashlsi_clobbers_t_reg_p (shift_count)
&& ! sh_dynamicalize_shift_p (shift_count))
{
- prev_set_t_insn = prev_nonnote_insn_bb (curr_insn);
+ prev_set_t_insn = prev_nonnote_nondebug_insn_bb (curr_insn);
/* Skip the nott insn, which was probably inserted by the splitter
of *rotcl_neg_t. Don't use one of the recog functions
@@ -3206,7 +3206,7 @@
if (GET_CODE (pat) == SET
&& t_reg_operand (XEXP (pat, 0), SImode)
&& negt_reg_operand (XEXP (pat, 1), SImode))
- prev_set_t_insn = prev_nonnote_insn_bb (prev_set_t_insn);
+ prev_set_t_insn = prev_nonnote_nondebug_insn_bb (prev_set_t_insn);
}
if (! (prev_set_t_insn != NULL_RTX
@@ -4423,7 +4423,7 @@
When we're here, the not:SI pattern obviously has been matched already
and we only have to see whether the following insn is the left shift. */
- rtx_insn *i = next_nonnote_insn_bb (curr_insn);
+ rtx_insn *i = next_nonnote_nondebug_insn_bb (curr_insn);
if (i == NULL_RTX || !NONJUMP_INSN_P (i))
FAIL;
@@ -10751,8 +10751,8 @@
{
rtx t_reg = get_t_reg_rtx ();
- for (rtx_insn* i = prev_nonnote_insn_bb (curr_insn); i != NULL;
- i = prev_nonnote_insn_bb (i))
+ for (rtx_insn* i = prev_nonnote_nondebug_insn_bb (curr_insn); i != NULL;
+ i = prev_nonnote_nondebug_insn_bb (i))
{
if (!INSN_P (i) || DEBUG_INSN_P (i))
continue;
diff --git a/gcc/config/sh/sh_treg_combine.cc b/gcc/config/sh/sh_treg_combine.cc
index cb3a7a85d173..0bbaf415db8f 100644
--- a/gcc/config/sh/sh_treg_combine.cc
+++ b/gcc/config/sh/sh_treg_combine.cc
@@ -291,7 +291,7 @@ find_set_of_reg_bb (rtx reg, rtx_insn *insn)
return result;
for (result.insn = insn; result.insn != NULL;
- result.insn = prev_nonnote_insn_bb (result.insn))
+ result.insn = prev_nonnote_nondebug_insn_bb (result.insn))
{
if (BARRIER_P (result.insn))
return result;
@@ -750,7 +750,7 @@ sh_treg_combine::record_set_of_reg (rtx reg, rtx_insn *start_insn,
log_msg ("tracing ccreg\n");
new_entry.setcc =
find_set_of_reg_bb (m_ccreg,
- prev_nonnote_insn_bb (new_entry.cstore.insn));
+ prev_nonnote_nondebug_insn_bb (new_entry.cstore.insn));
// If cstore was found but setcc was not found continue anyway, as
// for some of the optimization types the setcc is irrelevant.
@@ -1353,7 +1353,7 @@ sh_treg_combine::try_optimize_cbranch (rtx_insn *insn)
// (set (reg ccreg) (eq (reg) (const_int 0)))
// The testing insn could also be outside of the current basic block, but
// for now we limit the search to the current basic block.
- trace.setcc = find_set_of_reg_bb (m_ccreg, prev_nonnote_insn_bb (insn));
+ trace.setcc = find_set_of_reg_bb (m_ccreg, prev_nonnote_nondebug_insn_bb (insn));
if (trace.setcc.set_src () == NULL_RTX)
log_return_void ("could not find set of ccreg in current BB\n");
@@ -1413,7 +1413,7 @@ sh_treg_combine::try_optimize_cbranch (rtx_insn *insn)
trace.bb_entries.push_front (bb_entry (trace.bb ()));
record_return_t res =
- record_set_of_reg (trace_reg, prev_nonnote_insn_bb (trace.setcc.insn),
+ record_set_of_reg (trace_reg, prev_nonnote_nondebug_insn_bb (trace.setcc.insn),
trace.bb_entries.front ());
if (res == other_set_found)
diff --git a/gcc/config/sh/sync.md b/gcc/config/sh/sync.md
index b46ac3131a8a..9f158bd93533 100644
--- a/gcc/config/sh/sync.md
+++ b/gcc/config/sh/sync.md
@@ -294,7 +294,7 @@
/* FIXME: Sometimes the 'expected value' operand is not propagated as
immediate value. See PR 64974. */
set_of_reg op2 = sh_find_set_of_reg (operands[2], curr_insn,
- prev_nonnote_insn_bb);
+ prev_nonnote_nondebug_insn_bb);
if (op2.set_src != NULL && satisfies_constraint_I08 (op2.set_src))
{
rtx* r = &XVECEXP (XEXP (XVECEXP (PATTERN (curr_insn), 0, 0), 1), 0, 1);
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer