Home | History | Annotate | Download | only in PCH
      1 // Test this without pch.
      2 // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple i386-apple-darwin9 -fsyntax-only -include %s -verify -std=c++11
      3 
      4 // Test with pch.
      5 // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple i386-apple-darwin9 -emit-pch -o %t -std=c++11
      6 // RUN: %clang_cc1 %s -Wunknown-pragmas -Werror -triple i386-apple-darwin9 -fsyntax-only -include-pch %t -verify -std=c++11
      7 
      8 // The first run line creates a pch, and since at that point HEADER is not
      9 // defined, the only thing contained in the pch is the pragma. The second line
     10 // then includes that pch, so HEADER is defined and the actual code is compiled.
     11 // The check then makes sure that the pragma is in effect in the file that
     12 // includes the pch.
     13 
     14 // expected-no-diagnostics
     15 
     16 #ifndef HEADER
     17 #define HEADER
     18 struct SOffH {
     19   short m : 9;
     20   int q : 12;
     21 };
     22 
     23 #pragma ms_struct on
     24 
     25 struct SOnH {
     26   short m : 9;
     27   int q : 12;
     28 };
     29 
     30 #else
     31 
     32 struct SOnC {
     33   short m : 9;
     34   int q : 12;
     35 };
     36 
     37 static_assert(sizeof(SOffH) == 4, "");
     38 static_assert(sizeof(SOnH) == 8, "");
     39 static_assert(sizeof(SOnC) == 8, "");
     40 
     41 #endif
     42