public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/113029] New: sel-sched2 ICE in verify_target_availability
@ 2023-12-15 6:44 linkw at gcc dot gnu.org
2023-12-15 6:50 ` [Bug rtl-optimization/113029] " pinskia at gcc dot gnu.org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: linkw at gcc dot gnu.org @ 2023-12-15 6:44 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113029
Bug ID: 113029
Summary: sel-sched2 ICE in verify_target_availability
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: linkw at gcc dot gnu.org
Target Milestone: ---
Test case:
#include <altivec.h>
#define c(d, g) g, d
#define e(d, g) g, d
vector double f, n;
int m;
int k;
void j (vector double, double, double);
vector double combine (double, double);
vector double i (double, double);
vector double l (vector double, double);
vector double
o (vector double, double)
{
vector double a;
vector double b;
p ("");
j (f, c (1, 2));
j (n, c (3, 4));
b = i (3, 4);
j (a, e (1, 2));
j (b, e (3, 4));
j (l (a, 5.0), e (5, 2));
j (o (b, 6.0), e (3, 6));
k = vec_extract (b, 1);
j (combine (0, k), c (2, 4));
m = vec_extract (b, 0);
j (i (0, m), e (1, 3));
i (0, vec_extract (b, 1));
}
Option: -std=c89 -O2 -mcpu=power10 -fselective-scheduling2
during RTL pass: sched2
test.c: In function ‘o’:
test.c:29:1: internal compiler error: in verify_target_availability, at
sel-sched.cc:1553
29 | }
| ^
0x10c54c43 verify_target_availability
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:1553
0x10c54c43 find_best_reg_for_expr
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:1667
0x10c54c43 fill_vec_av_set
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:3784
0x10c5555b fill_ready_list
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:4014
0x10c5555b find_best_expr
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:4374
0x10c5555b fill_insns
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:5535
0x10c5555b schedule_on_fences
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:7353
0x10c5555b sel_sched_region_2
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:7491
0x10c57b8b sel_sched_region_1
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:7533
0x10c59723 sel_sched_region(int)
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:7634
0x10c59723 sel_sched_region(int)
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:7619
0x10c59beb run_selective_scheduling()
/home/gccbuild/gcc_trunk_git/gcc/gcc/sel-sched.cc:7720
0x10c2e6ef rest_of_handle_sched2
/home/gccbuild/gcc_trunk_git/gcc/gcc/sched-rgn.cc:3748
0x10c2e6ef execute
/home/gccbuild/gcc_trunk_git/gcc/gcc/sched-rgn.cc:3895
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/113029] sel-sched2 ICE in verify_target_availability
2023-12-15 6:44 [Bug rtl-optimization/113029] New: sel-sched2 ICE in verify_target_availability linkw at gcc dot gnu.org
@ 2023-12-15 6:50 ` pinskia at gcc dot gnu.org
2023-12-15 6:50 ` linkw at gcc dot gnu.org
2023-12-15 6:56 ` linkw at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-12-15 6:50 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113029
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Maybe https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84842#c17 patch helps
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/113029] sel-sched2 ICE in verify_target_availability
2023-12-15 6:44 [Bug rtl-optimization/113029] New: sel-sched2 ICE in verify_target_availability linkw at gcc dot gnu.org
2023-12-15 6:50 ` [Bug rtl-optimization/113029] " pinskia at gcc dot gnu.org
@ 2023-12-15 6:50 ` linkw at gcc dot gnu.org
2023-12-15 6:56 ` linkw at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: linkw at gcc dot gnu.org @ 2023-12-15 6:50 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113029
--- Comment #2 from Kewen Lin <linkw at gcc dot gnu.org> ---
I noticed there are some existing PRs (PR107984, PR99328, PR88652, PR84842) on
verify_target_availability ICE, and in PR84842 there is a tentative patch, I
tried to make it fit with the latest trunk, but this still fails, so I file
this.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug rtl-optimization/113029] sel-sched2 ICE in verify_target_availability
2023-12-15 6:44 [Bug rtl-optimization/113029] New: sel-sched2 ICE in verify_target_availability linkw at gcc dot gnu.org
2023-12-15 6:50 ` [Bug rtl-optimization/113029] " pinskia at gcc dot gnu.org
2023-12-15 6:50 ` linkw at gcc dot gnu.org
@ 2023-12-15 6:56 ` linkw at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: linkw at gcc dot gnu.org @ 2023-12-15 6:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113029
Kewen Lin <linkw at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=88652
--- Comment #3 from Kewen Lin <linkw at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #1)
> Maybe https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84842#c17 patch helps
Unfortunately it doesn't help, I noticed this and tried below:
diff --git a/gcc/sel-sched.cc b/gcc/sel-sched.cc
index a35b5e16c91..8e3b3bb0467 100644
--- a/gcc/sel-sched.cc
+++ b/gcc/sel-sched.cc
@@ -323,6 +323,10 @@ struct reg_rename
/* The set of ABIs used by calls that the code motion path crosses. */
unsigned int crossed_call_abis : NUM_ABI_IDS;
+
+ /* True if we have merged expressions and one of them had availability
+ bit set. */
+ unsigned int merged_available_expr : 1;
};
/* A global structure that contains the needed information about harg
@@ -388,6 +392,10 @@ struct fur_static_params
/* The set of ABIs used by calls that the code motion path crosses. */
unsigned int crossed_call_abis : NUM_ABI_IDS;
+
+ /* True if we have merged expressions and one of them had availability
+ bit set. */
+ unsigned int merged_available_expr : 1;
};
typedef struct fur_static_params *fur_static_params_p;
@@ -1554,7 +1562,8 @@ verify_target_availability (expr_t expr, regset
used_regs,
|| !hard_available
|| (!reload_completed
&& reg_rename_p->crossed_call_abis
- && REG_N_CALLS_CROSSED (regno) == 0));
+ && REG_N_CALLS_CROSSED (regno) == 0)
+ || reg_rename_p->merged_available_expr);
}
/* Collect unavailable registers due to liveness for EXPR from BNDS
@@ -1654,6 +1663,8 @@ find_best_reg_for_expr (expr_t expr, blist_t bnds, bool
*is_orig_reg_p)
used_regs = get_clear_regset_from_pool ();
CLEAR_HARD_REG_SET (reg_rename_data.unavailable_hard_regs);
+ reg_rename_data.crossed_call_abis = false;
+ reg_rename_data.merged_available_expr = false;
collect_unavailable_regs_from_bnds (expr, bnds, used_regs, ®_rename_data,
&original_insns);
@@ -1861,7 +1872,7 @@ identical_copy_p (rtx_insn *insn)
/* Undo all transformations on *AV_PTR that were done when
moving through INSN. */
static void
-undo_transformations (av_set_t *av_ptr, rtx_insn *insn)
+undo_transformations (av_set_t *av_ptr, rtx_insn *insn, void *static_params)
{
av_set_iterator av_iter;
expr_t expr;
@@ -1940,6 +1951,8 @@ undo_transformations (av_set_t *av_ptr, rtx_insn *insn)
copy, which was in turn substituted. The history is
wrong
in this case. Do it the hard way. */
add = substitute_reg_in_expr (tmp_expr, insn, true);
+ if (code_motion_path_driver_info == &fur_hooks)
+ ((fur_static_params_p) static_params)->merged_available_expr
= true;
if (add)
av_set_add (&new_set, tmp_expr);
clear_expr (tmp_expr);
@@ -3273,6 +3286,7 @@ find_used_regs (insn_t insn, av_set_t orig_ops, regset
used_regs,
sparams.crossed_call_abis = 0;
sparams.original_insns = original_insns;
sparams.used_regs = used_regs;
+ sparams.merged_available_expr = false;
/* Set the appropriate hooks and data. */
code_motion_path_driver_info = &fur_hooks;
@@ -3280,6 +3294,7 @@ find_used_regs (insn_t insn, av_set_t orig_ops, regset
used_regs,
res = code_motion_path_driver (insn, orig_ops, NULL, &lparams, &sparams);
reg_rename_p->crossed_call_abis |= sparams.crossed_call_abis;
+ reg_rename_p->merged_available_expr |= sparams.merged_available_expr;
gcc_assert (res == 1);
gcc_assert (original_insns && *original_insns);
@@ -6570,7 +6585,7 @@ code_motion_path_driver (insn_t insn, av_set_t orig_ops,
ilist_t path,
{
/* Av set ops could have been changed when moving through this
insn. To find them below it, we have to un-substitute them.
*/
- undo_transformations (&orig_ops, insn);
+ undo_transformations (&orig_ops, insn, static_params);
}
else
{
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-15 6:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-15 6:44 [Bug rtl-optimization/113029] New: sel-sched2 ICE in verify_target_availability linkw at gcc dot gnu.org
2023-12-15 6:50 ` [Bug rtl-optimization/113029] " pinskia at gcc dot gnu.org
2023-12-15 6:50 ` linkw at gcc dot gnu.org
2023-12-15 6:56 ` linkw at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).