46 lines · c
1// RUN: %clang_cc1 -std=c90 -fconst-strings -DCONST_STRINGS -verify %s2// RUN: %clang_cc1 -std=c90 -verify %s3// RUN: %clang_cc1 -std=c90 -fms-extensions -DMS -fconst-strings -DCONST_STRINGS -verify %s4// RUN: %clang_cc1 -std=c90 -fms-extensions -DMS -verify %s5 6// expected-no-diagnostics7 8#define IsEqual(L, R) (__builtin_strcmp(L, R) == 0)9 10const char *const FILE = __builtin_FILE();11const char *const FUNC = __builtin_FUNCTION();12const unsigned LINE = __builtin_LINE();13const unsigned COL = __builtin_COLUMN();14 15#ifndef CONST_STRINGS16char *const NCFILE = __builtin_FILE();17char *const NCFUNC = __builtin_FUNCTION();18#ifdef MS19char *const NCFNSG = __builtin_FUNCSIG();20#endif21#endif22 23#ifdef CONST_STRINGS24_Static_assert(IsEqual(__builtin_FILE(), __FILE__), "");25_Static_assert(IsEqual(__builtin_FILE_NAME(), __FILE_NAME__), "");26_Static_assert(__builtin_LINE() == __LINE__, "");27_Static_assert(IsEqual("", __builtin_FUNCTION()), "");28#ifdef MS29_Static_assert(IsEqual("", __builtin_FUNCSIG()), "");30#endif31 32#line 42 "my_file.c"33_Static_assert(__builtin_LINE() == 42, "");34_Static_assert(IsEqual(__builtin_FILE(), "my_file.c"), "");35_Static_assert(IsEqual(__builtin_FILE_NAME(), "my_file.c"), "");36 37_Static_assert(__builtin_COLUMN() == __builtin_strlen("_Static_assert(_"), "");38 39void foo(void) {40 _Static_assert(IsEqual(__builtin_FUNCTION(), "foo"), "");41#ifdef MS42 _Static_assert(IsEqual(__builtin_FUNCSIG(), "void __cdecl foo(void)"), "");43#endif44}45#endif // CONST_STRINGS46