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;
     }