Mercurial > projects > ldc
diff gen/statements.cpp @ 399:0e6b4d65d3f8
Give error messages for invalid casts.
This required passing Loc information to certain functions.
Fixes nocompile/b/bug_cgcs_354_A/B.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 26 Jul 2008 17:19:16 +0200 |
parents | 71a40b62b408 |
children | 672eb4893b55 |
line wrap: on
line diff
--- a/gen/statements.cpp Sat Jul 26 15:42:05 2008 +0200 +++ b/gen/statements.cpp Sat Jul 26 17:19:16 2008 +0200 @@ -67,7 +67,7 @@ DValue* e = exp->toElem(p); if (!e->inPlace()) - DtoAssign(rvar, e); + DtoAssign(loc, rvar, e); DtoEnclosingHandlers(enclosinghandler, NULL); @@ -160,7 +160,7 @@ if (cond_val->getType() != LLType::Int1Ty) { Logger::cout() << "if conditional: " << *cond_val << '\n'; - cond_val = DtoBoolean(cond_e); + cond_val = DtoBoolean(loc, cond_e); } LLValue* ifgoback = llvm::BranchInst::Create(ifbb, elsebb, cond_val, gIR->scopebb()); @@ -248,7 +248,7 @@ // create the condition DValue* cond_e = condition->toElem(p); - LLValue* cond_val = DtoBoolean(cond_e); + LLValue* cond_val = DtoBoolean(loc, cond_e); delete cond_e; // conditional branch @@ -299,7 +299,7 @@ // create the condition DValue* cond_e = condition->toElem(p); - LLValue* cond_val = DtoBoolean(cond_e); + LLValue* cond_val = DtoBoolean(loc, cond_e); delete cond_e; // conditional branch @@ -341,7 +341,7 @@ // create the condition DValue* cond_e = condition->toElem(p); - LLValue* cond_val = DtoBoolean(cond_e); + LLValue* cond_val = DtoBoolean(loc, cond_e); delete cond_e; // conditional branch @@ -677,7 +677,7 @@ // give storage llval = new llvm::AllocaInst(DtoType(e->type), "tmp", gIR->topallocapoint()); DVarValue* vv = new DVarValue(e->type, llval, true); - DtoAssign(vv, val); + DtoAssign(e->loc, vv, val); } else { @@ -994,7 +994,7 @@ if (!value->isRef() && !value->isOut()) { DValue* dst = new DVarValue(value->type, valvar, true); DValue* src = new DVarValue(value->type, value->ir.irLocal->value, true); - DtoAssign(dst, src); + DtoAssign(loc, dst, src); value->ir.irLocal->value = valvar; }