[clang] 5390606 - [OpaquePtr][Clang] Add CLANG_ENABLE_OPAQUE_POINTERS cmake option

Nikita Popov via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 7 01:15:20 PDT 2022


Author: Nikita Popov
Date: 2022-04-07T10:14:56+02:00
New Revision: 5390606aa963a7b415da65aa8120efbbafd30401

URL: https://github.com/llvm/llvm-project/commit/5390606aa963a7b415da65aa8120efbbafd30401
DIFF: https://github.com/llvm/llvm-project/commit/5390606aa963a7b415da65aa8120efbbafd30401.diff

LOG: [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

Added: 
    

Modified: 
    clang/CMakeLists.txt
    clang/include/clang/Config/config.h.cmake
    clang/include/clang/Driver/Options.td

Removed: 
    


################################################################################
diff  --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index 931eecd9c9681..3a77e7b0c8d60 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -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)")

diff  --git a/clang/include/clang/Config/config.h.cmake b/clang/include/clang/Config/config.h.cmake
index 10a93293c0512..680cc7310f76d 100644
--- a/clang/include/clang/Config/config.h.cmake
+++ b/clang/include/clang/Config/config.h.cmake
@@ -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

diff  --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 486276546770a..0f7cfa7eb883f 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -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">>;


        


More information about the cfe-commits mailing list