aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2002-04-24 20:13:45 -0400
committerJason Merrill <jason@gcc.gnu.org>2002-04-24 20:13:45 -0400
commita49cfba81bf9021a62ca111e7f7baea84213a19a (patch)
treedf80a5e6a3e2b9311e58c1832f38a21203278e85
parentfcae219ac449243231ebbe73eefddde824d7354b (diff)
downloadgcc-a49cfba81bf9021a62ca111e7f7baea84213a19a.zip
gcc-a49cfba81bf9021a62ca111e7f7baea84213a19a.tar.gz
gcc-a49cfba81bf9021a62ca111e7f7baea84213a19a.tar.bz2
typeck.c (build_modify_expr): The pedwarn for array assignment is now unconditional.
* typeck.c (build_modify_expr): The pedwarn for array assignment is now unconditional. * tree.c (build_cplus_array_type_1): Still process simple array types normally in templates. From-SVN: r52746
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/tree.c7
-rw-r--r--gcc/cp/typeck.c2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/crash51.C2
6 files changed, 12 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e4ca059..ef5faf4 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -19,6 +19,9 @@
PR c++/6331
* method.c (do_build_copy_constructor): Use cp_build_qualified_type.
* typeck.c (build_modify_expr): Allow arrays to differ in cv-quals.
+ The pedwarn for array assignment is now unconditional.
+ * tree.c (build_cplus_array_type_1): Still process simple array types
+ normally in templates.
PR c++/6395
* decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index ff3e633..cdf9d75 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -463,7 +463,12 @@ build_cplus_array_type_1 (elt_type, index_type)
if (elt_type == error_mark_node || index_type == error_mark_node)
return error_mark_node;
- if (processing_template_decl
+ /* Don't do the minimal thing just because processing_template_decl is
+ set; we want to give string constants the right type immediately, so
+ we don't have to fix them up at instantiation time. */
+ if ((processing_template_decl
+ && index_type && TYPE_MAX_VALUE (index_type)
+ && TREE_CODE (TYPE_MAX_VALUE (index_type)) != INTEGER_CST)
|| uses_template_parms (elt_type)
|| uses_template_parms (index_type))
{
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 10db2f8..a1050bb 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -5674,7 +5674,7 @@ build_modify_expr (lhs, modifycode, rhs)
}
/* Allow array assignment in compiler-generated code. */
- if (pedantic && ! DECL_ARTIFICIAL (current_function_decl))
+ if (! DECL_ARTIFICIAL (current_function_decl))
pedwarn ("ISO C++ forbids assignment of arrays");
from_array = TREE_CODE (TREE_TYPE (newrhs)) == ARRAY_TYPE
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C b/gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C
index b5dc839..e3f2bfb 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C
@@ -1,7 +1,6 @@
// 981203 bkoz
// g++/14664 - test
// Build don't link:
-// Special g++ Options: -fconst-strings
char foo[26];
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C b/gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C
index 35dc0b2..9c5dade 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C
@@ -1,7 +1,7 @@
// 981203 bkoz
// g++/14664 + test
// Build don't link:
-// Special g++ Options: -fno-const-strings
+// Special g++ Options: -fpermissive -w
char foo[26];
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash51.C b/gcc/testsuite/g++.old-deja/g++.pt/crash51.C
index b7687d3..3f547e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash51.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash51.C
@@ -1,5 +1,5 @@
// Build don't link:
-// Special g++ Options: -fno-const-strings
+// Special g++ Options: -fpermissive -w
// Origin: Mark Mitchell <mark@codesourcery.com>
char foo[26];