diff gen/statements.cpp @ 364:8014dbd24605 trunk

[svn r385] Fix lvalue cast problems with -= and friends. Fix complex DtoBoolean.
author ChristianK
date Mon, 14 Jul 2008 22:48:03 +0200
parents 44daf304421c
children bfb9d28f045a
line wrap: on
line diff
--- a/gen/statements.cpp	Mon Jul 14 21:49:54 2008 +0200
+++ b/gen/statements.cpp	Mon Jul 14 22:48:03 2008 +0200
@@ -151,7 +151,6 @@
 
     DValue* cond_e = condition->toElem(p);
     LLValue* cond_val = cond_e->getRVal();
-    delete cond_e;
 
     llvm::BasicBlock* oldend = gIR->scopeend();
 
@@ -161,7 +160,7 @@
 
     if (cond_val->getType() != LLType::Int1Ty) {
         Logger::cout() << "if conditional: " << *cond_val << '\n';
-        cond_val = DtoBoolean(cond_val);
+        cond_val = DtoBoolean(cond_e);
     }
     LLValue* ifgoback = llvm::BranchInst::Create(ifbb, elsebb, cond_val, gIR->scopebb());
 
@@ -249,7 +248,7 @@
 
     // create the condition
     DValue* cond_e = condition->toElem(p);
-    LLValue* cond_val = DtoBoolean(cond_e->getRVal());
+    LLValue* cond_val = DtoBoolean(cond_e);
     delete cond_e;
 
     // conditional branch
@@ -300,7 +299,7 @@
 
     // create the condition
     DValue* cond_e = condition->toElem(p);
-    LLValue* cond_val = DtoBoolean(cond_e->getRVal());
+    LLValue* cond_val = DtoBoolean(cond_e);
     delete cond_e;
 
     // conditional branch
@@ -342,7 +341,7 @@
 
     // create the condition
     DValue* cond_e = condition->toElem(p);
-    LLValue* cond_val = DtoBoolean(cond_e->getRVal());
+    LLValue* cond_val = DtoBoolean(cond_e);
     delete cond_e;
 
     // conditional branch