stor-layout.c (initialize_sizetypes): Set SIZETYPE earlier, clear cache on copied...
authorNathan Sidwell <nathan@gcc.gnu.org>
Fri, 20 Aug 2004 14:17:39 +0000 (14:17 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Fri, 20 Aug 2004 14:17:39 +0000 (14:17 +0000)
* stor-layout.c (initialize_sizetypes): Set SIZETYPE earlier,
clear cache on copied sizetype.

* ada/utils2.c (build_allocator): Use build_int_cst for negative
size types.

* cp/class.c (build_vtbl_initializer): Use build_int_cst for
negative size types.
* cp/decl.c (complete_array_type): Likewise.
* cp/method.c (finish_thunk): Likewise.

From-SVN: r86320

gcc/ChangeLog
gcc/ada/ChangeLog
gcc/ada/utils2.c
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/decl.c
gcc/cp/method.c
gcc/stor-layout.c

index e6471f70e92ee6cd1f6fa0aee33433e328eb44de..d6bba043dc4d733f88e70b49315a4f92b0a9ad71 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * stor-layout.c (initialize_sizetypes): Set SIZETYPE earlier,
+       clear cache on copied sizetype.
+
 2004-08-20  Ben Elliston  <bje@au.ibm.com>
 
        * configure.ac: Don't escape apostrophe in --enable-coverage help.
        * config/i386/xmmintrin.h: Include <mm_malloc.h>.
 
 2004-08-03  H.J. Lu  <hongjiu.lu@intel.com>
-           Tanguy FautrÃ\83?  <tfautre@pandora.be>
+           Tanguy Fautrà <tfautre@pandora.be>
 
        * config/i386/pmm_malloc.h: New file.
 
index 7bc0828143e4bbbd998b59ca85c140e336c4d5da..6ea32826406cd66dedb338461541c36893ee8884 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * utils2.c (build_allocator): Use build_int_cst for negative
+       size types.
+
 2004-08-18  Richard Henderson  <rth@redhat.com>
 
        * misc.c (LANG_HOOKS_HONOR_READONLY): Remove.
index 726c9f2ac84559d0a5bd13847b3e64d1bc08a5e5..60de87d89d6825a1780c1a2bfdfbcff08e8bef1e 100644 (file)
@@ -1799,7 +1799,7 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
       /* If the size overflows, pass -1 so the allocator will raise
         storage error.  */
       if (TREE_CODE (size) == INTEGER_CST && TREE_OVERFLOW (size))
-       size = ssize_int (-1);
+       size = build_int_cst (ssizetype, -1, -1);
 
       storage = build_call_alloc_dealloc (NULL_TREE, size,
                                          TYPE_ALIGN (storage_type),
@@ -1872,7 +1872,7 @@ build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
   /* If the size overflows, pass -1 so the allocator will raise
      storage error.  */
   if (TREE_CODE (size) == INTEGER_CST && TREE_OVERFLOW (size))
-    size = ssize_int (-1);
+    size = build_int_cst (ssizetype, -1, -1);
 
   /* If this is a type whose alignment is larger than the
      biggest we support in normal alignment and this is in
index cf2e0b85b13fbca947cfe06f1140dd0f4b5f7522..372c27e0416bcf989770907dd472514c25f7889d 100644 (file)
@@ -1,3 +1,10 @@
+2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * class.c (build_vtbl_initializer): Use build_int_cst for
+       negative size types.
+       * decl.c (complete_array_type): Likewise.
+       * method.c (finish_thunk): Likewise.
+
 2004-08-20  Andreas Tobler  <a.tobler@schweiz.ch>
 
        * tree.c: Remove unused mark_local_for_remap_r.
index 1989dca91af04dd4ef9d98cd372928c28e7d3909..c7294146b3a0030270787177f4d14cc13b59e5bf 100644 (file)
@@ -7278,7 +7278,8 @@ build_vtbl_initializer (tree binfo,
   vid.ctor_vtbl_p = !same_type_p (BINFO_TYPE (rtti_binfo), t);
   vid.generate_vcall_entries = true;
   /* The first vbase or vcall offset is at index -3 in the vtable.  */
-  vid.index = ssize_int (-3 * TARGET_VTABLE_DATA_ENTRY_DISTANCE);
+  vid.index = build_int_cst (ssizetype,
+                            -3 * TARGET_VTABLE_DATA_ENTRY_DISTANCE, -1);
 
   /* Add entries to the vtable for RTTI.  */
   build_rtti_vtbl_entries (binfo, &vid);
index 0c60f3c6d35f99d5b5b5ef84c2117bc0a77a9f64..36e83d9c1a52ac08b6d3bdb4838a0a6d55865780 100644 (file)
@@ -5260,7 +5260,7 @@ complete_array_type (tree type, tree initial_value, int do_default)
        {
          tree elts = CONSTRUCTOR_ELTS (initial_value);
 
-         maxindex = ssize_int (-1);
+         maxindex = build_int_cst (ssizetype, -1, -1);
          for (; elts; elts = TREE_CHAIN (elts))
            {
              if (TREE_PURPOSE (elts))
index 13fe0a492aa4bec2af32ac69d2c230fe35519d0f..d0bad5df4fb8f5dadf8559096c40621059c96a57 100644 (file)
@@ -179,7 +179,9 @@ void
 finish_thunk (tree thunk)
 {
   tree function, name;
-  tree fixed_offset = ssize_int (THUNK_FIXED_OFFSET (thunk));
+  tree fixed_offset = build_int_cst (ssizetype,
+                                    THUNK_FIXED_OFFSET (thunk),
+                                    THUNK_FIXED_OFFSET (thunk) < 0 ? -1 : 0);
   tree virtual_offset = THUNK_VIRTUAL_OFFSET (thunk);
 
   my_friendly_assert (!DECL_NAME (thunk) && DECL_THUNK_P (thunk), 20021127);
index 156702f652f7567c9b30ed8d8986b6c8b0cd1af8..19de9b6d0a44d9173a84d54a47fcd23b0ab413e1 100644 (file)
@@ -1863,12 +1863,12 @@ initialize_sizetypes (void)
   TYPE_MODE (t) = SImode;
   TYPE_ALIGN (t) = GET_MODE_ALIGNMENT (SImode);
   TYPE_USER_ALIGN (t) = 0;
+  TYPE_IS_SIZETYPE (t) = 1;
   TYPE_SIZE (t) = build_int_cst (t, GET_MODE_BITSIZE (SImode), 0);
   TYPE_SIZE_UNIT (t) = build_int_cst (t, GET_MODE_SIZE (SImode), 0);
   TYPE_UNSIGNED (t) = 1;
   TYPE_PRECISION (t) = GET_MODE_BITSIZE (SImode);
   TYPE_MIN_VALUE (t) = build_int_cst (t, 0, 0);
-  TYPE_IS_SIZETYPE (t) = 1;
 
   /* 1000 avoids problems with possible overflow and is certainly
      larger than any size value we'd want to be storing.  */
@@ -1878,6 +1878,8 @@ initialize_sizetypes (void)
      size_int_wide.  */
   sizetype = t;
   bitsizetype = copy_node (t);
+  TYPE_CACHED_VALUES (bitsizetype) = NULL_TREE;
+  TYPE_CACHED_VALUES_P (bitsizetype) = 0;
 }
 
 /* Set sizetype to TYPE, and initialize *sizetype accordingly.