1 // RUN: %clang_cc1 -E -dM %s -o - | FileCheck %s -strict-whitespace
2 
3 #ifdef __FLT_EVAL_METHOD__
4 #if __FLT_EVAL_METHOD__ == 3
5 #define __GLIBC_FLT_EVAL_METHOD 2
6 #else
7 #define __GLIBC_FLT_EVAL_METHOD __FLT_EVAL_METHOD__
8 #endif
9 #elif defined __x86_64__
10 #define __GLIBC_FLT_EVAL_METHOD 0
11 #else
12 #define __GLIBC_FLT_EVAL_METHOD 2
13 #endif
14 
15 #if __GLIBC_FLT_EVAL_METHOD == 0 || __GLIBC_FLT_EVAL_METHOD == 16
16 #define Name "One"
17 #elif __GLIBC_FLT_EVAL_METHOD == 1
18 #define Name "Two"
19 #elif __GLIBC_FLT_EVAL_METHOD == 2
20 #define Name "Unset on command line"
21 #elif __GLIBC_FLT_EVAL_METHOD == 32
22 #define Name "Four"
23 #elif __GLIBC_FLT_EVAL_METHOD == 33
24 #define Name "Five"
25 #elif __GLIBC_FLT_EVAL_METHOD == 64
26 #define Name "Six"
27 #elif __GLIBC_FLT_EVAL_METHOD == 65
28 #define Name "Seven"
29 #elif __GLIBC_FLT_EVAL_METHOD == 128
30 #define Name "Eight"
31 #elif __GLIBC_FLT_EVAL_METHOD == 129
32 #define Name "Nine"
33 #else
34 #error "Unknown __GLIBC_FLT_EVAL_METHOD"
35 #endif
36 
37 int foo() {
38   // CHECK: #define Name "Unset on command line"
39   return Name;
40 }
41 
42 #if __FLT_EVAL_METHOD__ == 3
43 #define Val "val0"
44 #endif
45 
46 #pragma fp eval_method(double)
47 
48 #if __FLT_EVAL_METHOD__ == 0
49 #define Val "val1"
50 #elif __FLT_EVAL_METHOD__ == 1
51 #define Val "val2"
52 #elif __FLT_EVAL_METHOD__ == 2
53 #define Val "val3"
54 #endif
55 
56 int goo() {
57   // CHECK: #define Val "val0"
58   return Name;
59 }
60