From 2bf07893647c2518538f19c4dd86e814bea6d9fe Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Fri, 26 Apr 2013 21:50:51 +0200 Subject: [PATCH] Fixed vector global initialization for > 1 byte elements. --- gen/llvmhelpers.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gen/llvmhelpers.cpp b/gen/llvmhelpers.cpp index 3ab33053..76f64787 100644 --- a/gen/llvmhelpers.cpp +++ b/gen/llvmhelpers.cpp @@ -1501,12 +1501,17 @@ LLConstant* DtoConstExpInit(Loc loc, Type* type, Expression* exp) if (base->ty == Tvector) { LLConstant* val = exp->toConstElem(gIR); + TypeVector* tv = (TypeVector*)base; + assert(tv->basetype->ty == Tsarray); + dinteger_t elemCount = + static_cast(tv->basetype)->dim->toInteger(); + #if LDC_LLVM_VER == 300 - std::vector Elts(tv->size(loc), val); + std::vector Elts(elemCount, val); return llvm::ConstantVector::get(Elts); #else - return llvm::ConstantVector::getSplat(tv->size(loc), val); + return llvm::ConstantVector::getSplat(elemCount, val); #endif }