https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/200755
None >From 4a06d2a20a0f64e7ef34e2596b09e8b87898eb05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Mon, 1 Jun 2026 10:48:53 +0200 Subject: [PATCH] test --- clang/lib/AST/ByteCode/Compiler.cpp | 38 +++++++++-------------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index 774a853950837..15a0c2b5ee503 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -3829,7 +3829,7 @@ bool Compiler<Emitter>::VisitCXXScalarValueInitExpr( if (OptPrimType T = classify(Ty)) return this->visitZeroInitializer(*T, Ty, E); - if (const auto *CT = Ty->getAs<ComplexType>()) { + if (Ty->isAnyComplexType() || Ty->isVectorType()) { if (!Initializing) { UnsignedOrNone LocalIndex = allocateLocal(E); if (!LocalIndex) @@ -3838,40 +3838,26 @@ bool Compiler<Emitter>::VisitCXXScalarValueInitExpr( return false; } - // Initialize both fields to 0. - QualType ElemQT = CT->getElementType(); - PrimType ElemT = classifyPrim(ElemQT); - - for (unsigned I = 0; I != 2; ++I) { - if (!this->visitZeroInitializer(ElemT, ElemQT, E)) - return false; - if (!this->emitInitElem(ElemT, I, E)) - return false; - } - return true; - } - - if (const auto *VT = Ty->getAs<VectorType>()) { - // FIXME: Code duplication with the _Complex case above. - if (!Initializing) { - UnsignedOrNone LocalIndex = allocateLocal(E); - if (!LocalIndex) - return false; - if (!this->emitGetPtrLocal(*LocalIndex, E)) - return false; + QualType ElemQT; + unsigned NumElems; + if (const auto *CT = Ty->getAs<ComplexType>()) { + NumElems = 2; + ElemQT = CT->getElementType(); + } else { + const auto *VT = Ty->castAs<VectorType>(); + NumElems = VT->getNumElements(); + ElemQT = VT->getElementType(); } - // Initialize all fields to 0. - QualType ElemQT = VT->getElementType(); PrimType ElemT = classifyPrim(ElemQT); - for (unsigned I = 0, N = VT->getNumElements(); I != N; ++I) { + // Initialize all fields to 0. + for (unsigned I = 0, N = NumElems; I != N; ++I) { if (!this->visitZeroInitializer(ElemT, ElemQT, E)) return false; if (!this->emitInitElem(ElemT, I, E)) return false; } - return true; } return false; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
