[Committed] RISC-V: Fix PR112888 ICE
Checks
Commit Message
Committed as it is ovbious.
gcc/ChangeLog:
* config/riscv/riscv-vsetvl.cc (extract_single_source): new function.
(pre_vsetvl::compute_lcm_local_properties): Fix ICE.
---
gcc/config/riscv/riscv-vsetvl.cc | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
Comments
Committed on behalf of Juzhe since he was having internet issues.
Thanks,
Patrick
On 12/6/23 14:35, Juzhe-Zhong wrote:
> Committed as it is ovbious.
>
> gcc/ChangeLog:
>
> * config/riscv/riscv-vsetvl.cc (extract_single_source): new function.
> (pre_vsetvl::compute_lcm_local_properties): Fix ICE.
>
> ---
> gcc/config/riscv/riscv-vsetvl.cc | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc
> index 68f0be7e81d..90477f331d7 100644
> --- a/gcc/config/riscv/riscv-vsetvl.cc
> +++ b/gcc/config/riscv/riscv-vsetvl.cc
> @@ -596,6 +596,14 @@ extract_single_source (set_info *set)
> return first_insn;
> }
>
> +static insn_info *
> +extract_single_source (def_info *def)
> +{
> + if (!def)
> + return nullptr;
> + return extract_single_source (dyn_cast<set_info *> (def));
> +}
> +
> static bool
> same_equiv_note_p (set_info *set1, set_info *set2)
> {
> @@ -2692,9 +2700,7 @@ pre_vsetvl::compute_lcm_local_properties ()
> def_lookup dl = crtl->ssa->find_def (resource, insn);
> def_info *def
> = dl.matching_set_or_last_def_of_prev_group ();
> - gcc_assert (def);
> - insn_info *def_insn = extract_single_source (
> - dyn_cast<set_info *> (def));
> + insn_info *def_insn = extract_single_source (def);
> if (def_insn && vsetvl_insn_p (def_insn->rtl ()))
> {
> vsetvl_info def_info = vsetvl_info (def_insn);
@@ -596,6 +596,14 @@ extract_single_source (set_info *set)
return first_insn;
}
+static insn_info *
+extract_single_source (def_info *def)
+{
+ if (!def)
+ return nullptr;
+ return extract_single_source (dyn_cast<set_info *> (def));
+}
+
static bool
same_equiv_note_p (set_info *set1, set_info *set2)
{
@@ -2692,9 +2700,7 @@ pre_vsetvl::compute_lcm_local_properties ()
def_lookup dl = crtl->ssa->find_def (resource, insn);
def_info *def
= dl.matching_set_or_last_def_of_prev_group ();
- gcc_assert (def);
- insn_info *def_insn = extract_single_source (
- dyn_cast<set_info *> (def));
+ insn_info *def_insn = extract_single_source (def);
if (def_insn && vsetvl_insn_p (def_insn->rtl ()))
{
vsetvl_info def_info = vsetvl_info (def_insn);