diff gen/toir.cpp @ 1372:229e02867307

Fix format-string bugs by adding __attribute__((__format__)) in all applicable places and fixing all warnings my gcc produced. Among other things, this should fix several segfaults (including one I just ran into).
author Frits van Bommel <fvbommel wxs.nl>
date Sun, 17 May 2009 00:15:25 +0200
parents 8026319762be
children 3fb15be5ab6d
line wrap: on
line diff
--- a/gen/toir.cpp	Sat May 16 23:44:27 2009 +0200
+++ b/gen/toir.cpp	Sun May 17 00:15:25 2009 +0200
@@ -313,7 +313,8 @@
 
 LLConstant* RealExp::toConstElem(IRState* p)
 {
-    Logger::print("RealExp::toConstElem: %s @ %s | %LX\n", toChars(), type->toChars(), value);
+    Logger::print("RealExp::toConstElem: %s @ %s | %LX\n", toChars(), type->toChars(),
+        0xFFFFFFFFFFUL & *(long long unsigned*)&value);
     LOG_SCOPE;
     Type* t = type->toBasetype();
     return DtoConstFP(t, value);
@@ -2473,7 +2474,7 @@
         IF_LOG Logger::println("expr: %p", expr);
         if (expr)
         {
-            IF_LOG Logger::println("expr = %s", it.index, expr->toChars());
+            IF_LOG Logger::println("expr %zu = %s", it.index, expr->toChars());
             LLValue* v = DtoExprValue(vd->type, expr);
             initvalues.push_back(v);
         }
@@ -2606,7 +2607,7 @@
         Expression* ekey = (Expression*)keys->data[i];
         Expression* eval = (Expression*)values->data[i];
 
-        Logger::println("(%u) aa[%s] = %s", i, ekey->toChars(), eval->toChars());
+        Logger::println("(%zu) aa[%s] = %s", i, ekey->toChars(), eval->toChars());
 
         // index
         DValue* key = ekey->toElem(p);