56 lines · c
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3void f1(void) {4 int x = 0;5/* expected-error@+1 {{'#pragma fp_contract' can only appear at file scope or at the start of a compound statement}} */6#pragma STDC FP_CONTRACT ON7}8 9void f2(void) {10 #pragma STDC FP_CONTRACT OFF11 #pragma STDC FP_CONTRACT ON 12}13 14struct S1 {15// expected-error@+1 {{this pragma cannot appear in struct declaration}}16#pragma STDC FP_CONTRACT ON17 float f1;18};19 20union U1 {21 float f1;22 float f2;23// expected-error@+1 {{this pragma cannot appear in union declaration}}24#pragma STDC FP_CONTRACT ON25};26 27float fp_reassoc_fail(float a, float b) {28 // CHECK-LABEL: fp_reassoc_fail29 // expected-error@+2{{'#pragma clang fp' can only appear at file scope or at the start of a compound statement}}30 float c = a + b;31#pragma clang fp reassociate(off)32 return c - b;33}34 35float fp_reassoc_no_fast(float a, float b) {36// CHECK-LABEL: fp_reassoc_no_fast37// expected-error@+1{{unexpected argument 'fast' to '#pragma clang fp reassociate'; expected 'on' or 'off'}}38#pragma clang fp reassociate(fast)39 return a - b;40}41 42float fp_recip_fail(float a, float b) {43 // CHECK-LABEL: fp_recip_fail44 // expected-error@+2{{'#pragma clang fp' can only appear at file scope or at the start of a compound statement}}45 float c = a + b;46#pragma clang fp reciprocal(off)47 return c - b;48}49 50float fp_recip_no_fast(float a, float b) {51// CHECK-LABEL: fp_recip_no_fast52// expected-error@+1{{unexpected argument 'fast' to '#pragma clang fp reciprocal'; expected 'on' or 'off'}}53#pragma clang fp reciprocal(fast)54 return a - b;55}56