[clang] 4e16a75 - [clang][NFC] Annotate `Sema/ScopeInfo.h` with `preferred_type`
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Sat Feb 10 12:58:51 PST 2024
Author: Vlad Serebrennikov
Date: 2024-02-10T23:58:26+03:00
New Revision: 4e16a75902d5718f4932fae9b2a07c410cd0ba34
URL: https://github.com/llvm/llvm-project/commit/4e16a75902d5718f4932fae9b2a07c410cd0ba34
DIFF: https://github.com/llvm/llvm-project/commit/4e16a75902d5718f4932fae9b2a07c410cd0ba34.diff
LOG: [clang][NFC] Annotate `Sema/ScopeInfo.h` with `preferred_type`
This helps debuggers to display values in bit-fields in a more helpful way.
Added:
Modified:
clang/include/clang/Sema/ScopeInfo.h
Removed:
################################################################################
diff --git a/clang/include/clang/Sema/ScopeInfo.h b/clang/include/clang/Sema/ScopeInfo.h
index 6eaa74382685ba..076dcaaf223a34 100644
--- a/clang/include/clang/Sema/ScopeInfo.h
+++ b/clang/include/clang/Sema/ScopeInfo.h
@@ -97,6 +97,8 @@ class PossiblyUnreachableDiag {
: PD(PD), Loc(Loc), Stmts(Stmts) {}
};
+enum class FirstCoroutineStmtKind { co_return, co_await, co_yield };
+
/// Retains information about a function, method, or block that is
/// currently being parsed.
class FunctionScopeInfo {
@@ -170,6 +172,7 @@ class FunctionScopeInfo {
/// An enumeration representing the kind of the first coroutine statement
/// in the function. One of co_return, co_await, or co_yield.
+ LLVM_PREFERRED_TYPE(FirstCoroutineStmtKind)
unsigned char FirstCoroutineStmtKind : 2;
/// Whether we found an immediate-escalating expression.
@@ -502,22 +505,30 @@ class FunctionScopeInfo {
assert(FirstCoroutineStmtLoc.isInvalid() &&
"first coroutine statement location already set");
FirstCoroutineStmtLoc = Loc;
- FirstCoroutineStmtKind = llvm::StringSwitch<unsigned char>(Keyword)
- .Case("co_return", 0)
- .Case("co_await", 1)
- .Case("co_yield", 2);
+ FirstCoroutineStmtKind =
+ llvm::StringSwitch<unsigned char>(Keyword)
+ .Case("co_return",
+ llvm::to_underlying(FirstCoroutineStmtKind::co_return))
+ .Case("co_await",
+ llvm::to_underlying(FirstCoroutineStmtKind::co_await))
+ .Case("co_yield",
+ llvm::to_underlying(FirstCoroutineStmtKind::co_yield));
}
StringRef getFirstCoroutineStmtKeyword() const {
assert(FirstCoroutineStmtLoc.isValid()
&& "no coroutine statement available");
- switch (FirstCoroutineStmtKind) {
- case 0: return "co_return";
- case 1: return "co_await";
- case 2: return "co_yield";
- default:
- llvm_unreachable("FirstCoroutineStmtKind has an invalid value");
+ auto Value =
+ static_cast<enum FirstCoroutineStmtKind>(FirstCoroutineStmtKind);
+ switch (Value) {
+ case FirstCoroutineStmtKind::co_return:
+ return "co_return";
+ case FirstCoroutineStmtKind::co_await:
+ return "co_await";
+ case FirstCoroutineStmtKind::co_yield:
+ return "co_yield";
};
+ llvm_unreachable("FirstCoroutineStmtKind has an invalid value");
}
void setNeedsCoroutineSuspends(bool value = true) {
@@ -582,25 +593,31 @@ class Capture {
QualType CaptureType;
/// The CaptureKind of this capture.
+ LLVM_PREFERRED_TYPE(CaptureKind)
unsigned Kind : 2;
/// Whether this is a nested capture (a capture of an enclosing capturing
/// scope's capture).
+ LLVM_PREFERRED_TYPE(bool)
unsigned Nested : 1;
/// Whether this is a capture of '*this'.
+ LLVM_PREFERRED_TYPE(bool)
unsigned CapturesThis : 1;
/// Whether an explicit capture has been odr-used in the body of the
/// lambda.
+ LLVM_PREFERRED_TYPE(bool)
unsigned ODRUsed : 1;
/// Whether an explicit capture has been non-odr-used in the body of
/// the lambda.
+ LLVM_PREFERRED_TYPE(bool)
unsigned NonODRUsed : 1;
/// Whether the capture is invalid (a capture was required but the entity is
/// non-capturable).
+ LLVM_PREFERRED_TYPE(bool)
unsigned Invalid : 1;
public:
More information about the cfe-commits
mailing list