diff -ur dmd/cast.c dmd.build/cast.c
--- dmd/cast.c	2011-01-26 11:18:19.227392000 +0000
+++ dmd.build/cast.c	2011-01-26 15:45:08.615115080 +0000
@@ -330,6 +330,9 @@
             }
             goto Lyes;
         }
+
+        default:
+            break;
     }
     return Expression::implicitConvTo(t);
 
@@ -433,6 +436,9 @@
                             return MATCHexact;
                     }
                     break;
+
+                default:
+                    break;
             }
         }
     }
@@ -1598,6 +1604,9 @@
         case Tdchar:
             e = e->castTo(sc, Type::tuns32);
             break;
+
+        default:
+            break;
     }
     return e;
 }
diff -ur dmd/expression.c dmd.build/expression.c
--- dmd/expression.c	2011-01-26 11:18:19.171392000 +0000
+++ dmd.build/expression.c	2011-01-26 15:25:22.335115081 +0000
@@ -707,6 +707,9 @@
                     case Timaginary32:
                         arg = arg->castTo(sc, Type::timaginary64);
                         break;
+
+                    default:
+                        break;
                 }
             }
 
@@ -9986,6 +9989,9 @@
             case Tcomplex80:
                 e2 = e2->castTo(sc, e1->type);
                 break;
+
+            default:
+                break;
         }
         switch (e2->type->toBasetype()->ty)
         {
@@ -9994,6 +10000,9 @@
             case Tcomplex80:
                 e1 = e1->castTo(sc, e2->type);
                 break;
+
+            default:
+                break;
         }
     }
 #if 0
diff -ur dmd/interpret.c dmd.build/interpret.c
--- dmd/interpret.c	2011-01-26 11:18:20.123392000 +0000
+++ dmd.build/interpret.c	2011-01-26 16:01:54.423115081 +0000
@@ -3100,11 +3100,13 @@
     {   // Special case: deal with compiler-inserted assert(&this, "null this")
         AddrExp *ade = (AddrExp *)this->e1;
         if (ade->e1->op == TOKthis && istate->localThis)
+        {
             if (ade->e1->op == TOKdotvar
                 && ((DotVarExp *)(istate->localThis))->e1->op == TOKthis)
                 return getVarExp(loc, istate, ((DotVarExp*)(istate->localThis))->var);
             else
                 return istate->localThis->interpret(istate);
+        }
     }
     if (this->e1->op == TOKthis)
     {
diff -ur dmd/lexer.c dmd.build/lexer.c
--- dmd/lexer.c	2011-01-26 11:18:19.247392000 +0000
+++ dmd.build/lexer.c	2011-01-26 12:53:01.035392001 +0000
@@ -2540,6 +2540,8 @@
             case TOKfloat80v:
                 result = TOKimaginary80v;
                 break;
+            default:
+                break;
         }
     }
 #if _WIN32 && __DMC__
diff -ur dmd/linux.mak dmd.build/linux.mak
--- dmd/linux.mak	2011-01-26 11:18:20.319392000 +0000
+++ dmd.build/linux.mak	2011-01-26 16:04:17.215115080 +0000
@@ -12,7 +12,7 @@
 
 #COV=-fprofile-arcs -ftest-coverage
 
-WARNINGS=-Wno-deprecated -Wstrict-aliasing
+WARNINGS=-Wuninitialized -Wcast-qual -Wno-deprecated -Wstrict-aliasing
 
 #GFLAGS = $(WARNINGS) -D__near= -D__pascal= -fno-exceptions -g -DDEBUG=1 $(COV)
 GFLAGS = $(WARNINGS) -D__near= -D__pascal= -fno-exceptions -O2
Only in dmd.build: make.log
diff -ur dmd/mtype.c dmd.build/mtype.c
--- dmd/mtype.c	2011-01-26 11:18:20.007392000 +0000
+++ dmd.build/mtype.c	2011-01-26 16:10:52.275115081 +0000
@@ -1139,6 +1139,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      fvalue = Port::ldbl_max; goto Lfvalue;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::min)
@@ -1168,6 +1169,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      fvalue = LDBL_MIN;      goto Lfvalue;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::nan)
@@ -1187,6 +1189,9 @@
                 fvalue = Port::nan;
                 goto Lfvalue;
             }
+
+            default:
+                goto Ldefault;
         }
     }
     else if (ident == Id::infinity)
@@ -1204,6 +1209,9 @@
             case Tfloat80:
                 fvalue = Port::infinity;
                 goto Lfvalue;
+
+            default:
+                goto Ldefault;
         }
     }
     else if (ident == Id::dig)
