diff --git a/libcxx/test/libcxx/odr_signature.exceptions.sh.cpp b/libcxx/test/libcxx/odr_signature.exceptions.sh.cpp index 6bf60b5e82d3c..c0ba48eb245d2 100644 --- a/libcxx/test/libcxx/odr_signature.exceptions.sh.cpp +++ b/libcxx/test/libcxx/odr_signature.exceptions.sh.cpp @@ -6,9 +6,11 @@ // //===----------------------------------------------------------------------===// -// TODO: Investigate +// ABI tags have no effect in MSVC mode. // XFAIL: msvc +// XFAIL: FROZEN-CXX03-HEADERS-FIXME + // Test that we encode whether exceptions are supported in an ABI tag to avoid // ODR violations when linking TUs that have different values for it. @@ -18,17 +20,19 @@ // RUN: %{cxx} %t.tu1.o %t.tu2.o %t.main.o %{flags} %{link_flags} -o %t.exe // RUN: %{exec} %t.exe +#include "test_macros.h" + // -fno-exceptions #ifdef TU1 # include <__config> -_LIBCPP_HIDE_FROM_ABI inline int f() { return 1; } +_LIBCPP_HIDE_FROM_ABI TEST_NOINLINE inline int f() { return 1; } int tu1() { return f(); } #endif // TU1 // -fexceptions #ifdef TU2 # include <__config> -_LIBCPP_HIDE_FROM_ABI inline int f() { return 2; } +_LIBCPP_HIDE_FROM_ABI TEST_NOINLINE inline int f() { return 2; } int tu2() { return f(); } #endif // TU2 diff --git a/libcxx/test/libcxx/odr_signature.hardening.sh.cpp b/libcxx/test/libcxx/odr_signature.hardening.sh.cpp index 0dc280bf28182..8daf3f3fd0463 100644 --- a/libcxx/test/libcxx/odr_signature.hardening.sh.cpp +++ b/libcxx/test/libcxx/odr_signature.hardening.sh.cpp @@ -6,9 +6,11 @@ // //===----------------------------------------------------------------------===// -// TODO: Investigate +// ABI tags have no effect in MSVC mode. // XFAIL: msvc +// XFAIL: FROZEN-CXX03-HEADERS-FIXME + // Test that we encode the hardening mode in an ABI tag to avoid ODR violations // when linking TUs that have different values for it. @@ -21,31 +23,33 @@ // RUN: %{cxx} %t.tu1.o %t.tu2.o %t.tu3.o %t.tu4.o %t.main.o %{flags} %{link_flags} -o %t.exe // RUN: %{exec} %t.exe +#include "test_macros.h" + // fast hardening mode #ifdef TU1 # include <__config> -_LIBCPP_HIDE_FROM_ABI inline int f() { return 1; } +_LIBCPP_HIDE_FROM_ABI TEST_NOINLINE inline int f() { return 1; } int tu1() { return f(); } #endif // TU1 // extensive hardening mode #ifdef TU2 # include <__config> -_LIBCPP_HIDE_FROM_ABI inline int f() { return 2; } +_LIBCPP_HIDE_FROM_ABI TEST_NOINLINE inline int f() { return 2; } int tu2() { return f(); } #endif // TU2 // debug hardening mode #ifdef TU3 # include <__config> -_LIBCPP_HIDE_FROM_ABI inline int f() { return 3; } +_LIBCPP_HIDE_FROM_ABI TEST_NOINLINE inline int f() { return 3; } int tu3() { return f(); } #endif // TU3 // No hardening #ifdef TU4 # include <__config> -_LIBCPP_HIDE_FROM_ABI inline int f() { return 4; } +_LIBCPP_HIDE_FROM_ABI TEST_NOINLINE inline int f() { return 4; } int tu4() { return f(); } #endif // TU4