[PATCH] D77520: Treat default values in LangOptions.def in the scope of enums
Serge Pavlov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Apr 5 22:25:09 PDT 2020
sepavloff created this revision.
sepavloff added reviewers: rjmccall, rnk, arsenm.
Herald added a subscriber: wdng.
Herald added a project: clang.
If an option specified in LangOptions.def is of enum type, its default
value should be a member of that enum, so scope qualifier may always
be added in such cases. It allows to omit the scope qualifiers from
'LangOptions.def', which improves readability.
No functional changes.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D77520
Files:
clang/include/clang/Basic/LangOptions.def
clang/lib/Basic/LangOptions.cpp
Index: clang/lib/Basic/LangOptions.cpp
===================================================================
--- clang/lib/Basic/LangOptions.cpp
+++ clang/lib/Basic/LangOptions.cpp
@@ -16,7 +16,8 @@
LangOptions::LangOptions() {
#define LANGOPT(Name, Bits, Default, Description) Name = Default;
-#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) set##Name(Default);
+#define ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
+ set##Name(Type::Default);
#include "clang/Basic/LangOptions.def"
}
@@ -24,7 +25,7 @@
#define LANGOPT(Name, Bits, Default, Description)
#define BENIGN_LANGOPT(Name, Bits, Default, Description) Name = Default;
#define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
- Name = Default;
+ Name = static_cast<unsigned>(Type::Default);
#include "clang/Basic/LangOptions.def"
// These options do not affect AST generation.
Index: clang/include/clang/Basic/LangOptions.def
===================================================================
--- clang/include/clang/Basic/LangOptions.def
+++ clang/include/clang/Basic/LangOptions.def
@@ -121,7 +121,7 @@
LANGOPT(WritableStrings , 1, 0, "writable string support")
LANGOPT(ConstStrings , 1, 0, "const-qualified string support")
ENUM_LANGOPT(LaxVectorConversions, LaxVectorConversionKind, 2,
- LaxVectorConversionKind::All, "lax vector conversions")
+ All, "lax vector conversions")
LANGOPT(ConvergentFunctions, 1, 1, "Assume convergent functions")
LANGOPT(AltiVec , 1, 0, "AltiVec-style vector initializers")
LANGOPT(ZVector , 1, 0, "System z vector extensions")
@@ -293,7 +293,7 @@
BENIGN_LANGOPT(SemanticInterposition , 1, 0, "semantic interposition")
ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,
"stack protector mode")
-ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, TrivialAutoVarInitKind::Uninitialized,
+ENUM_LANGOPT(TrivialAutoVarInit, TrivialAutoVarInitKind, 2, Uninitialized,
"trivial automatic variable initialization")
ENUM_LANGOPT(SignedOverflowBehavior, SignedOverflowBehaviorTy, 2, SOB_Undefined,
"signed integer overflow handling")
@@ -313,7 +313,7 @@
BENIGN_LANGOPT(NumLargeByValueCopy, 32, 0,
"if non-zero, warn about parameter or return Warn if parameter/return value is larger in bytes than this setting. 0 is no check.")
VALUE_LANGOPT(MSCompatibilityVersion, 32, 0, "Microsoft Visual C/C++ Version")
-ENUM_LANGOPT(VtorDispMode, MSVtorDispMode, 2, MSVtorDispMode::ForVBaseOverride,
+ENUM_LANGOPT(VtorDispMode, MSVtorDispMode, 2, ForVBaseOverride,
"How many vtordisps to insert")
LANGOPT(ApplePragmaPack, 1, 0, "Apple gcc-compatible #pragma pack handling")
@@ -339,7 +339,7 @@
BENIGN_LANGOPT(AllowEditorPlaceholders, 1, 0,
"allow editor placeholders in source")
-ENUM_LANGOPT(ClangABICompat, ClangABI, 4, ClangABI::Latest,
+ENUM_LANGOPT(ClangABICompat, ClangABI, 4, Latest,
"version of Clang that we should attempt to be ABI-compatible "
"with")
@@ -353,9 +353,9 @@
COMPATIBLE_VALUE_LANGOPT(MaxTokens, 32, 0, "Max number of tokens per TU or 0")
-ENUM_LANGOPT(SignReturnAddressScope, SignReturnAddressScopeKind, 2, SignReturnAddressScopeKind::None,
+ENUM_LANGOPT(SignReturnAddressScope, SignReturnAddressScopeKind, 2, None,
"Scope of return address signing")
-ENUM_LANGOPT(SignReturnAddressKey, SignReturnAddressKeyKind, 1, SignReturnAddressKeyKind::AKey,
+ENUM_LANGOPT(SignReturnAddressKey, SignReturnAddressKeyKind, 1, AKey,
"Key used for return address signing")
LANGOPT(BranchTargetEnforcement, 1, 0, "Branch-target enforcement enabled")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77520.255218.patch
Type: text/x-patch
Size: 3722 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200406/49f2718d/attachment.bin>
More information about the cfe-commits
mailing list