1dac3ea4eSRichard Smith // RUN: %clang_cc1 %s -triple=i686-apple-darwin9 -verify -DVERIFY 2dac3ea4eSRichard Smith // expected-no-diagnostics 3dac3ea4eSRichard Smith 4dac3ea4eSRichard Smith #ifndef __has_feature 5dac3ea4eSRichard Smith #error Should have __has_feature 6dac3ea4eSRichard Smith #endif 7dac3ea4eSRichard Smith 8dac3ea4eSRichard Smith #if __has_feature(something_we_dont_have) 9dac3ea4eSRichard Smith #error Bad 10dac3ea4eSRichard Smith #endif 11dac3ea4eSRichard Smith 12dac3ea4eSRichard Smith #if !__has_builtin(__builtin_huge_val) || \ 13dac3ea4eSRichard Smith !__has_builtin(__builtin_shufflevector) || \ 14dac3ea4eSRichard Smith !__has_builtin(__builtin_convertvector) || \ 15dac3ea4eSRichard Smith !__has_builtin(__builtin_trap) || \ 16dac3ea4eSRichard Smith !__has_builtin(__c11_atomic_init) || \ 17dac3ea4eSRichard Smith !__has_builtin(__builtin_launder) || \ 18dac3ea4eSRichard Smith !__has_feature(attribute_analyzer_noreturn) || \ 19dac3ea4eSRichard Smith !__has_feature(attribute_overloadable) 20dac3ea4eSRichard Smith #error Clang should have these 21dac3ea4eSRichard Smith #endif 22dac3ea4eSRichard Smith 23dac3ea4eSRichard Smith // These are technically implemented as keywords, but __has_builtin should 24dac3ea4eSRichard Smith // still return true. 25dac3ea4eSRichard Smith #if !__has_builtin(__builtin_LINE) || \ 26dac3ea4eSRichard Smith !__has_builtin(__builtin_FILE) || \ 27dac3ea4eSRichard Smith !__has_builtin(__builtin_FUNCTION) || \ 28dac3ea4eSRichard Smith !__has_builtin(__builtin_COLUMN) || \ 29dac3ea4eSRichard Smith !__has_builtin(__array_rank) || \ 30dac3ea4eSRichard Smith !__has_builtin(__underlying_type) || \ 31dac3ea4eSRichard Smith !__has_builtin(__is_trivial) || \ 32*eb535d23SRichard Smith !__has_builtin(__is_same_as) || \ 33dac3ea4eSRichard Smith !__has_builtin(__has_unique_object_representations) 34dac3ea4eSRichard Smith #error Clang should have these 35dac3ea4eSRichard Smith #endif 36dac3ea4eSRichard Smith 37dac3ea4eSRichard Smith // This is a C-only builtin. 38dac3ea4eSRichard Smith #if __has_builtin(__builtin_types_compatible_p) 39dac3ea4eSRichard Smith #error Clang should not have this in C++ mode 40dac3ea4eSRichard Smith #endif 41dac3ea4eSRichard Smith 42dac3ea4eSRichard Smith #if __has_builtin(__builtin_insanity) 43dac3ea4eSRichard Smith #error Clang should not have this 44dac3ea4eSRichard Smith #endif 45