mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 03:40:26 +08:00
re PR c++/51326 (ICE with invalid override)
/cp 2011-12-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51326 * call.c (build_user_type_conversion_1): Early return NULL if expr is NULL_TREE. /testsuite 2011-12-01 Paolo Carlini <paolo.carlini@oracle.com> PR c++/51326 * g++.dg/inherit/crash3.C: New. From-SVN: r181895
This commit is contained in:
parent
c21e80b889
commit
c2985fe559
@ -1,3 +1,9 @@
|
||||
2011-12-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/51326
|
||||
* call.c (build_user_type_conversion_1): Early return NULL if
|
||||
expr is NULL_TREE.
|
||||
|
||||
2011-12-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/51367
|
||||
|
@ -3373,7 +3373,7 @@ static struct z_candidate *
|
||||
build_user_type_conversion_1 (tree totype, tree expr, int flags)
|
||||
{
|
||||
struct z_candidate *candidates, *cand;
|
||||
tree fromtype = TREE_TYPE (expr);
|
||||
tree fromtype;
|
||||
tree ctors = NULL_TREE;
|
||||
tree conv_fns = NULL_TREE;
|
||||
conversion *conv = NULL;
|
||||
@ -3382,6 +3382,11 @@ build_user_type_conversion_1 (tree totype, tree expr, int flags)
|
||||
bool any_viable_p;
|
||||
int convflags;
|
||||
|
||||
if (!expr)
|
||||
return NULL;
|
||||
|
||||
fromtype = TREE_TYPE (expr);
|
||||
|
||||
/* We represent conversion within a hierarchy using RVALUE_CONV and
|
||||
BASE_CONV, as specified by [over.best.ics]; these become plain
|
||||
constructor calls, as specified in [dcl.init]. */
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-12-01 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/51326
|
||||
* g++.dg/inherit/crash3.C: New.
|
||||
|
||||
2011-12-01 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR gcov-profile/51113
|
||||
|
11
gcc/testsuite/g++.dg/inherit/crash3.C
Normal file
11
gcc/testsuite/g++.dg/inherit/crash3.C
Normal file
@ -0,0 +1,11 @@
|
||||
// PR c++/51326
|
||||
|
||||
struct A
|
||||
{
|
||||
virtual int& foo(); // { dg-error "overriding" }
|
||||
};
|
||||
|
||||
struct B : A
|
||||
{
|
||||
B& foo(); // { dg-error "conflicting return type" }
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user