This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: C++ PATCH for c++/49673 (constexpr init should go in rodata)


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 <jason@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);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]