re PR c++/51565 (fastcall in array of method pointers: internal compiler error)
PR c++/51565 * call.c (standard_conversion): For ptrmemfuncs, compare the static_fn_types. From-SVN: r183120
This commit is contained in:
parent
00733a0041
commit
efcc9293a6
|
@ -1,5 +1,9 @@
|
|||
2012-01-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/51565
|
||||
* call.c (standard_conversion): For ptrmemfuncs, compare the
|
||||
static_fn_types.
|
||||
|
||||
PR c++/51818
|
||||
* mangle.c (find_substitution): A type is only a substitution
|
||||
match if we're looking for a type.
|
||||
|
|
|
@ -1274,10 +1274,8 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
|
|||
tree tbase = class_of_this_parm (tofn);
|
||||
|
||||
if (!DERIVED_FROM_P (fbase, tbase)
|
||||
|| !same_type_p (TREE_TYPE (fromfn), TREE_TYPE (tofn))
|
||||
|| !compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)),
|
||||
TREE_CHAIN (TYPE_ARG_TYPES (tofn)))
|
||||
|| cp_type_quals (fbase) != cp_type_quals (tbase))
|
||||
|| !same_type_p (static_fn_type (fromfn),
|
||||
static_fn_type (tofn)))
|
||||
return NULL;
|
||||
|
||||
from = build_memfn_type (fromfn, tbase, cp_type_quals (tbase));
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-01-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/51565
|
||||
* g++.dg/ext/attrib42.C: New.
|
||||
|
||||
2012-01-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/51796
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// { dg-do compile { target i?86-*-* } }
|
||||
|
||||
struct A {
|
||||
__attribute__((fastcall))
|
||||
void f();
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
typedef void (A::*FP)();
|
||||
FP fp[] = {&A::f}; // { dg-error "cannot convert" }
|
||||
}
|
Loading…
Reference in New Issue