On 07/08/2011 10:35 AM, Jakub Jelinek wrote:
That will match only on ELF and perhaps a few other targets, but I'm certain many targets put read-only data elsewhere. I'd just guard this with a few most common target triplets that are known to use .rodata section.
Done, thanks. I've also removed the unneeded check for COMPLETE_TYPE_P. Tested x86_64-pc-linux-gnu, applying to trunk.
commit e24d93b0a1e1df42c4f1197515e7e2fbe211a0cb Author: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri Jul 8 16:46:28 2011 +0000 constexpr-rom.C tweak git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176049 138bc75d-0d04-0410-961f-82ee72b054a4 diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C index e2edb2e..144be2d 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C @@ -1,6 +1,6 @@ // PR c++/49673: check that test_data goes into .rodata // { dg-options -std=c++0x } -// { dg-final { scan-assembler "rodata" } } +// { dg-final { scan-assembler "rodata" { target { *-*-linux-gnu || *-*-elf } } } } struct Data {
commit e2f7f86c6d5e734fe393217eaca8d4da9969f343 Author: Jason Merrill <ja...@redhat.com> Date: Fri Jul 8 10:27:55 2011 -0400 * typeck.c (cp_apply_type_quals_to_decl): Don't check COMPLETE_TYPE_P either. diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index f0d68c3..5febff5 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -8130,12 +8130,10 @@ cp_apply_type_quals_to_decl (int type_quals, tree decl) /* We used to check TYPE_NEEDS_CONSTRUCTING here, but now a constexpr constructor can produce constant init, so rely on cp_finish_decl to clear TREE_READONLY if the variable has non-constant init. */ - if (/* If the type isn't complete, we don't know yet if it will need - constructing. */ - !COMPLETE_TYPE_P (type) - /* If the type has a mutable component, that component might be - modified. */ - || TYPE_HAS_MUTABLE_P (type)) + + /* If the type has a mutable component, that component might be + modified. */ + if (TYPE_HAS_MUTABLE_P (type)) type_quals &= ~TYPE_QUAL_CONST; c_apply_type_quals_to_decl (type_quals, decl);