call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and ICS_BAD_FLAG.
* call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and ICS_BAD_FLAG. * g++.old-deja/g++.other/overload14.C: New test. From-SVN: r41448
This commit is contained in:
parent
881cae050a
commit
351a0f00dc
@ -1,3 +1,8 @@
|
||||
2001-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
|
||||
ICS_BAD_FLAG.
|
||||
|
||||
2001-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* search.c (lookup_field_r): If looking for type and non-TYPE_DECL
|
||||
|
@ -4741,11 +4741,14 @@ maybe_handle_ref_bind (ics, target_type)
|
||||
{
|
||||
if (TREE_CODE (*ics) == REF_BIND)
|
||||
{
|
||||
tree old_ics = *ics;
|
||||
*target_type = TREE_TYPE (TREE_TYPE (*ics));
|
||||
*ics = TREE_OPERAND (*ics, 0);
|
||||
ICS_USER_FLAG (*ics) = ICS_USER_FLAG (old_ics);
|
||||
ICS_BAD_FLAG (*ics) = ICS_BAD_FLAG (old_ics);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2001-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* g++.old-deja/g++.other/overload14.C: New test.
|
||||
|
||||
2001-04-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* g++.old-deja/g++.other/lookup23.C: New test.
|
||||
|
31
gcc/testsuite/g++.old-deja/g++.other/overload14.C
Normal file
31
gcc/testsuite/g++.old-deja/g++.other/overload14.C
Normal file
@ -0,0 +1,31 @@
|
||||
extern "C" void abort();
|
||||
|
||||
struct A {
|
||||
typedef double (&B);
|
||||
typedef const double (&C);
|
||||
|
||||
A() { }
|
||||
|
||||
operator C () const;
|
||||
operator B ();
|
||||
};
|
||||
|
||||
static const double d = 2.0;
|
||||
static double e = 3.0;
|
||||
|
||||
A::operator A::C () const
|
||||
{
|
||||
abort ();
|
||||
return d;
|
||||
}
|
||||
|
||||
A::operator A::B ()
|
||||
{
|
||||
return e;
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
(A::C) A (); // WARNING -
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user