https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107558
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The reason is that omp-low.cc creates a pointer to reference type, because an automatic variable with REFERENCE_TYPE is not TREE_READONLY. While we perhaps could tweak all spots in omp-low.cc that reference TREE_READONLY to check also for REFERENCE_TYPE, I think the reason mentioned in r11-16-ga2f32550a085984f is never the case for non-aggregate types. So perhaps instead: --- gcc/cp/decl.cc.jj 2022-11-19 09:21:14.662439877 +0100 +++ gcc/cp/decl.cc 2022-11-23 13:12:31.866553152 +0100 @@ -8679,8 +8679,10 @@ cp_finish_decl (tree decl, tree init, bo if (var_definition_p /* With -fmerge-all-constants, gimplify_init_constructor - might add TREE_STATIC to the variable. */ - && (TREE_STATIC (decl) || flag_merge_constants >= 2)) + might add TREE_STATIC to aggregate variables. */ + && (TREE_STATIC (decl) + || (flag_merge_constants >= 2 + && AGGREGATE_TYPE_P (type)))) { /* If a TREE_READONLY variable needs initialization at runtime, it is no longer readonly and we need to ?