]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
stor-layout.c (layout_type, [...]): Make size FUNCTION_BOUNDARY, not POINTER_SIZE...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Fri, 5 Mar 2004 16:19:41 +0000 (16:19 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 5 Mar 2004 16:19:41 +0000 (11:19 -0500)
* stor-layout.c (layout_type, case FUNCTION_TYPE): Make size
FUNCTION_BOUNDARY, not POINTER_SIZE * 2.

From-SVN: r78972

gcc/ChangeLog
gcc/stor-layout.c

index 5600ef50af4323b35d251b0ef4e82f345dab647d..6698fb8d95fb475f0dd355cb4b3b85ccf381d4a1 100644 (file)
@@ -1,3 +1,8 @@
+2004-03-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * stor-layout.c (layout_type, case FUNCTION_TYPE): Make size
+       FUNCTION_BOUNDARY, not POINTER_SIZE * 2.
+
 2004-03-05  Ian Lance Taylor  <ian@wasabisystems.com>
 
        * configure.ac: When passing --enable-languages to subdir
index 031f34856bd4289baaeae247f5f10627ca722bd1..979aabab8c1d88638512f1ded12b3a9b48b5a129 100644 (file)
@@ -1582,9 +1582,12 @@ layout_type (tree type)
 
     case FUNCTION_TYPE:
     case METHOD_TYPE:
-      TYPE_MODE (type) = mode_for_size (2 * POINTER_SIZE, MODE_INT, 0);
-      TYPE_SIZE (type) = bitsize_int (2 * POINTER_SIZE);
-      TYPE_SIZE_UNIT (type) = size_int ((2 * POINTER_SIZE) / BITS_PER_UNIT);
+      /* It's hard to see what the mode and size of a function ought to
+        be, but we do know the alignment is FUNCTION_BOUNDARY, so
+        make it consistent with that.  */
+      TYPE_MODE (type) = mode_for_size (FUNCTION_BOUNDARY, MODE_INT, 0);
+      TYPE_SIZE (type) = bitsize_int (FUNCTION_BOUNDARY);
+      TYPE_SIZE_UNIT (type) = size_int (FUNCTION_BOUNDARY / BITS_PER_UNIT);
       break;
 
     case POINTER_TYPE: