diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-08-30 01:42:48 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-08-30 01:42:48 +0000 |
commit | 7433e6d47086c63eeee0898963a0173f23c380c9 (patch) | |
tree | fe982fcdef1b28f684fa99e57282a46ca0095be1 /gcc | |
parent | c2096ef8a3e9c250d81ee0fbed1a38d47a879f59 (diff) | |
download | gcc-7433e6d47086c63eeee0898963a0173f23c380c9.zip gcc-7433e6d47086c63eeee0898963a0173f23c380c9.tar.gz gcc-7433e6d47086c63eeee0898963a0173f23c380c9.tar.bz2 |
re PR c++/12093 (inconstitent error with templates/non-templates)
2003-08-29 Mark Mitchell <mark@codesourcery.com>
PR c++/12093
* pt.c (build_non_dependent_expr): Do not build a
NON_DEPENDENT_EXPR for a STRING_CST.
2003-08-29 Mark Mitchell <mark@codesourcery.com>
PR c++/12093
* g++.dg/template/non-dependent4.C: New test.
From-SVN: r70941
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/pt.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/cond1.C | 10 |
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b18105f..d066423 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2003-08-29 Mark Mitchell <mark@codesourcery.com> + PR c++/12093 + * pt.c (build_non_dependent_expr): Do not build a + NON_DEPENDENT_EXPR for a STRING_CST. + PR c++/11928 * search.c (add_conversions): Avoid adding two conversion operators for the same type. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index ff3518e..6ae091e 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -11806,6 +11806,11 @@ build_non_dependent_expr (tree expr) types. */ if (TREE_CODE (expr) == OVERLOAD) return expr; + /* Preserve string constants; conversions from string constants to + "char *" are allowed, even though normally a "const char *" + cannot be used to initialize a "char *". */ + if (TREE_CODE (expr) == STRING_CST) + return expr; if (TREE_CODE (expr) == COND_EXPR) return build (COND_EXPR, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c057ea2..8eeca7e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2003-08-29 Mark Mitchell <mark@codesourcery.com> + PR c++/12093 + * g++.dg/template/non-dependent4.C: New test. + PR c++/11928 * g++.dg/inherit/conv1.C: New test. diff --git a/gcc/testsuite/g++.dg/ext/cond1.C b/gcc/testsuite/g++.dg/ext/cond1.C new file mode 100644 index 0000000..d179307 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/cond1.C @@ -0,0 +1,10 @@ +// { dg-options "" } + +template<int X> class c; + +template<int X, int Y> int test(c<X ? : Y>&); + +void test(c<2>*c2) { + test<0, 2>(*c2); +} + |