diff --git a/clang/include/clang/Basic/Features.def b/clang/include/clang/Basic/Features.def --- a/clang/include/clang/Basic/Features.def +++ b/clang/include/clang/Basic/Features.def @@ -256,5 +256,7 @@ EXTENSION(gnu_asm_goto_with_outputs, LangOpts.GNUAsm) EXTENSION(matrix_types, LangOpts.MatrixTypes) +FEATURE(cxx_abi_relative_vtable, LangOpts.CPlusPlus && LangOpts.RelativeCXXABIVTables) + #undef EXTENSION #undef FEATURE diff --git a/clang/test/Lexer/has_feature_cxx_abi_relative_vtable.cpp b/clang/test/Lexer/has_feature_cxx_abi_relative_vtable.cpp new file mode 100644 --- /dev/null +++ b/clang/test/Lexer/has_feature_cxx_abi_relative_vtable.cpp @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -E %s -triple x86_64-linux-gnu -x c++ -o - | FileCheck %s --check-prefix=NO-RELATIVE-VTABLE +// RUN: %clang_cc1 -E %s -triple x86_64-linux-gnu -x c++ -fexperimental-relative-c++-abi-vtables -o - | FileCheck %s --check-prefix=RELATIVE-VTABLE +// RUN: %clang_cc1 -E %s -triple x86_64-linux-gnu -x c++ -fno-experimental-relative-c++-abi-vtables -o - | FileCheck %s --check-prefix=NO-RELATIVE-VTABLE +// RUN: %clang_cc1 -E %s -triple x86_64-linux-gnu -x c -fexperimental-relative-c++-abi-vtables -o - | FileCheck %s --check-prefix=NO-RELATIVE-VTABLE + +#if __has_feature(cxx_abi_relative_vtable) +int has_relative_vtable(); +#else +int has_no_relative_vtable(); +#endif + +// RELATIVE-VTABLE: has_relative_vtable +// NO-RELATIVE-VTABLE: has_no_relative_vtable