// RUN: %clang_cc1 -fsyntax-only -triple x86_64-pc-linux -ast-print %s -o - | FileCheck %s

float func_1(float x, float y) {
#pragma STDC FENV_ACCESS ON
  if (x != 0) {
    return y;
  }
  return x + y;
}

// CHECK-LABEL: float func_1(float x, float y) {
// CHECK-NEXT:  #pragma STDC FENV_ACCESS ON
// CHECK-NEXT:      if (x != 0) {
// CHECK-NEXT:          return y;
// CHECK-NEXT:      }
// CHECK-NEXT:      return x + y;
// CHECK-NEXT:  }

float func_2(float x, float y) {
#pragma STDC FENV_ACCESS ON
  if (x != 0) {
  #pragma STDC FENV_ACCESS OFF
    return y;
  }
  return x + y;
}

// CHECK-LABEL: float func_2(float x, float y) {
// CHECK-NEXT:  #pragma STDC FENV_ACCESS ON
// CHECK-NEXT:      if (x != 0) {
// CHECK-NEXT:      #pragma STDC FENV_ACCESS OFF
// CHECK-NEXT:          return y;
// CHECK-NEXT:      }
// CHECK-NEXT:      return x + y;
// CHECK-NEXT:  }

float func_3(float x, float y) {
#pragma STDC FENV_ROUND FE_DOWNWARD
  return x + y;
}

// CHECK-LABEL: float func_3(float x, float y) {
// CHECK-NEXT:  #pragma STDC FENV_ROUND FE_DOWNWARD
// CHECK-NEXT:      return x + y;
// CHECK-NEXT:  }

float func_4(float x, float y, float z) {
#pragma STDC FENV_ACCESS ON
#pragma clang fp exceptions(maytrap)
#pragma STDC FENV_ROUND FE_UPWARD
  if (z != 0) {
  #pragma STDC FENV_ACCESS OFF
  #pragma STDC FENV_ROUND FE_TOWARDZERO
    return z + x;
  }
  return x + y;
}

// CHECK-LABEL: float func_4(float x, float y, float z) {
// CHECK-NEXT:  #pragma STDC FENV_ACCESS ON
// CHECK-NEXT:  #pragma clang fp exceptions(maytrap)
// CHECK-NEXT:  #pragma STDC FENV_ROUND FE_UPWARD
// CHECK-NEXT:      if (z != 0) {
// CHECK-NEXT:      #pragma STDC FENV_ACCESS OFF
// CHECK-NEXT:      #pragma STDC FENV_ROUND FE_TOWARDZERO
// CHECK-NEXT:          return z + x;
// CHECK-NEXT:      }
// CHECK-NEXT:      return x + y;
// CHECK-NEXT:  }
