From: mmitchel Date: Tue, 30 May 2000 17:39:59 +0000 (+0000) Subject: * call.c (joust): Fix handling of overloaded builtin operators. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=86720eb23303de52b0345b582b0121093a93d04b * call.c (joust): Fix handling of overloaded builtin operators. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34269 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e7f8552f7ed..e6cdcd2c9ba 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2000-05-30 Mark Mitchell + + * call.c (joust): Fix handling of overloaded builtin operators. + 2000-05-30 Zack Weinberg * cp-tree.h (DECL_ANTICIPATED): New macro. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 2bd5c81843a..acb5cfeced3 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -5128,7 +5128,7 @@ joust (cand1, cand2, warn) /* Kludge around broken overloading rules whereby Integer a, b; test ? a : b; is ambiguous, since there's a builtin that takes references and another that takes values. */ - if (DECL_OVERLOADED_OPERATOR_P (cand1->fn) == COND_EXPR) + if (cand1->fn == ansi_opname (COND_EXPR)) { tree c1 = TREE_VEC_ELT (cand1->convs, 1); tree c2 = TREE_VEC_ELT (cand2->convs, 1); diff --git a/gcc/testsuite/g++.old-deja/g++.other/overload13.C b/gcc/testsuite/g++.old-deja/g++.other/overload13.C new file mode 100644 index 00000000000..d6728c79e17 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/overload13.C @@ -0,0 +1,13 @@ +// Build don't link: +// Origin: Nathan Sidwell + +struct A { + bool operator== (A const &); + operator bool () const; + operator int * () const; +}; + +bool foo (A &a1, A &a2) +{ + return a1 == a2; +}