[all-commits] [llvm/llvm-project] 140bcd: [LLDB][ClangExpression] Fix initialization of stat...
Michael137 via All-commits
all-commits at lists.llvm.org
Thu Jul 21 06:24:42 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 140bcd369b0fd61f19cdeabf4be2fe68d5f9804b
https://github.com/llvm/llvm-project/commit/140bcd369b0fd61f19cdeabf4be2fe68d5f9804b
Author: Michael Buch <michaelbuch12 at gmail.com>
Date: 2022-07-21 (Thu, 21 Jul 2022)
Changed paths:
M lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
M lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py
M lldb/test/API/lang/cpp/const_static_integral_member/main.cpp
Log Message:
-----------
[LLDB][ClangExpression] Fix initialization of static enum alias members
`IntegerLiteral::Create` operates on integer types. For that reason
when we parse DWARF into an AST, when we encounter a constant
initialized enum member variable, we try to determine the underlying
integer type before creating the `IntegerLiteral`. However, we
currently don't desugar the type and for enum typedefs
`dyn_cast<EnumType>` fails. In debug builds this triggers following
assert:
```
Assertion failed: (type->isIntegerType() && "Illegal type in IntegerLiteral"), function IntegerLiteral, file Expr.cpp, line 892
```
This patch turns the `dyn_cast<EnumType>` into a `getAs<EnumType>`
which `dyn_cast`s the canonical type, allowing us to get to the
underlying integer type.
**Testing**
* API test
* Manual repro is fixed
Differential Revision: https://reviews.llvm.org/D130213
More information about the All-commits
mailing list