blob: d91a686e00f7f84f8eba4f695ac5196c5441ec68 [file] [log] [blame]
/* APPLE LOCAL file ptmf casts --bowdidge */
/* In gcc-4.0 and beyond, kexts are not permitted to cast
pointer-to-member- functions into pointer-to-functions.
These casts should be flagged as a hard error if
-fapple-kext is an option for the compile. -fpermissive shouldn't permit
this, either. This checks for OSMemberFunctionCast in the error message
because the error advises developers to use that function to replace
these casts.
Radar 4025923, gcc-4.0 should ban kexts from doing ptmf to ptf
conversions without OSMemberFunctionCast
/* { dg-do compile { target powerpc*-apple-darwin* } } */
/* { dg-options "-S -static -fapple-kext -fpermissive -fno-exceptions" } */
typedef int(*INT_FUNC_INT)(int);
class Superclass {
/* In 3.3, this would get the foo function for the class of "this". In 4.0, it
gets the foo function for Superclass. */
virtual int init(void) {_myFunc = (INT_FUNC_INT)&Superclass::foo;}; /* { dg-error "OSMemberFunctionCast" } */
virtual int foo(int i) { return 2;};
class Subclass : public Superclass {
virtual int foo(int) { return 1;};
main(int argc, char **argv) {
Superclass sup;
Subclass sub;