diff options
Diffstat (limited to 'test/Preprocessor/_Pragma-location.c')
-rw-r--r-- | test/Preprocessor/_Pragma-location.c | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/test/Preprocessor/_Pragma-location.c b/test/Preprocessor/_Pragma-location.c index 8b68d6c..5031ee4 100644 --- a/test/Preprocessor/_Pragma-location.c +++ b/test/Preprocessor/_Pragma-location.c @@ -1,4 +1,47 @@ -// RUN: %clang_cc1 %s -E | not grep 'scratch space' +// RUN: %clang_cc1 %s -fms-extensions -E | FileCheck %s +// We use -fms-extensions to test both _Pragma and __pragma. -#define push _Pragma ("pack(push)") -push +// A long time ago the pragma lexer's buffer showed through in -E output. +// CHECK-NOT: scratch space + +#define push_p _Pragma ("pack(push)") +push_p +// CHECK: #pragma pack(push) + +push_p _Pragma("pack(push)") __pragma(pack(push)) +// CHECK: #pragma pack(push) +// CHECK-NEXT: #line 11 "{{.*}}_Pragma-location.c" +// CHECK-NEXT: #pragma pack(push) +// CHECK-NEXT: #line 11 "{{.*}}_Pragma-location.c" +// CHECK-NEXT: #pragma pack(push) + + +#define __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS _Pragma("clang diagnostic push") \ +_Pragma("clang diagnostic ignored \"-Wformat-extra-args\"") +#define __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS _Pragma("clang diagnostic pop") + +void test () { + 1;_Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wformat-extra-args\"") + _Pragma("clang diagnostic pop") + + 2;__PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS + 3;__PRAGMA_POP_NO_EXTRA_ARG_WARNINGS +} + +// CHECK: void test () { +// CHECK-NEXT: 1; +// CHECK-NEXT: #line 24 "{{.*}}_Pragma-location.c" +// CHECK-NEXT: #pragma clang diagnostic push +// CHECK-NEXT: #pragma clang diagnostic ignored "-Wformat-extra-args" +// CHECK-NEXT: #pragma clang diagnostic pop + +// CHECK: 2; +// CHECK-NEXT: #line 28 "{{.*}}_Pragma-location.c" +// CHECK-NEXT: #pragma clang diagnostic push +// CHECK-NEXT: #line 28 "{{.*}}_Pragma-location.c" +// CHECK-NEXT: #pragma clang diagnostic ignored "-Wformat-extra-args" +// CHECK-NEXT: 3; +// CHECK-NEXT: #line 29 "{{.*}}_Pragma-location.c" +// CHECK-NEXT: #pragma clang diagnostic pop +// CHECK-NEXT: } |