URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [objc.dg/] [func-ptr-2.m] - Rev 309
Compare with Previous | Blame | View Log
/* Check if method parameters that are functions are gracefully decayed into pointers. */ /* Contributed by Ziemowit Laski <zlaski@apple.com> */ /* { dg-do run } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include <stdlib.h> /* provide an Object class for NeXT runtimes 10.5 and above */ #include "../objc-obj-c++-shared/Object1.h" @interface Func: Object + (int) processNumber:(int)a and:(int)b usingFunction:(int(int,int))func; @end @implementation Func + (int) processNumber:(int)a and:(int)b usingFunction:(int(int,int))func { return func (a, b); } @end static int my_computation(int a, int b) { return a * 2 + b * 3; } static int processNumber(int a, int b, int func(int, int)) { return func(a, b); } int main(void) { int result = processNumber (6, 8, my_computation); if (result != 36) abort (); result = [Func processNumber:8 and:6 usingFunction:my_computation]; if (result != 34) abort (); return 0; } #include "../objc-obj-c++-shared/Object1-implementation.h"