2002-11-30 Mark Mitchell <mark@codesourcery.com>
+ PR c++/8214
+ * typeck.c (convert_for_assignment): Do not use
+ decl_constant_value on the operand.
+
+2002-11-30 Mark Mitchell <mark@codesourcery.com>
+
PR c++/8511
* pt.c (instantiate_decl): Handle template friends defined outside
of the class correctly.
/* Simplify the RHS if possible. */
if (TREE_CODE (rhs) == CONST_DECL)
rhs = DECL_INITIAL (rhs);
- else if (coder != ARRAY_TYPE)
- rhs = decl_constant_value (rhs);
+
+ /* We do not use decl_constant_value here because of this case:
+
+ const char* const s = "s";
+
+ The conversion rules for a string literal are more lax than for a
+ variable; in particular, a string literal can be converted to a
+ "char *" but the variable "s" cannot be converted in the same
+ way. If the conversion is allowed, the optimization should be
+ performed while creating the converted expression. */
/* [expr.ass]
2002-11-30 Mark Mitchell <mark@codesourcery.com>
+ PR c++/8214
+ * g++.dg/init/string1.C: New test.
+
+2002-11-30 Mark Mitchell <mark@codesourcery.com>
+
PR c++/8511
* g++.dg/template/friend8.C: New test.