/* APPLE LOCAL file ObjC direct dispatch */ /* A compile-only test for insertion of 'bla' and 'ba' sibcall comm page jumps for methods returning 'void'. */ /* Developed by Ziemowit Laski <zlaski@apple.com> */ /* { dg-do compile { target powerpc*-*-darwin* } } */ /* { dg-options "-fnext-runtime -fobjc-gc -fobjc-direct-dispatch -Wno-assign-intercept -O2" } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ #include <objc/Object.h> @interface Derived: Object { @public Object *other; } - (void) do_nothing; @end int a; void foo(void) { Derived *o; [o do_nothing]; /* objc_msgSend_Fast() */ a = 2; } void bar(void) { Derived *o = nil; [o do_nothing]; /* sibcall to objc_msgSend_Fast() */ } /* { dg-final { scan-assembler-not "objc_msgSend" } } */ /* { dg-final { scan-assembler "bla.*fffeff00" } } */ /* { dg-final { scan-assembler "ba.*fffeff00" } } */