URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [objc.dg/] [fix-and-continue-1.m] - Rev 154
Compare with Previous | Blame | View Log
/* Fix and continue should not interfere with computation of local (static) function addresses. */ /* Author: Ziemowit Laski <zlaski@apple.com> */ /* { dg-do run { target *-*-darwin* } } */ /* { dg-options "-mfix-and-continue" } */ #include <objc/Object.h> #include <stdlib.h> @class MyTarget, MySet; int global_value = 0; @interface MyTargetBuildContext : Object { MyTarget * _target; unsigned _cacheInvalDisableCount; BOOL _cacheInvalidationNeeded; unsigned short _isCreatingDependencies:1; unsigned short _isCreatingHeadermap:1; unsigned short _haveAddedIdleTimeInvoc:1; BOOL _hasSetUpBuildSettings; } - (id)initWithTarget:(MyTarget *)target; - (MyTarget *)target; @end @interface MyTargetBuildContext (PrivateMethods) + (MySet *)_headerFileExtensions; @end @interface MyCountedSet: Object { @public int cardinality; } - (id)init; - (id)sortedArrayUsingFunction:(int (*)(id, id, void *))comparator with:(int)value; @end @implementation MyCountedSet - (id)init { cardinality = 5; global_value = 17; return self; } - (id)sortedArrayUsingFunction:(int (*)(id, id, void *))comparator with:(int)value { if(value == comparator(self, self, self)) return self; return nil; } @end @implementation MyTargetBuildContext : Object - (id)initWithTarget:(MyTarget *)target { self = [super init]; return self; } - (MyTarget *)target { return _target; } static int _MyCompareObjectsByDecreasingSetCount (id object1, id object2, MyCountedSet * countedSet) { global_value = 5; return countedSet->cardinality; } + (MySet *)_headerFileExtensions { MySet * _headerFileExtensions = 0; return _headerFileExtensions; } - (void)_recomputeHeadermap { MyCountedSet *set = [MyCountedSet new]; int (*functionPointer)(id, id, void *) = (int (*)(id, id, void *))_MyCompareObjectsByDecreasingSetCount; id result = [set sortedArrayUsingFunction:functionPointer with:5]; } @end int main(void) { MyTargetBuildContext *ctx = [MyTargetBuildContext new]; [ctx _recomputeHeadermap]; if (global_value != 5) abort(); return 0; }