Index: libcxx/include/__config =================================================================== --- libcxx/include/__config +++ libcxx/include/__config @@ -38,10 +38,10 @@ # define _LIBCPP_ABI_VERSION 1 #endif -#ifndef __STDC_HOSTED__ +#if __STDC_HOSTED__ == 0 # define _LIBCPP_FREESTANDING #endif #ifndef _LIBCPP_STD_VER # if __cplusplus <= 201103L # define _LIBCPP_STD_VER 11 Index: libcxx/test/libcxx/libcpp_freestanding.sh.cpp =================================================================== --- /dev/null +++ libcxx/test/libcxx/libcpp_freestanding.sh.cpp @@ -0,0 +1,19 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +// Test that _LIBCPP_FREESTANDING is not defined when -ffreestanding is not passed +// to the compiler but defined when -ffreestanding is passed to the compiler. + +// RUN: %{cxx} %{flags} %{compile_flags} -E -dM %s | FileCheck %s +// RUN: %{cxx} %{flags} %{compile_flags} -E -dM -ffreestanding %s | FileCheck -check-prefix=CHECK-FREESTANDING %s + +#include <__config> + +// CHECK-NOT: #define _LIBCPP_FREESTANDING +// CHECK-FREESTANDING: #define _LIBCPP_FREESTANDING