From: Jakub Jelinek Subject: [PATCH] Set TREE_READONLY const POD arrays with size determined from initializer (PR c++/21454) This is a fallout of the PR c++/20073 fix. For arrays like: const int a[] = { 0, 1, 2, 3 }; when cp_apply_type_quals_to_decl is called, its type is not complete yet, so C++ frontend does not set TREE_READONLY flag. But such variables aren't put into incomplete_vars chain either, so nothing sets the flag afterwards. 2005-05-11 Jakub Jelinek PR c++/21454 * decl.c (maybe_deduce_size_from_array_init): Call cp_apply_type_quals_to_decl after completing array type. * g++.dg/opt/const4.C: New test. --- gcc/gcc/cp/decl.c 2005-05-11 11:50:14.000000000 +0200 +++ gcc/gcc/cp/decl.c 2005-05-11 19:03:28.000000000 +0200 @@ -3933,6 +3933,8 @@ maybe_deduce_size_from_array_init (tree if (failure == 3) error ("zero-size array %qD", decl); + cp_apply_type_quals_to_decl (cp_type_quals (TREE_TYPE (decl)), decl); + layout_decl (decl, 0); } }