diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/common/core/sync/rwmutex.d ./src/druntime/src/common/core/sync/rwmutex.d
--- /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/common/core/sync/rwmutex.d	2009-09-25 12:05:32.000000000 -0400
+++ ./src/druntime/src/common/core/sync/rwmutex.d	2009-11-20 18:25:21.000000000 -0500
@@ -242,7 +242,7 @@ class ReadWriteMutex
             case Policy.PREFER_WRITERS:
                  return m_numQueuedWriters > 0;
 
-            case Policy.PREFER_READERS:
+            case Policy.PREFER_READERS!:
             default:
                  break;
             }
@@ -309,7 +309,7 @@ class ReadWriteMutex
                 {
                     switch( m_policy )
                     {
-                    default:
+                    default!:
                     case Policy.PREFER_READERS:
                         if( m_numQueuedReaders > 0 )
                             m_readerQueue.notifyAll();
@@ -321,6 +321,7 @@ class ReadWriteMutex
                             m_writerQueue.notify();
                         else if( m_numQueuedReaders > 0 )
                             m_readerQueue.notifyAll();
+			break;
                     }
                 }
             }
@@ -358,7 +359,7 @@ class ReadWriteMutex
             case Policy.PREFER_READERS:
                 return m_numQueuedReaders > 0;
 
