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