https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110737
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- 7137 /* TARGET_EXPR temps aren't part of the enclosing block, so add it 7138 to the temps list. Handle also variable length TARGET_EXPRs. */ 7139 if (!poly_int_tree_p (DECL_SIZE (temp))) 7140 { 7141 if (!TYPE_SIZES_GIMPLIFIED (TREE_TYPE (temp))) 7142 gimplify_type_sizes (TREE_TYPE (temp), &init_pre_p); 7143 /* FIXME: this is correct only when the size of the type does (gdb) p temp $1 = (tree) 0x7ffff760d3f0 (gdb) p debug_tree(temp) <var_decl 0x7ffff760d3f0 D.4640 type <void_type 0x7ffff761e0a8 void VOID align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff761e0a8 pointer_to_this <pointer_type 0x7ffff761e150>> addressable used ignored read VOID t5.c:4:1 (slightly different compiler) TARGET_EXPR <D.2762, f ()>; TARGET_EXPR <D.2763, (void) (D.2763 = VIEW_CONVERT_EXPR<long double>(__atomic_load_16 ((const volatile void *) &c, 5)))>; TARGET_EXPR <D.2768, __builtin_ia32_fnstenv ((void *) &D.2768)>;, __builtin_ia32_fnclex ();;, TARGET_EXPR <D.2770, __builtin_ia32_stmxcsr ()>;, TARGET_EXPR <D.2771, (D.2770 | 8064) & 4294967232>;;, __builtin_ia32_ldmxcsr (D.2771);; if (__atomic_compare_exchange_16 ((volatile void *) &c, (void *) &D.2763, VIEW_CONVERT_EXPR<__int128 unsigned>(D.2764), 0, 5, 5)) Note for C++ front-end, it uses error_mark_node for here rather than a void type for D.2762 ( D.4640)