]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: Fix infinite compilation of VSETVL PASS
authorJuzhe-Zhong <juzhe.zhong@rivai.ai>
Mon, 5 Feb 2024 23:12:24 +0000 (07:12 +0800)
committerPan Li <pan2.li@intel.com>
Tue, 6 Feb 2024 12:48:10 +0000 (20:48 +0800)
This patch fixes issue reported by Jeff.

Testing is running. Ok for trunk if I passed the testing with no regression ?

gcc/ChangeLog:

* config/riscv/riscv-vsetvl.cc (pre_vsetvl::emit_vsetvl): Fix inifinite compilation.
(pre_vsetvl::remove_vsetvl_pre_insns): Ditto.

gcc/config/riscv/riscv-vsetvl.cc

index 2c0dcdf18c56ad115784c00c467b46dd3a87f395..32f262de199f23cbf122786768710b245bc98e66 100644 (file)
@@ -2281,9 +2281,8 @@ private:
       }
   }
 
-  void remove_vsetvl_insn (const vsetvl_info &info)
+  void remove_vsetvl_insn (rtx_insn *rinsn)
   {
-    rtx_insn *rinsn = info.get_insn ()->rtl ();
     if (dump_file)
       {
        fprintf (dump_file, "  Eliminate insn %d:\n", INSN_UID (rinsn));
@@ -3231,7 +3230,7 @@ pre_vsetvl::emit_vsetvl ()
          if (curr_info.delete_p ())
            {
              if (vsetvl_insn_p (insn->rtl ()))
-               remove_vsetvl_insn (curr_info);
+               remove_vsetvl_insn (curr_info.get_insn ()->rtl ());
              continue;
            }
          else if (curr_info.valid_p ())
@@ -3269,7 +3268,7 @@ pre_vsetvl::emit_vsetvl ()
   for (const vsetvl_info &item : m_delete_list)
     {
       gcc_assert (vsetvl_insn_p (item.get_insn ()->rtl ()));
-      remove_vsetvl_insn (item);
+      remove_vsetvl_insn (item.get_insn ()->rtl ());
     }
 
   /* Insert vsetvl info that was not deleted after lift up.  */
@@ -3434,7 +3433,7 @@ pre_vsetvl::remove_vsetvl_pre_insns ()
                       INSN_UID (rinsn));
              print_rtl_single (dump_file, rinsn);
            }
-         remove_insn (rinsn);
+         remove_vsetvl_insn (rinsn);
        }
 }