llvm/libcxx/test/std/depr/depr.numeric.limits.has.denorm/deprecated.verify.cpp

//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20

// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-unused-value

#include <limits>

#include "type_algorithms.h"

void func() {
  std::numeric_limits<bool>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<bool>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<bool>::denorm_min();

  std::numeric_limits<int>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<int>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<int>::denorm_min();

  std::numeric_limits<float>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<float>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<float>::denorm_min();

  std::numeric_limits<double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<double>::denorm_min();

  std::numeric_limits<long double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<long double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<long double>::denorm_min();

  std::numeric_limits<const bool>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const bool>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const bool>::denorm_min();

  std::numeric_limits<const int>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const int>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const int>::denorm_min();

  std::numeric_limits<const float>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const float>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const float>::denorm_min();

  std::numeric_limits<const double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const double>::denorm_min();

  std::numeric_limits<const long double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const long double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const long double>::denorm_min();

  std::numeric_limits<volatile bool>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<volatile bool>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<volatile bool>::denorm_min();

  std::numeric_limits<volatile int>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<volatile int>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<volatile int>::denorm_min();

  std::numeric_limits<volatile float>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<volatile float>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<volatile float>::denorm_min();

  std::numeric_limits<volatile double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<volatile double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<volatile double>::denorm_min();

  std::numeric_limits<volatile long double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<volatile long double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<volatile long double>::denorm_min();

  std::numeric_limits<const volatile bool>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const volatile bool>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const volatile bool>::denorm_min();

  std::numeric_limits<const volatile int>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const volatile int>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const volatile int>::denorm_min();

  std::numeric_limits<const volatile float>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const volatile float>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const volatile float>::denorm_min();

  std::numeric_limits<const volatile double>::has_denorm;      // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<const volatile double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const volatile double>::denorm_min();

  std::numeric_limits<const volatile long double>::has_denorm; // expected-warning {{'has_denorm' is deprecated}}
  std::numeric_limits<
      const volatile long double>::has_denorm_loss; // expected-warning {{'has_denorm_loss' is deprecated}}
  std::numeric_limits<const volatile long double>::denorm_min();

  std::denorm_indeterminate; // expected-warning {{'denorm_indeterminate' is deprecated}}
  std::denorm_absent;        // expected-warning {{'denorm_absent' is deprecated}}
  std::denorm_present;       // expected-warning {{'denorm_present' is deprecated}}
}