[Clang] Enable opaque pointers by default

Enable opaque pointers by default in clang, which can be disabled
either via cc1 option -no-opaque-pointers or cmake flag
-DCLANG_ENABLE_OPAQUE_POINTERS=OFF.

See https://llvm.org/docs/OpaquePointers.html for context.

Differential Revision: https://reviews.llvm.org/D123300
This commit is contained in:
Nikita Popov 2022-04-07 11:59:38 +02:00
parent 69f7f15683
commit 702d5de438
2 changed files with 5 additions and 3 deletions

View File

@ -251,7 +251,7 @@ option(CLANG_DEFAULT_PIE_ON_LINUX "Default to -fPIE and -pie on linux-gnu" ON)
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)
set(CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL ON)
elseif(CLANG_ENABLE_OPAQUE_POINTERS)
set(CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL ON)
else()

View File

@ -195,8 +195,10 @@ Transition State
================
As of April 2022 both LLVM and Clang have complete support for opaque pointers,
but typed pointers are still the default. Opaque pointers will be enabled by
default in Clang soon.
and opaque pointers are enabled by default in Clang. It is possible to
temporarily restore the old default using the
``-DCLANG_ENABLE_OPAQUE_POINTERS=OFF`` cmake option. Opaque pointers can be
disabled for a single Clang invocation using ``-Xclang -no-opaque-pointers``.
The MLIR and Polly monorepo projects are not fully compatible with opaque
pointers yet.