brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 238e3ed Raw
62 lines · c
1/* Test pragma pop_macro and push_macro directives from2   http://msdn.microsoft.com/en-us/library/hsttss76.aspx */3 4// pop_macro: Sets the value of the macro_name macro to the value on the top of5// the stack for this macro.6// #pragma pop_macro("macro_name")7// push_macro: Saves the value of the macro_name macro on the top of the stack8// for this macro.9// #pragma push_macro("macro_name")10//11// RUN: %clang_cc1 -fms-extensions -E %s -o - | FileCheck %s12 13#define X 114#define Y 215int pmx0 = X;16int pmy0 = Y;17#define Y 318#pragma push_macro("Y")19#pragma push_macro("X")20int pmx1 = X;21#define X 222int pmx2 = X;23#pragma pop_macro("X")24int pmx3 = X;25#pragma pop_macro("Y")26int pmy1 = Y;27 28// Have a stray 'push' to show we don't crash when having imbalanced29// push/pop30#pragma push_macro("Y")31#define Y 432int pmy2 = Y;33 34// The sequence push, define/undef, pop caused problems if macro was not35// previously defined.36#pragma push_macro("PREVIOUSLY_UNDEFINED1")37#undef PREVIOUSLY_UNDEFINED138#pragma pop_macro("PREVIOUSLY_UNDEFINED1")39#ifndef PREVIOUSLY_UNDEFINED140int Q;41#endif42 43#pragma push_macro("PREVIOUSLY_UNDEFINED2")44#define PREVIOUSLY_UNDEFINED245#pragma pop_macro("PREVIOUSLY_UNDEFINED2")46#ifndef PREVIOUSLY_UNDEFINED247int P;48#endif49 50// CHECK: int pmx0 = 151// CHECK: int pmy0 = 252// CHECK: int pmx1 = 153// CHECK: int pmx2 = 254// CHECK: int pmx3 = 155// CHECK: int pmy1 = 356// CHECK: int pmy2 = 457// CHECK: int Q;58// CHECK: int P;59 60#pragma push_macro("")61#pragma pop_macro("")62