https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105333
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-04-21 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 CC| |segher at gcc dot gnu.org Target Milestone|--- |10.4 Priority|P3 |P2 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. #1 0x000000000142c6af in simplify_context::simplify_subreg ( this=0x7fffffffb3b8, outermode=E_SImode, op=0x7ffff668b5d0, innermode=E_VOIDmode, byte=...) (gdb) p debug_rtx( op) (const_wide_int 0x0fffffffffffffffe) (gdb) bt #0 fancy_abort ( file=0x2e7a200 "/home/rguenther/src/gcc3/gcc/simplify-rtx.cc", line=7346, function=0x2e7e100 <simplify_context::simplify_subreg(machine_mode, rtx_def*, machine_mode, poly_int<1u, unsigned long>)::__FUNCTION__> "simplify_subreg") at /home/rguenther/src/gcc3/gcc/diagnostic.cc:2024 #1 0x000000000142c6af in simplify_context::simplify_subreg ( this=0x7fffffffb3b8, outermode=E_SImode, op=0x7ffff668b5d0, innermode=E_VOIDmode, byte=...) at /home/rguenther/src/gcc3/gcc/simplify-rtx.cc:7346 #2 0x000000000142cf56 in simplify_context::simplify_subreg ( this=0x7fffffffb3b8, outermode=E_SImode, op=0x7ffff668b660, innermode=E_DImode, byte=...) at /home/rguenther/src/gcc3/gcc/simplify-rtx.cc:7444 #3 0x000000000142dfd9 in simplify_context::simplify_gen_subreg ( this=0x7fffffffb3b8, outermode=E_SImode, op=0x7ffff668b660, innermode=E_DImode, byte=...) at /home/rguenther/src/gcc3/gcc/simplify-rtx.cc:7624 ... #7 0x00000000028becb7 in gen_lowpart_for_combine (omode=E_SImode, x=0x7ffff668b660) at /home/rguenther/src/gcc3/gcc/combine.cc:11684 11684 result = gen_lowpart_common (omode, x); #8 0x0000000001410622 in simplify_context::simplify_unary_operation_1 ( this=0x7fffffffc988, code=TRUNCATE, mode=E_SImode, op=0x7ffff668b660) at /home/rguenther/src/gcc3/gcc/simplify-rtx.cc:1243 which does if (GET_MODE (op) != VOIDmode) { temp = simplify_truncation (mode, op, GET_MODE (op)); if (temp) return temp; } /* If we know that the value is already truncated, we can replace the TRUNCATE with a SUBREG. */ if (known_eq (GET_MODE_NUNITS (mode), 1) && (TRULY_NOOP_TRUNCATION_MODES_P (mode, GET_MODE (op)) || truncated_to_mode (mode, op))) { temp = rtl_hooks.gen_lowpart_no_emit (mode, op); so we know 'op' is VOIDmode here but gen_lowpart_for_combine isn't prepared for this?