96 lines · plain
1// RUN: %clang_cc1 -x objective-c -triple x86_64-apple-darwin10 -fblocks -emit-llvm %s -o - | FileCheck %s2// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fblocks -emit-llvm %s -o - | FileCheck %s3 4#if __has_feature(objc_bool)5#define YES __objc_yes6#define NO __objc_no7#else8#define YES ((BOOL)1)9#define NO ((BOOL)0)10#endif11 12#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_6413typedef unsigned long NSUInteger;14typedef long NSInteger;15#else16typedef unsigned int NSUInteger;17typedef int NSInteger;18#endif19typedef signed char BOOL;20 21@interface NSNumber @end22 23@interface NSNumber (NSNumberCreation)24#if __has_feature(objc_array_literals)25+ (NSNumber *)numberWithChar:(char)value;26+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;27+ (NSNumber *)numberWithShort:(short)value;28+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;29+ (NSNumber *)numberWithInt:(int)value;30+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;31+ (NSNumber *)numberWithLong:(long)value;32+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;33+ (NSNumber *)numberWithLongLong:(long long)value;34+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;35+ (NSNumber *)numberWithFloat:(float)value;36+ (NSNumber *)numberWithDouble:(double)value;37+ (NSNumber *)numberWithBool:(BOOL)value;38+ (NSNumber *)numberWithInteger:(NSInteger)value ;39+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value ;40#endif41@end42 43@interface NSDate44+ (NSDate *) date;45@end46 47#if __has_feature(objc_dictionary_literals)48@interface NSDictionary49+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(NSUInteger)cnt;50@end51#endif52 53id NSUserName(void);54 55// CHECK: define{{.*}} i32 @main() [[NUW:#[0-9]+]]56int main(void) {57 // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 noundef signext 9758 NSNumber *aNumber = @'a';59 // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 noundef 4260 NSNumber *fortyTwo = @42;61 // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 noundef -4262 NSNumber *negativeFortyTwo = @-42;63 // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 noundef 4264 NSNumber *positiveFortyTwo = @+42;65 // CHECK: call{{.*}}@objc_msgSend{{.*}}i32 noundef 4266 NSNumber *fortyTwoUnsigned = @42u;67 // CHECK: call{{.*}}@objc_msgSend{{.*}}i64 noundef 4268 NSNumber *fortyTwoLong = @42l;69 // CHECK: call{{.*}}@objc_msgSend{{.*}}i64 noundef 4270 NSNumber *fortyTwoLongLong = @42ll;71 // CHECK: call{{.*}}@objc_msgSend{{.*}}float noundef 0x400921FB6000000072 NSNumber *piFloat = @3.141592654f;73 // CHECK: call{{.*}}@objc_msgSend{{.*}}double noundef 0x400921FB5441174474 NSNumber *piDouble = @3.1415926535;75 // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 noundef signext 176 NSNumber *yesNumber = @__objc_yes;77 // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 noundef signext 078 NSNumber *noNumber = @__objc_no;79 // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 noundef signext 180 NSNumber *yesNumber1 = @YES;81 // CHECK: call{{.*}}@objc_msgSend{{.*}}i8 noundef signext 082 NSNumber *noNumber1 = @NO;83NSDictionary *dictionary = @{@"name" : NSUserName(), 84 @"date" : [NSDate date] }; 85 return __objc_yes == __objc_no;86}87 88typedef BOOL (^foo)(void);89extern void bar(foo a);90 91void baz(void) {92 bar(^(void) { return YES; });93}94 95// CHECK: attributes [[NUW]] = { {{.*}}noinline {{(norecurse )?}}nounwind{{.*}} }96