diff options
author | Jason Merrill <jason@redhat.com> | 2002-04-24 20:13:45 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2002-04-24 20:13:45 -0400 |
commit | a49cfba81bf9021a62ca111e7f7baea84213a19a (patch) | |
tree | df80a5e6a3e2b9311e58c1832f38a21203278e85 | |
parent | fcae219ac449243231ebbe73eefddde824d7354b (diff) | |
download | gcc-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/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/tree.c | 7 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/crash51.C | 2 |
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]; |