[OpaquePtr][Clang] Add CLANG_ENABLE_OPAQUE_POINTERS cmake option

This option controls whether -opaque-pointers or -no-opaque-pointers
is the default. Once opaque pointers are enabled by default, this
will provide a simple way to temporarily opt-out of the change.

Differential Revision: https://reviews.llvm.org/D123122
This commit is contained in:
Nikita Popov 2022-04-05 14:45:51 +02:00
parent 02da964350
commit 5390606aa9
3 changed files with 15 additions and 1 deletions

View File

@ -247,6 +247,17 @@ set(CLANG_SPAWN_CC1 OFF CACHE BOOL
option(CLANG_DEFAULT_PIE_ON_LINUX "Default to -fPIE and -pie on linux-gnu" ON)
# Manually handle default so we can change the meaning of a cached default.
set(CLANG_ENABLE_OPAQUE_POINTERS "DEFAULT" CACHE STRING
"Enable opaque pointers by default")
if(CLANG_ENABLE_OPAQUE_POINTERS STREQUAL "DEFAULT")
set(CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL OFF)
elseif(CLANG_ENABLE_OPAQUE_POINTERS)
set(CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL ON)
else()
set(CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL OFF)
endif()
# TODO: verify the values against LangStandards.def?
set(CLANG_DEFAULT_STD_C "" CACHE STRING
"Default standard to use for C/ObjC code (IDENT from LangStandards.def, empty for platform default)")

View File

@ -89,4 +89,7 @@
/* Spawn a new process clang.exe for the CC1 tool invocation, when necessary */
#cmakedefine01 CLANG_SPAWN_CC1
/* Whether to enable opaque pointers by default */
#cmakedefine01 CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL
#endif

View File

@ -5507,7 +5507,7 @@ defm enable_noundef_analysis : BoolOption<"",
defm opaque_pointers : BoolOption<"",
"opaque-pointers",
CodeGenOpts<"OpaquePointers">,
DefaultFalse,
Default<"CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL">,
PosFlag<SetTrue, [], "Enable">,
NegFlag<SetFalse, [], "Disable">,
BothFlags<[], " opaque pointers">>;