llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/200755.diff 1 Files Affected: - (modified) clang/lib/AST/ByteCode/Compiler.cpp (+12-26) ``````````diff 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; `````````` </details> https://github.com/llvm/llvm-project/pull/200755 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
