[clang] 3c4ecc4 - [clang][Interp][NFC] Refactor VisitImplicitValueInitExpr
Timm Bäder via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 14 23:52:56 PDT 2023
Author: Timm Bäder
Date: 2023-10-15T08:52:43+02:00
New Revision: 3c4ecc4628601d07201780ea9ed23770a5a2d86c
URL: https://github.com/llvm/llvm-project/commit/3c4ecc4628601d07201780ea9ed23770a5a2d86c
DIFF: https://github.com/llvm/llvm-project/commit/3c4ecc4628601d07201780ea9ed23770a5a2d86c.diff
LOG: [clang][Interp][NFC] Refactor VisitImplicitValueInitExpr
The FIXME comment here is not really correct. Also, handle the case of
non-primitive array element types differently, to reduce indentation.
Added:
Modified:
clang/lib/AST/Interp/ByteCodeExprGen.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/Interp/ByteCodeExprGen.cpp b/clang/lib/AST/Interp/ByteCodeExprGen.cpp
index bda9cf1500804f7..e9e20b222d5d34f 100644
--- a/clang/lib/AST/Interp/ByteCodeExprGen.cpp
+++ b/clang/lib/AST/Interp/ByteCodeExprGen.cpp
@@ -504,19 +504,13 @@ bool ByteCodeExprGen<Emitter>::VisitImplicitValueInitExpr(const ImplicitValueIni
assert(AT);
const auto *CAT = cast<ConstantArrayType>(AT);
size_t NumElems = CAT->getSize().getZExtValue();
+ PrimType ElemT = classifyPrim(CAT->getElementType());
- if (std::optional<PrimType> ElemT = classify(CAT->getElementType())) {
- // TODO(perf): For int and bool types, we can probably just skip this
- // since we memset our Block*s to 0 and so we have the desired value
- // without this.
- for (size_t I = 0; I != NumElems; ++I) {
- if (!this->visitZeroInitializer(*ElemT, CAT->getElementType(), E))
- return false;
- if (!this->emitInitElem(*ElemT, I, E))
- return false;
- }
- } else {
- assert(false && "default initializer for non-primitive type");
+ for (size_t I = 0; I != NumElems; ++I) {
+ if (!this->visitZeroInitializer(ElemT, CAT->getElementType(), E))
+ return false;
+ if (!this->emitInitElem(ElemT, I, E))
+ return false;
}
return true;
More information about the cfe-commits
mailing list