OSDN Git Service

PR c++/41997
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 14 Feb 2010 15:17:30 +0000 (15:17 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 14 Feb 2010 15:17:30 +0000 (15:17 +0000)
* semantics.c (finish_compound_literal): Use
cp_apply_type_quals_to_decl when creating a static variable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156760 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/initlist-opt.C [new file with mode: 0644]

index 7e37b69..0b96f4c 100644 (file)
@@ -1,3 +1,9 @@
+2010-02-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41997
+       * semantics.c (finish_compound_literal): Use
+       cp_apply_type_quals_to_decl when creating a static variable.
+
 2010-02-12  Jason Merrill  <jason@redhat.com>
 
        PR c++/43024
 2010-02-12  Jason Merrill  <jason@redhat.com>
 
        PR c++/43024
index 985e2c0..90a76d9 100644 (file)
@@ -2257,6 +2257,7 @@ finish_compound_literal (tree type, tree compound_literal)
       tree decl = create_temporary_var (type);
       DECL_INITIAL (decl) = compound_literal;
       TREE_STATIC (decl) = 1;
       tree decl = create_temporary_var (type);
       DECL_INITIAL (decl) = compound_literal;
       TREE_STATIC (decl) = 1;
+      cp_apply_type_quals_to_decl (cp_type_quals (type), decl);
       decl = pushdecl_top_level (decl);
       DECL_NAME (decl) = make_anon_name ();
       SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
       decl = pushdecl_top_level (decl);
       DECL_NAME (decl) = make_anon_name ();
       SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
index 157d79c..891e33d 100644 (file)
@@ -1,3 +1,8 @@
+2010-02-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41997
+       * g++.dg/cpp0x/initlist-opt.C: New.
+
 2010-02-13  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/41113
 2010-02-13  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/41113
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt.C
new file mode 100644 (file)
index 0000000..f515ed8
--- /dev/null
@@ -0,0 +1,19 @@
+// PR c++/41997
+// { dg-options "-std=c++0x -O2 -fdump-tree-optimized" }
+// { dg-final { scan-tree-dump-not "_0" "optimized" } }
+// { dg-final { cleanup-tree-dump "optimized" } }
+
+#include <initializer_list>
+
+int max_val(std::initializer_list<int> il)
+{
+        int i = *(il.begin());
+        int j = *(il.begin() + 1);
+        return (i > j ? i : j);
+}
+
+int main(void)
+{
+        return max_val({1,2});
+}
+