OSDN Git Service

* lto-streamer-out.c (write_symbol): Use int_size_in_bytes rather than
authordavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Nov 2010 13:29:46 +0000 (13:29 +0000)
committerdavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Nov 2010 13:29:46 +0000 (13:29 +0000)
assembling high and low parts of size if not using 32-bit HWINT; else
use DECL_SIZE_UNITS, not DECL_SIZE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166600 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/lto-streamer-out.c

index db8367d..78e48c4 100644 (file)
@@ -1,3 +1,9 @@
+2010-11-11  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * lto-streamer-out.c (write_symbol): Use int_size_in_bytes rather than
+       assembling high and low parts of size if not using 32-bit HWINT; else
+       use DECL_SIZE_UNITS, not DECL_SIZE.
+
 2010-11-11  Martin Jambor  <mjambor@suse.cz>
 
        PR tree-optimization/46383
index 03150b7..2a4d985 100644 (file)
@@ -2435,8 +2435,12 @@ write_symbol (struct lto_streamer_cache_d *cache,
   if (kind == GCCPK_COMMON
       && DECL_SIZE (t)
       && TREE_CODE (DECL_SIZE (t)) == INTEGER_CST)
-    size = (((uint64_t) TREE_INT_CST_HIGH (DECL_SIZE (t))) << 32)
-      | TREE_INT_CST_LOW (DECL_SIZE (t));
+    {
+      size = (HOST_BITS_PER_WIDE_INT >= 64)
+       ? (uint64_t) int_size_in_bytes (TREE_TYPE (t))
+       : (((uint64_t) TREE_INT_CST_HIGH (DECL_SIZE_UNIT (t))) << 32)
+               | TREE_INT_CST_LOW (DECL_SIZE_UNIT (t));
+    }
   else
     size = 0;