blob: d1645adbc252970d29be26dd013a9e250ed42b29 [file] [log] [blame]
Douglas Gregor80c60f72010-09-09 22:45:38 +00001// RUN: %clang_cc1 -fms-extensions -E %s | FileCheck %s
2
3// Test that we properly expand the C99 _Pragma and Microsoft __pragma
4// into #pragma directives, with newlines where needed. <rdar://problem/8412013>
5
Douglas Gregor80c60f72010-09-09 22:45:38 +00006// CHECK: #line
7// CHECK: #pragma warning(push)
Douglas Gregorfe6834a2010-09-10 22:27:29 +00008// CHECK: extern "C" {
Douglas Gregor80c60f72010-09-09 22:45:38 +00009// CHECK: #line
Douglas Gregorfe6834a2010-09-10 22:27:29 +000010// CHECK: #pragma warning(push)
11// CHECK: int foo() { return 0; } }
Douglas Gregor80c60f72010-09-09 22:45:38 +000012// CHECK: #line
13// CHECK: #pragma warning(pop)
Douglas Gregorfe6834a2010-09-10 22:27:29 +000014#define A(X) extern "C" { __pragma(warning(push)) \
15 int X() { return 0; } \
16}
17#define B(X) A(X)
18#pragma warning(push)
19B(foo)
20#pragma warning(pop)