https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119021

            Bug ID: 119021
           Summary: [15 Regression] RTL checking ICEs after r15-7700
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

I'm seeing some RTL checking ICEs since
r15-7700-g2341f675edadd6370147d2bc55ca7761a7ecfaa1 :
+FAIL: gcc.target/i386/pr84876.c (internal compiler error: RTL check: expected
elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1515)
+FAIL: gcc.target/i386/pr84876.c (test for excess errors)
+FAIL: gcc.target/i386/pr88414.c (internal compiler error: RTL check: expected
elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1515)
+FAIL: gcc.target/i386/pr88414.c (test for excess errors)
on x86_64-linux and
+FAIL: gcc.target/i386/pr109137.c (internal compiler error: RTL check: expected
elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1515)
+FAIL: gcc.target/i386/pr109137.c (test for excess errors)
+FAIL: gcc.target/i386/pr88414.c (internal compiler error: RTL check: expected
elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1515)
+FAIL: gcc.target/i386/pr88414.c (test for excess errors)
on i686-linux.

All these tests have in common are inline asms that are impossible to reload,
so gcc emits
error: ‘asm’ operand has impossible constraints or there are not enough
registers
diagnostics and turns the inline asm into NOTE_INSN_DELETED note.
The ICE is then in lra_split_hard_reg_for
1858                lra_asm_insn_error (insn);
1859                if (JUMP_P (insn))
1860                  ira_nullify_asm_goto (insn);
1861                else
1862                  PATTERN (insn) = gen_rtx_USE (VOIDmode, const0_rtx);
where lra_asm_insn_error does emit that error and
  /* Avoid further trouble with this insn.  */
  if (JUMP_P (insn))
    {
      ira_nullify_asm_goto (insn);
      lra_update_insn_regno_info (insn);
    }
  else
    {
      PATTERN (insn) = gen_rtx_USE (VOIDmode, const0_rtx);
      lra_set_insn_deleted (insn);
    }
so I fail to see the point of the lines 1859-1862 because it is already
nullified or pattern changed and insn deleted.

Reply via email to