diff options
author | Jason Merrill <jason@redhat.com> | 2000-07-05 16:04:49 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-07-05 16:04:49 -0400 |
commit | ab78530579ad8654a6f39f059bbe191474c501e8 (patch) | |
tree | 78cfcf3749e96b97ce4223f406650bdcc539c3f2 | |
parent | a1337b40caeb25f5fe4869760b9b55d3cce87394 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/call.c | 12 |
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)) |