aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2000-07-05 16:04:49 -0400
committerJason Merrill <jason@gcc.gnu.org>2000-07-05 16:04:49 -0400
commitab78530579ad8654a6f39f059bbe191474c501e8 (patch)
tree78cfcf3749e96b97ce4223f406650bdcc539c3f2
parenta1337b40caeb25f5fe4869760b9b55d3cce87394 (diff)
downloadgcc-ab78530579ad8654a6f39f059bbe191474c501e8.zip
gcc-ab78530579ad8654a6f39f059bbe191474c501e8.tar.gz
gcc-ab78530579ad8654a6f39f059bbe191474c501e8.tar.bz2
call.c (joust): Don't complain about `operator char *()' beating `operator const char *() const'.
* call.c (joust): Don't complain about `operator char *()' beating `operator const char *() const'. From-SVN: r34875
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/call.c12
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c01ed9f..cd6c0d7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2000-07-05 Jason Merrill <jason@redhat.com>
+
+ * call.c (joust): Don't complain about `operator char *()' beating
+ `operator const char *() const'.
+
2000-07-04 scott snyder <snyder@fnal.gov>
Jason Merrill <jason@redhat.com>
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 1dd6a29..48ce6fb 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -5050,11 +5050,21 @@ joust (cand1, cand2, warn)
if (comp != winner)
{
struct z_candidate *w, *l;
+ tree convn;
if (winner == 1)
w = cand1, l = cand2;
else
w = cand2, l = cand1;
- if (warn)
+ if (DECL_CONTEXT (cand1->fn) == DECL_CONTEXT (cand2->fn)
+ && ! DECL_CONSTRUCTOR_P (cand1->fn)
+ && ! DECL_CONSTRUCTOR_P (cand2->fn)
+ && (convn = standard_conversion
+ (TREE_TYPE (TREE_TYPE (l->fn)),
+ TREE_TYPE (TREE_TYPE (w->fn)), NULL_TREE))
+ && TREE_CODE (convn) == QUAL_CONV)
+ /* Don't complain about `operator char *()' beating
+ `operator const char *() const'. */;
+ else if (warn)
{
tree source = source_type (TREE_VEC_ELT (w->convs, 0));
if (! DECL_CONSTRUCTOR_P (w->fn))