1/* Test demangling an Objective-C method. */ 2/* { dg-do run } */ 3/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ 4 5#include <cstring> 6#include <cstdlib> 7#include <iostream> 8#include <objc/objc.h> 9 10@interface DemangleTest 11{ 12 Class isa; 13} 14+ (int) testFunction1; 15+ (int) test_function2; 16+ (int) __testFunction3: (int)unused andArgument: (char)unused2; 17+ (id) initialize; 18@end 19 20@implementation DemangleTest 21+ (int) testFunction1 22{ 23 std::cout << __PRETTY_FUNCTION__ << "\n"; 24 return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest testFunction1]"); 25} 26+ (int) test_function2 27{ 28 std::cout << __PRETTY_FUNCTION__ << "\n"; 29 return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest test_function2]"); 30} 31+ (int) __testFunction3: (int)unused andArgument: (char)unused2 32{ 33 std::cout << __PRETTY_FUNCTION__ << "\n"; 34 return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest __testFunction3:andArgument:]"); 35} 36+ (id) initialize { return self; } 37@end 38 39int main () 40{ 41 if ([DemangleTest testFunction1] != 0) 42 abort (); 43 44 if ([DemangleTest test_function2] != 0) 45 abort (); 46 47 if ([DemangleTest __testFunction3:0 andArgument: 'c'] != 0) 48 abort (); 49 50 return 0; 51} 52 53 54