-            case Policy.PREFER_WRITERS:
+            case Policy.PREFER_WRITERS!:
             default:
                  break;
             }
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/aApplyR.d ./src/druntime/src/compiler/dmd/rt/aApplyR.d
--- /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/aApplyR.d	2009-11-01 19:52:46.000000000 -0500
+++ ./src/druntime/src/compiler/dmd/rt/aApplyR.d	2009-11-20 18:25:21.000000000 -0500
@@ -75,7 +75,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -92,7 +92,7 @@ unittest
             case 1:     assert(d == '\U00100456'); break;
             case 2:     assert(d == '\u1234'); break;
             case 3:     assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -139,7 +139,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -156,7 +156,7 @@ unittest
             case 1:     assert(d == '\U00100456'); break;
             case 2:     assert(d == '\u1234'); break;
             case 3:     assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -225,7 +225,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -243,7 +243,7 @@ unittest
             case 2:     assert(d == 0xDC56); break;
             case 3:     assert(d == 0x1234); break;
             case 4:     assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -306,7 +306,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -328,7 +328,7 @@ unittest
             case 6:     assert(d == 0x88); break;
             case 7:     assert(d == 0xB4); break;
             case 8:     assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -385,7 +385,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -407,7 +407,7 @@ unittest
             case 6:     assert(d == 0x88); break;
             case 7:     assert(d == 0xB4); break;
             case 8:     assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -457,7 +457,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -475,7 +475,7 @@ unittest
             case 2:     assert(d == 0xDC56); break;
             case 3:     assert(d == 0x1234); break;
             case 4:     assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -540,7 +540,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -557,7 +557,7 @@ unittest
             case 1:     assert(d == '\U00100456'); assert(k == 4); break;
             case 2:     assert(d == '\u1234'); assert(k == 1); break;
             case 3:     assert(d == 'a'); assert(k == 0); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -606,7 +606,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -623,7 +623,7 @@ unittest
             case 1:     assert(k == 2); assert(d == '\U00100456'); break;
             case 2:     assert(k == 1); assert(d == '\u1234'); break;
             case 3:     assert(k == 0); assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -694,7 +694,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -712,7 +712,7 @@ unittest
             case 2:     assert(k == 4); assert(d == 0xDC56); break;
             case 3:     assert(k == 1); assert(d == 0x1234); break;
             case 4:     assert(k == 0); assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -777,7 +777,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -799,7 +799,7 @@ unittest
             case 6:     assert(k == 1); assert(d == 0x88); break;
             case 7:     assert(k == 1); assert(d == 0xB4); break;
             case 8:     assert(k == 0); assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -857,7 +857,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -879,7 +879,7 @@ unittest
             case 6:     assert(k == 1); assert(d == 0x88); break;
             case 7:     assert(k == 1); assert(d == 0xB4); break;
             case 8:     assert(k == 0); assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -931,7 +931,7 @@ unittest
             case 2:     assert(d == 'l'); break;
             case 3:     assert(d == 'e'); break;
             case 4:     assert(d == 'h'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
@@ -949,7 +949,7 @@ unittest
             case 2:     assert(k == 2); assert(d == 0xDC56); break;
             case 3:     assert(k == 1); assert(d == 0x1234); break;
             case 4:     assert(k == 0); assert(d == 'a'); break;
-            default:    assert(0);
+            default!:   assert(0);
         }
         i++;
     }
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/cover.d ./src/druntime/src/compiler/dmd/rt/cover.d
--- /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/cover.d	2009-11-01 19:52:46.000000000 -0500
+++ ./src/druntime/src/compiler/dmd/rt/cover.d	2009-11-20 18:25:21.000000000 -0500
@@ -149,8 +149,7 @@ static ~this()
                     {
                     case ' ':
                         continue;
-                    case '0': case '1': case '2': case '3': case '4':
-                    case '5': case '6': case '7': case '8': case '9':
+                    case '0': .. case '9':
                         count = count * 10 + c2 - '0';
                         continue;
                     default:
@@ -389,8 +388,7 @@ void splitLines( char[] buf, inout char[
 
         switch( buf[pos] )
         {
-        case '\r':
-        case '\n':
+        case '\r', '\n'!:
             lines ~= buf[beg .. pos];
             beg = pos + 1;
             if( buf[pos] == '\r' && pos < buf.length - 1 && buf[pos + 1] == '\n' )
@@ -439,10 +437,7 @@ char[] expandTabs( char[] str, int tabsi
                 column += nspaces;
                 break;
 
-            case '\r':
-            case '\n':
-            case PS:
-            case LS:
+            case '\r', '\n', PS, LS:
                 column = 0;
                 goto L1;
 
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/switch_.d ./src/druntime/src/compiler/dmd/rt/switch_.d
--- /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/switch_.d	2009-11-01 19:52:46.000000000 -0500
+++ ./src/druntime/src/compiler/dmd/rt/switch_.d	2009-11-20 18:25:21.000000000 -0500
@@ -155,7 +155,7 @@ unittest
 {
     switch (cast(char []) "c")
     {
-         case "coo":
+         case "coo"!:
          default:
              break;
     }
@@ -279,7 +279,7 @@ unittest
 {
     switch (cast(wchar []) "c")
     {
-         case "coo":
+         case "coo"!:
          default:
              break;
     }
@@ -404,7 +404,7 @@ unittest
 {
     switch (cast(dchar []) "c")
     {
-         case "coo":
+         case "coo"!:
          default:
              break;
     }
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/trace.d ./src/druntime/src/compiler/dmd/rt/trace.d
--- /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/compiler/dmd/rt/trace.d	2009-11-01 19:52:46.000000000 -0500
+++ ./src/druntime/src/compiler/dmd/rt/trace.d	2009-11-20 18:25:21.000000000 -0500
@@ -654,7 +654,7 @@ static char* trace_readline(FILE* fp)
         c = fgetc(fp);
         switch (c)
         {
-            case EOF:
+            case EOF!:
                 if (i == 0)
                 {   trace_free(buf);
                     return null;
@@ -711,7 +711,7 @@ static void trace_merge()
                 case '=':               // ignore rest of file
                     trace_free(buf);
                     goto L1;
-                case ' ':
+                case ' '!:
                 case '\t':              // fan in or fan out line
                     count = strtoul(buf,&p,10);
                     if (p == buf)       // if invalid conversion
@@ -722,16 +722,16 @@ static void trace_merge()
                     s = trace_addsym(p[0 .. strlen(p)]);
                     trace_sympair_add(psp,s,count);
                     break;
-                default:
+                default!:
                     if (!isalpha(*buf))
                     {
                         if (!sfanin)
                             psp = &sfanin;
                         continue;       // regard unrecognized line as separator
                     }
-                case '?':
-                case '_':
-                case '$':
+                case '?'!:
+                case '_'!:
+                case '$'!:
                 case '@':
                     p = buf;
                     while (isgraph(*p))
diff -rupdwN /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/gc/basic/gcx.d ./src/druntime/src/gc/basic/gcx.d
--- /home/chad/downloads/dlang/dmd.2.036/src/druntime/src/gc/basic/gcx.d	2009-09-25 12:06:52.000000000 -0400
+++ ./src/druntime/src/gc/basic/gcx.d	2009-11-20 18:25:21.000000000 -0500
@@ -462,7 +462,7 @@ class GC
                         onOutOfMemoryError();
                     state = 0;
                     continue;
-                default:
+                default!:
                     assert(false);
                 }
             }
@@ -1994,7 +1994,7 @@ struct Gcx
                 goto L1;
             case 2:
                 goto Lnomemory;
-            default:
+            default!:
                 assert(false);
             }
         }
