Index: runtime/BitmapPoolAllocator/PoolAllocatorBitMask.cpp
===================================================================
--- runtime/BitmapPoolAllocator/PoolAllocatorBitMask.cpp	(revision 88765)
+++ runtime/BitmapPoolAllocator/PoolAllocatorBitMask.cpp	(working copy)
@@ -22,6 +22,7 @@
 #include "PoolSlab.h"
 
 #include <cassert>
+#include <cstring>
 
 #define DEBUG(x)
 
Index: runtime/DebugRuntime/RuntimeChecks.cpp
===================================================================
--- runtime/DebugRuntime/RuntimeChecks.cpp	(revision 88765)
+++ runtime/DebugRuntime/RuntimeChecks.cpp	(working copy)
@@ -93,7 +93,7 @@
 //
 static bool
 isRewritePtr (void * p) {
-  unsigned ptr = (unsigned) p;
+  intptr_t ptr = (intptr_t) p;
 
   if ((InvalidLower < ptr ) && (ptr < InvalidUpper))
     return true;
@@ -312,7 +312,7 @@
     // Compute the real result pointer (the value the GEP would really have on
     // the original pointer value).
     //
-    Dest = (void *)((unsigned) RealSrc + ((unsigned) Dest - (unsigned) Source));
+    Dest = (void *)((intptr_t) RealSrc + ((intptr_t) Dest - (intptr_t) Source));
 
     //
     // Retrieve the original bounds of the object.
@@ -365,14 +365,14 @@
       }
       return ptr;
     } else {
-      unsigned allocPC = 0;
+      intptr_t allocPC = 0;
       unsigned allocID = 0;
       unsigned char * allocSF = (unsigned char *) "<Unknown>";
       unsigned allocLN = 0;
       PDebugMetaData debugmetadataptr = NULL;
       void * S , * end;
       if (dummyPool.DPTree.find(ObjStart, S, end, debugmetadataptr)) {
-        allocPC = ((unsigned) (debugmetadataptr->allocPC)) - 5;
+        allocPC = ((intptr_t) (debugmetadataptr->allocPC)) - 5;
         allocID  = debugmetadataptr->allocID;
         allocSF  = (unsigned char *) debugmetadataptr->SourceFile;
         allocLN  = debugmetadataptr->lineno;
@@ -530,11 +530,11 @@
       }
       return ptr;
     } else {
-      unsigned allocPC = 0;
+      intptr_t allocPC = 0;
       unsigned allocID = 0;
       unsigned char * allocSF = (unsigned char *) "<Unknown>";
       unsigned allocLN = 0;
-      allocPC = ((unsigned) (debugmetadataptr->allocPC)) - 5;
+      allocPC = ((intptr_t) (debugmetadataptr->allocPC)) - 5;
       allocID  = debugmetadataptr->allocID;
       allocSF  = (unsigned char *) debugmetadataptr->SourceFile;
       allocLN  = debugmetadataptr->lineno;
Index: runtime/DebugRuntime/PageManager.cpp
===================================================================
--- runtime/DebugRuntime/PageManager.cpp	(revision 88765)
+++ runtime/DebugRuntime/PageManager.cpp	(working copy)
@@ -172,7 +172,7 @@
   //
   // Find the length in bytes of the memory we want to remap.
   //
-  unsigned map_length = ((unsigned) finish_addr - (unsigned) source_addr) + PPageSize - 1;
+  ptrdiff_t map_length = ((intptr_t) finish_addr - (intptr_t) source_addr) + PPageSize - 1;
 
   //
   // The below code seems to double map physical memory correctly.  However,
Index: runtime/DebugRuntime/PoolAllocatorBitMask.cpp
===================================================================
--- runtime/DebugRuntime/PoolAllocatorBitMask.cpp	(revision 88765)
+++ runtime/DebugRuntime/PoolAllocatorBitMask.cpp	(working copy)
@@ -535,7 +535,7 @@
           "poolfree: No debugmetadataptr\n");
 
   if (logregs) {
-    fprintf(stderr, "pool_unregister:1387: start = 0x%08x, end = 0x%x, offset = 0x%08x\n", (unsigned)start, (unsigned)(end), offset);
+    fprintf(stderr, "pool_unregister:1387: start = 0x%p, end = 0x%p, offset = 0x%08x\n", start, end, offset);
     fprintf(stderr, "pool_unregister:1388: len = %d\n", len);
     fflush (stderr);
   }
@@ -572,7 +572,7 @@
       v.SourceFile = SourceFilep,
       v.lineNo = lineno,
       v.objStart = start;
-      v.objLen =  (unsigned)end - (unsigned)start + 1;
+      v.objLen =  (intptr_t)end - (intptr_t)start + 1;
     ReportMemoryViolation(&v);
     return;
   }
@@ -614,7 +614,7 @@
 
   if (logregs) {
     fprintf(stderr, "pool_unregister:1397: NumPPage = %d\n", NumPPage);
-    fprintf(stderr, "pool_unregister:1398: canonical address is 0x%x\n", (unsigned)CanonNode);
+    fprintf(stderr, "pool_unregister:1398: canonical address is 0x%p\n", CanonNode);
     fflush (stderr);
   }
 
@@ -984,7 +984,7 @@
   //
   // Determine the number of pages that the object occupies.
   //
-  unsigned len = (unsigned)end - (unsigned)start;
+  ptrdiff_t len = (intptr_t)end - (intptr_t)start;
   unsigned offset = (unsigned)((long)Node & (PPageSize - 1));
   unsigned NumPPage = (len / PPageSize) + 1;
   if ( (len - (NumPPage-1) * PPageSize) > (PPageSize - offset) )
@@ -1129,9 +1129,9 @@
   //
   // Determine the number of bytes to copy into the new object.
   //
-  unsigned length = NumBytes;
-  if ((((unsigned)(end)) - ((unsigned)(S)) + 1) < NumBytes) {
-    length = ((unsigned)(end)) - ((unsigned)(S)) + 1;
+  ptrdiff_t length = NumBytes;
+  if ((((intptr_t)(end)) - ((intptr_t)(S)) + 1) < NumBytes) {
+    length = ((intptr_t)(end)) - ((intptr_t)(S)) + 1;
   }
 
   //
Index: runtime/DebugRuntime/DebugReport.h
===================================================================
--- runtime/DebugRuntime/DebugReport.h	(revision 88765)
+++ runtime/DebugRuntime/DebugReport.h	(working copy)
@@ -34,7 +34,7 @@
   //  objstart - The start of the object in which the source pointer was found.
   //  objlen   - The length of the object in which the source pointer was found.
   const void * objStart;
-  unsigned int objLen;
+  ptrdiff_t objLen;
   virtual void print (std::ostream & OS) const;
 };
 
Index: Makefile.common.in
===================================================================
--- Makefile.common.in	(revision 88765)
+++ Makefile.common.in	(working copy)
@@ -29,7 +29,7 @@
 
 # All of the code should additionally look inside the pool allocation source
 # code for include files
-SC_FLAGS = -DSAFECODE -I$(POOLALLOC_SRCDIR)/include -I$(POOLALLOC_OBJDIR)/include -Werror -Wall
+SC_FLAGS = -DSAFECODE -I$(POOLALLOC_SRCDIR)/include -I$(POOLALLOC_OBJDIR)/include -Wall
 CFLAGS   += $(SC_FLAGS) 
 CPPFLAGS += $(SC_FLAGS)
 CXXFLAGS += $(SC_FLAGS) -Wno-deprecated
