https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94780
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |8.5 Priority|P3 |P2 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- It ICEs during ICEing: #1 0x00000000014351c4 in convert_nonlocal_reference_op (tp=0x7ffff6d904e8, walk_subtrees=0x7fffffffd448, data=0x7fffffffd9e0) at ../../src/trunk/gcc/tree-nested.c:1062 1062 IDENTIFIER_POINTER (DECL_NAME (target_context)), (gdb) l 1057 /* If none of the outer contexts is the target context, this means 1058 that the VAR or PARM_DECL is referenced in a wrong context. */ 1059 if (!i) 1060 internal_error ("%s from %s referenced in %s", 1061 IDENTIFIER_POINTER (DECL_NAME (t)), 1062 IDENTIFIER_POINTER (DECL_NAME (target_context)), 1063 IDENTIFIER_POINTER (DECL_NAME (info->context))); 1064 1065 x = lookup_field_for_decl (i, t, INSERT); 1066 x = get_frame_field (info, target_context, x, &wi->gsi); (gdb) p target_context $1 = <tree 0x0> target_context is also NULL(?) (gdb) p debug_tree (t) <var_decl 0x7ffff6d94120 D.1944 type <integer_type 0x7ffff6c56690 unsigned int public unsigned SI size <integer_cst 0x7ffff6c3df18 constant 32> unit-size <integer_cst 0x7ffff6c3df30 constant 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff6c56690 precision:32 min <integer_cst 0x7ffff6c3df48 0> max <integer_cst 0x7ffff6c3df00 4294967295> pointer_to_this <pointer_type 0x7ffff6c660a8>> used unsigned ignored SI x.c:10:8 size <integer_cst 0x7ffff6c3df18 32> unit-size <integer_cst 0x7ffff6c3df30 4> align:32 warn_if_not_align:0> $6 = void it's from the LHS of D.1944 = __builtin_ia32_stmxcsr (); and obviously the given rev. fails to set a proper context for the decl and also fails to add it to local_decls.