llvm-capstone/clang/test/Preprocessor/print-pragma-microsoft.c
Reid Kleckner 0e73ec4550 Expand macros in pragmas with -fms-extensions and -E
gcc never expands macros in pragmas and MSVC always expands macros
before processing pragmas.  Clang usually allows macro expansion, except
in a handful of pragmas, most of which are handled by the lexer.

Also remove PPCallbacks for pragmas that are currently handled in the
parser.  Without a Parser, such as with clang -E, these callbacks would
never be called.

Fixes PR18576.

llvm-svn: 201821
2014-02-20 22:59:51 +00:00

21 lines
619 B
C

// RUN: %clang_cc1 %s -fsyntax-only -fms-extensions -E -o - | FileCheck %s
#define BAR "2"
#pragma comment(linker, "bar=" BAR)
// CHECK: #pragma comment(linker, "bar=" "2")
#pragma comment(user, "Compiled on " __DATE__ " at " __TIME__)
// CHECK: #pragma comment(user, "Compiled on " "{{[^"]*}}" " at " "{{[^"]*}}")
#define KEY1 "KEY1"
#define KEY2 "KEY2"
#define VAL1 "VAL1\""
#define VAL2 "VAL2"
#pragma detect_mismatch(KEY1 KEY2, VAL1 VAL2)
// CHECK: #pragma detect_mismatch("KEY1" "KEY2", "VAL1\"" "VAL2")
#define _CRT_PACKING 8
#pragma pack(push, _CRT_PACKING)
// CHECK: #pragma pack(push, 8)
#pragma pack(pop)