diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d25df32cd9eb1004bdd96fe8b0fce2e5f4908da0..d823e22a41ad1491e9b9f960e81ab4e3a4608116 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-15  Richard Guenther  <rguenther@suse.de>
+
+	* tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not
+	strip components for unknown size accesses.
+
 2008-08-15  Wolfgang Gellerich  <gellerich@de.ibm.com>
 
 	* config/s390/2097.md New file.
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index ff8af4f14dd6d10444ec6b06c08ea78e1fe1c60e..2e34bd99d6b478973c8ebabcdcf8ddec3d01b2c1 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -1976,6 +1976,7 @@ maybe_fold_offset_to_reference (tree base, tree offset, tree orig_type)
 					     &size, &maxsize);
 	  gcc_assert (newbase);
 	  if (size == maxsize
+	      && size != -1
 	      && !(sub_offset & (BITS_PER_UNIT - 1)))
 	    {
 	      base = newbase;