brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · cbc153a Raw
70 lines · c
1// RUN: %clang_cc1 -triple x86_64-pc-linux -ast-print %s -o - | FileCheck %s2 3float func_1(float x, float y) {4#pragma STDC FENV_ACCESS ON5  if (x != 0) {6    return y;7  }8  return x + y;9}10 11// CHECK-LABEL: float func_1(float x, float y) {12// CHECK-NEXT:  #pragma STDC FENV_ACCESS ON13// CHECK-NEXT:      if (x != 0) {14// CHECK-NEXT:          return y;15// CHECK-NEXT:      }16// CHECK-NEXT:      return x + y;17// CHECK-NEXT:  }18 19float func_2(float x, float y) {20#pragma STDC FENV_ACCESS ON21  if (x != 0) {22  #pragma STDC FENV_ACCESS OFF23    return y;24  }25  return x + y;26}27 28// CHECK-LABEL: float func_2(float x, float y) {29// CHECK-NEXT:  #pragma STDC FENV_ACCESS ON30// CHECK-NEXT:      if (x != 0) {31// CHECK-NEXT:      #pragma STDC FENV_ACCESS OFF32// CHECK-NEXT:          return y;33// CHECK-NEXT:      }34// CHECK-NEXT:      return x + y;35// CHECK-NEXT:  }36 37float func_3(float x, float y) {38#pragma STDC FENV_ROUND FE_DOWNWARD39  return x + y;40}41 42// CHECK-LABEL: float func_3(float x, float y) {43// CHECK-NEXT:  #pragma STDC FENV_ROUND FE_DOWNWARD44// CHECK-NEXT:      return x + y;45// CHECK-NEXT:  }46 47float func_4(float x, float y, float z) {48#pragma STDC FENV_ACCESS ON49#pragma clang fp exceptions(maytrap)50#pragma STDC FENV_ROUND FE_UPWARD51  if (z != 0) {52  #pragma STDC FENV_ACCESS OFF53  #pragma STDC FENV_ROUND FE_TOWARDZERO54    return z + x;55  }56  return x + y;57}58 59// CHECK-LABEL: float func_4(float x, float y, float z) {60// CHECK-NEXT:  #pragma STDC FENV_ACCESS ON61// CHECK-NEXT:  #pragma clang fp exceptions(maytrap)62// CHECK-NEXT:  #pragma STDC FENV_ROUND FE_UPWARD63// CHECK-NEXT:      if (z != 0) {64// CHECK-NEXT:      #pragma STDC FENV_ACCESS OFF65// CHECK-NEXT:      #pragma STDC FENV_ROUND FE_TOWARDZERO66// CHECK-NEXT:          return z + x;67// CHECK-NEXT:      }68// CHECK-NEXT:      return x + y;69// CHECK-NEXT:  }70