From e69f92b6131eef7d5e653a6d4b48c822420bdecf Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 15 Jul 2008 08:44:08 +0200 Subject: [PATCH] [svn r390] Make the zero value used when no nested context was created of the correct type. Fixes run/class_06. --- gen/classes.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gen/classes.cpp b/gen/classes.cpp index 5512439c..bfc97832 100644 --- a/gen/classes.cpp +++ b/gen/classes.cpp @@ -827,6 +827,9 @@ DValue* DtoNewClass(TypeClass* tc, NewExp* newexp) { Logger::println("Resolving nested context"); LOG_SCOPE; + + LLValue* gep = DtoGEPi(mem,0,2,"tmp"); + // this value might be zero if it was not necessary to generate it ... LLValue* nest = gIR->func()->nestedVar; // ... then revert to the this ptr if there is one @@ -834,10 +837,9 @@ DValue* DtoNewClass(TypeClass* tc, NewExp* newexp) nest = gIR->func()->thisVar; // ... or just use zero, since it must be unused. if (!nest) - nest = llvm::ConstantPointerNull::get(getVoidPtrType()); - assert(nest); - LLValue* gep = DtoGEPi(mem,0,2,"tmp"); - nest = DtoBitCast(nest, gep->getType()->getContainedType(0)); + nest = llvm::Constant::getNullValue(gep->getType()->getContainedType(0)); + else + nest = DtoBitCast(nest, gep->getType()->getContainedType(0)); DtoStore(nest, gep); }