diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d38eb783f1919518fe7211b42251ffe0e9366615..e54886b24446e68e14430d39eeea48e58a71232e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-07-01  Richard Guenther  <rguenther@suse.de>
+
+	* emit-rtl.c (set_mem_attributes_minus_bitpos): Use unsigned
+	types for offsets.
+
 2010-07-01  Joern Rennecke  <joern.rennecke@embecosm.com>
 
 	PR target/44732
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 4e38d89d34875f973f2b96aa90a8fb9be4abeb14..6dae9962cffb258d47da524810aed4bc93226c1f 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1616,10 +1616,10 @@ set_mem_attributes_minus_bitpos (rtx ref, tree t, int objectp,
     align = MAX (align, TYPE_ALIGN (type));
   else if (TREE_CODE (t) == MEM_REF)
     {
-      HOST_WIDE_INT aoff = BITS_PER_UNIT;
+      unsigned HOST_WIDE_INT aoff = BITS_PER_UNIT;
       if (host_integerp (TREE_OPERAND (t, 1), 1))
 	{
-	  HOST_WIDE_INT ioff = TREE_INT_CST_LOW (TREE_OPERAND (t, 1));
+	  unsigned HOST_WIDE_INT ioff = TREE_INT_CST_LOW (TREE_OPERAND (t, 1));
 	  aoff = (ioff & -ioff) * BITS_PER_UNIT;
 	}
       if (TREE_CODE (TREE_OPERAND (t, 0)) == ADDR_EXPR