[Bug target/91527] [10 Regression] ICE in update_equiv_regs, at ira.c:3473 since r274694
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91527 Richard Biener changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #3 from Richard Biener --- Fixed.
[Bug target/91527] [10 Regression] ICE in update_equiv_regs, at ira.c:3473 since r274694
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91527 --- Comment #2 from Richard Biener --- Author: rguenth Date: Mon Aug 26 10:35:59 2019 New Revision: 274926 URL: https://gcc.gnu.org/viewcvs?rev=274926=gcc=rev Log: 2019-08-26 Richard Biener PR target/91522 PR target/91527 * config/i386/i386-features.h (general_scalar_chain::defs_map): New member. (general_scalar_chain::replace_with_subreg): Remove. (general_scalar_chain::replace_with_subreg_in_insn): Likewise. (general_scalar_chain::convert_reg): Adjust signature. * config/i386/i386-features.c (scalar_chain::add_insn): Do not iterate over all defs of a reg. (general_scalar_chain::replace_with_subreg): Remove. (general_scalar_chain::replace_with_subreg_in_insn): Likewise. (general_scalar_chain::make_vector_copies): Populate defs_map, place copy only after defs that are used as vectors in the chain. (general_scalar_chain::convert_reg): Emit a copy for a specific def in a specific instruction. (general_scalar_chain::convert_op): All reg uses are converted here. (general_scalar_chain::convert_insn): Emit copies for scalar uses of defs here. Replace uses with the copies we created. Replace and convert the def. Adjust REG_DEAD notes, remove REG_EQUIV/EQUAL notes. (general_scalar_chain::convert_registers): Only handle copies into the chain here. Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386-features.c trunk/gcc/config/i386/i386-features.h
[Bug target/91527] [10 Regression] ICE in update_equiv_regs, at ira.c:3473 since r274694
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91527 Richard Biener changed: What|Removed |Added Keywords||ra Status|NEW |ASSIGNED CC||vmakarov at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #1 from Richard Biener --- This looks like a latent issue to me. IRA is confused about the reg-equiv note in (insn 4 24 5 2 (set (subreg:V4SI (reg/v:SI 90 [ c ]) 0) (subreg:V4SI (reg:SI 100) 0)) "/space/rguenther/src/svn/trunk2/gcc/testsuite/g++.dg/tree-ssa/pr21463.C":11:4 1248 {movv4si_internal} (expr_list:REG_DEAD (reg:SI 100) (expr_list:REG_EQUIV (mem/c:SI (plus:DI (reg/f:DI 16 argp) (const_int 16 [0x10])) [1 c+0 S4 A64]) (nil expecting the SET_DEST to be a REG_P (it's a paradoxical subreg). Not sure if that's a requirement for RTL in general(?) but at least the docs say the dest may be a strict_low_part or zero_extract as well. STV doesn't seem to do anything with notes and DF doesn't track uses in notes (eh). So it's probably safest to kill all of them on converted insns?! For the timode chain we update equal/equiv notes for REG dests. I have a patch.
[Bug target/91527] [10 Regression] ICE in update_equiv_regs, at ira.c:3473 since r274694
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91527 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2019-08-23 Known to work||9.1.0 Target Milestone|--- |10.0 Ever confirmed|0 |1 Known to fail||10.0