https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117380
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Keywords| |ice-checking Last reconfirmed| |2024-10-31 Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The problem is we get: <plus_expr 0x7ffff79b1af0 type <integer_type 0x7ffff7822738 long int DI size <integer_cst 0x7ffff7802f48 constant 64> unit-size <integer_cst 0x7ffff7802f60 constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff7822738 precision:64 min <integer_cst 0x7ffff78241e0 -9223372036854775808> max <integer_cst 0x7ffff78241f8 9223372036854775807> pointer_to_this <pointer_type 0x7ffff7832738>> arg:0 <nop_expr 0x7ffff79aa8c0 type <integer_type 0x7ffff7822738 long int> arg:0 <var_decl 0x7ffff7810cf0 b type <error_mark 0x7ffff7802f30> used public static read SI t6.c:2:8 size <integer_cst 0x7ffff7824198 constant 32> unit-size <integer_cst 0x7ffff78241b0 constant 4> align:32 warn_if_not_align:0 context <translation_unit_decl 0x7ffff780fca8 t6.c> chain <function_decl 0x7ffff79b5200 c>>> arg:1 <integer_cst 0x7ffff79a82d0 type <integer_type 0x7ffff7822738 long int> constant 503359447364223024> t6.c:5:12 start: t6.c:5:10 finish: t6.c:5:31> But note the error_mark as the type for b. The problem is we don't prop error_mark backwards which would have "fixed" the issue. I have an idea on how to fix this and others like this. But since this is error recovery, it is low on my plate to fix it.