diff gen/llvmhelpers.cpp @ 622:26fce59fe80a

Wrapped all the most potentially expensive logging calls in a conditional to only do work when actually requested. Commented some logging calls that could potentially write out many megabytes of type dumps.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 01 Oct 2008 18:32:31 +0200
parents 83ca663ecc20
children df196c8dea26
line wrap: on
line diff
--- a/gen/llvmhelpers.cpp	Sun Sep 28 21:09:21 2008 +0200
+++ b/gen/llvmhelpers.cpp	Wed Oct 01 18:32:31 2008 +0200
@@ -416,7 +416,7 @@
 
 void DtoAssign(Loc& loc, DValue* lhs, DValue* rhs)
 {
-    Logger::cout() << "DtoAssign(...);\n";
+    Logger::println("DtoAssign(...);\n");
     LOG_SCOPE;
 
     Type* t = lhs->getType()->toBasetype();
@@ -472,7 +472,8 @@
         else {
             LLValue* l = lhs->getLVal();
             LLValue* r = rhs->getRVal();
-            Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n';
+            if (Logger::enabled())
+                Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n';
             DtoAggrCopy(l, r);
         }
     }
@@ -480,8 +481,11 @@
         assert(t2->ty == Tclass);
         LLValue* l = lhs->getLVal();
         LLValue* r = rhs->getRVal();
-        Logger::cout() << "l : " << *l << '\n';
-        Logger::cout() << "r : " << *r << '\n';
+        if (Logger::enabled())
+        {
+            Logger::cout() << "l : " << *l << '\n';
+            Logger::cout() << "r : " << *r << '\n';
+        }
         r = DtoBitCast(r, l->getType()->getContainedType(0));
         DtoStore(r, l);
     }
@@ -499,7 +503,8 @@
     else {
         LLValue* l = lhs->getLVal();
         LLValue* r = rhs->getRVal();
-        Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n';
         const LLType* lit = l->getType()->getContainedType(0);
         if (r->getType() != lit) {
             // handle lvalue cast assignments
@@ -510,7 +515,8 @@
             else {
                 r = DtoCast(loc, rhs, lhs->getType())->getRVal();
             }
-            Logger::cout() << "really assign\nlhs: " << *l << "rhs: " << *r << '\n';
+            if (Logger::enabled())
+                Logger::cout() << "really assign\nlhs: " << *l << "rhs: " << *r << '\n';
             assert(r->getType() == l->getType()->getContainedType(0));
         }
         gIR->ir->CreateStore(r, l);
@@ -584,7 +590,8 @@
 
     if (to->isintegral()) {
         if (fromsz < tosz) {
-            Logger::cout() << "cast to: " << *tolltype << '\n';
+            if (Logger::enabled())
+                Logger::cout() << "cast to: " << *tolltype << '\n';
             if (from->isunsigned() || from->ty == Tbool) {
                 rval = new llvm::ZExtInst(rval, tolltype, "tmp", gIR->scopebb());
             } else {
@@ -610,7 +617,8 @@
         }
     }
     else if (to->ty == Tpointer) {
-        Logger::cout() << "cast pointer: " << *tolltype << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "cast pointer: " << *tolltype << '\n';
         rval = gIR->ir->CreateIntToPtr(rval, tolltype, "tmp");
     }
     else {
@@ -633,7 +641,8 @@
 
     if (totype->ty == Tpointer || totype->ty == Tclass) {
         LLValue* src = val->getRVal();
-        Logger::cout() << "src: " << *src << "to type: " << *tolltype << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "src: " << *src << "to type: " << *tolltype << '\n';
         rval = DtoBitCast(src, tolltype);
     }
     else if (totype->isintegral()) {
@@ -910,7 +919,9 @@
 
     //Logger::cout() << "initializer: " << *_init << '\n';
     if (_type != _init->getType()) {
-        Logger::cout() << "got type '" << *_init->getType() << "' expected '" << *_type << "'\n";
+        if (Logger::enabled())
+            Logger::cout() << "got type '" << *_init->getType() << "' expected '" << *_type << "'\n";
+
         // zero initalizer
         if (_init->isNullValue())
             _init = llvm::Constant::getNullValue(_type);
@@ -930,7 +941,8 @@
             _init = DtoConstStaticArray(_type, _init);
         }
         else {
-            Logger::cout() << "Unexpected initializer type: " << *_type << '\n';
+            if (Logger::enabled())
+                Logger::cout() << "Unexpected initializer type: " << *_type << '\n';
             //assert(0);
         }
     }
@@ -950,9 +962,12 @@
     llvm::GlobalVariable* gvar = llvm::cast<llvm::GlobalVariable>(vd->ir.irGlobal->value);
     if (!(vd->storage_class & STCextern) && (vd->getModule() == gIR->dmodule || istempl))
     {
-        Logger::println("setting initializer");
-        Logger::cout() << "global: " << *gvar << '\n';
-        Logger::cout() << "init:   " << *_init << '\n';
+        if (Logger::enabled())
+        {
+            Logger::println("setting initializer");
+            Logger::cout() << "global: " << *gvar << '\n';
+            Logger::cout() << "init:   " << *_init << '\n';
+        }
         gvar->setInitializer(_init);
         // do debug info
         if (global.params.symdebug)
@@ -1168,7 +1183,8 @@
                 assert(vd->ir.irLocal->value);
             }
 
-            Logger::cout() << "llvm value for decl: " << *vd->ir.irLocal->value << '\n';
+            if (Logger::enabled())
+                Logger::cout() << "llvm value for decl: " << *vd->ir.irLocal->value << '\n';
             DValue* ie = DtoInitializer(vd->ir.irLocal->value, vd->init);
         }
 
@@ -1292,7 +1308,8 @@
     assert(_init);
     if (_type != _init->getType())
     {
-        Logger::cout() << "field init is: " << *_init << " type should be " << *_type << '\n';
+        if (Logger::enabled())
+            Logger::cout() << "field init is: " << *_init << " type should be " << *_type << '\n';
         if (t->ty == Tsarray)
         {
             const LLArrayType* arrty = isaArray(_type);
@@ -1379,7 +1396,8 @@
 {
     Logger::println("building type %s from expression (%s) of type %s", base->toChars(), exp->toChars(), exp->type->toChars());
     const LLType* dstTy = DtoType(base);
-    Logger::cout() << "final llvm type requested: " << *dstTy << '\n';
+    if (Logger::enabled())
+        Logger::cout() << "final llvm type requested: " << *dstTy << '\n';
     
     LLConstant* val = exp->toConstElem(gIR);
     
@@ -1510,8 +1528,11 @@
     else if (ty == Tpointer || ty == Tclass) {
         LLValue* val = dval->getRVal();
         LLValue* zero = LLConstant::getNullValue(val->getType());
-        Logger::cout() << "val:  " << *val << '\n';
-        Logger::cout() << "zero: " << *zero << '\n';
+        if (Logger::enabled())
+        {
+            Logger::cout() << "val:  " << *val << '\n';
+            Logger::cout() << "zero: " << *zero << '\n';
+        }
         return gIR->ir->CreateICmpNE(val, zero, "tmp");
     }
     // dynamic array