@@ -1219,6 +1227,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      ivalue = LDBL_DIG;      goto Lint;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::epsilon)
@@ -1234,6 +1243,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      fvalue = LDBL_EPSILON;  goto Lfvalue;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::mant_dig)
@@ -1249,6 +1259,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      ivalue = LDBL_MANT_DIG; goto Lint;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::max_10_exp)
@@ -1264,6 +1275,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      ivalue = LDBL_MAX_10_EXP;       goto Lint;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::max_exp)
@@ -1279,6 +1291,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      ivalue = LDBL_MAX_EXP;  goto Lint;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::min_10_exp)
@@ -1294,6 +1307,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      ivalue = LDBL_MIN_10_EXP;       goto Lint;
+            default:            goto Ldefault;
         }
     }
     else if (ident == Id::min_exp)
@@ -1309,6 +1323,7 @@
             case Tcomplex80:
             case Timaginary80:
             case Tfloat80:      ivalue = LDBL_MIN_EXP;  goto Lint;
+            default:            goto Ldefault;
         }
     }
 
@@ -1448,6 +1463,9 @@
         case Tvoid:
             error(loc, "void does not have a default initializer");
             return new ErrorExp();
+        
+        default:
+            break;
     }
     return new IntegerExp(loc, value, this);
 }
@@ -1469,6 +1487,9 @@
         case Tcomplex64:
         case Tcomplex80:
             return 0;           // no
+
+        default:
+            break;
     }
     return 1;                   // yes
 }
@@ -1931,6 +1952,9 @@
             error(loc, "can't have array of %s", tbn->toChars());
             tbn = next = tint32;
             break;
+
+        default:
+            break;
     }
     if (tbn->isscope())
         error(loc, "cannot have array of auto %s", tbn->toChars());
@@ -2109,6 +2133,9 @@
             error(loc, "can't have array of %s", tbn->toChars());
             tn = next = tint32;
             break;
+
+        default:
+            break;
     }
     if (tn->isscope())
         error(loc, "cannot have array of scope %s", tn->toChars());
@@ -2298,6 +2325,9 @@
         case Ttuple:
             error(loc, "can't have associative array key of %s", key->toChars());
             break;
+
+        default:
+            break;
     }
     next = next->semantic(loc,sc);
     switch (next->toBasetype()->ty)
@@ -2307,6 +2337,9 @@
         case Tnone:
             error(loc, "can't have associative array of %s", next->toChars());
             break;
+
+        default:
+            break;
     }
     if (next->isscope())
         error(loc, "cannot have array of auto %s", next->toChars());
@@ -2490,6 +2523,9 @@
             error(loc, "can't have pointer to %s", n->toChars());
             n = tint32;
             break;
+
+        default:
+            break;
     }
     if (n != next)
         deco = NULL;
diff -ur dmd/opover.c dmd.build/opover.c
--- dmd/opover.c	2011-01-26 11:18:20.043392000 +0000
+++ dmd.build/opover.c	2011-01-26 15:47:25.235115079 +0000
@@ -432,6 +432,7 @@
                 case TOKlg:
                 case TOKleg:
                 case TOKue:
+                default:
                     break;
             }
 
diff -ur dmd/parse.c dmd.build/parse.c
--- dmd/parse.c	2011-01-26 11:18:20.187392000 +0000
+++ dmd.build/parse.c	2011-01-26 16:11:38.319115080 +0000
@@ -378,6 +378,9 @@
                     case TOKexport:
                         error("redundant protection attribute");
                         break;
+
+                    default:
+                        break;
                 }
                 a = parseBlock();
                 s = new ProtDeclaration(prot, a);
@@ -2123,6 +2126,9 @@
                 *pt = ta;
                 break;
             }
+
+            default:
+                break;
         }
         break;
     }
@@ -3854,6 +3860,9 @@
                 if (!isParameters(&t))
                     return FALSE;
                 continue;
+
+            default:
+                break;
         }
         break;
     }
@@ -4878,6 +4887,9 @@
                         }
                         return e;
                     }
+
+                    default:
+                        break;
                 }
             }
 #endif
diff -ur dmd/root/dchar.h dmd.build/root/dchar.h
--- dmd/root/dchar.h	2011-01-26 11:18:20.303392000 +0000
+++ dmd.build/root/dchar.h	2011-01-26 12:49:13.275391999 +0000
@@ -152,10 +152,10 @@
 struct Dchar
 {
     static dchar *inc(dchar *p) { return p + 1; }
-    static dchar *dec(dchar *pstart, dchar *p) { return p - 1; }
+    static dchar *dec(dchar *pstart, dchar *p) { (void)pstart; return p - 1; }
     static int len(const dchar *p) { return strlen(p); }
     static int get(dchar *p) { return *p & 0xFF; }
-    static int getprev(dchar *pstart, dchar *p) { return p[-1] & 0xFF; }
+    static int getprev(dchar *pstart, dchar *p) { (void)pstart; return p[-1] & 0xFF; }
     static dchar *put(dchar *p, unsigned c) { *p = c; return p + 1; }
     static int cmp(dchar *s1, dchar *s2) { return strcmp(s1, s2); }
     static int memcmp(const dchar *s1, const dchar *s2, int nchars) { return ::memcmp(s1, s2, nchars); }
