]> gcc.gnu.org Git - gcc.git/commitdiff
(output_epilog): Don't crash if TYPE_SIZE of an arg is not set.
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 1 Jun 1993 01:45:53 +0000 (21:45 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 1 Jun 1993 01:45:53 +0000 (21:45 -0400)
From-SVN: r4614

gcc/config/romp/romp.c

index f2f5195ef2a246725b489aa989d1872d3ed5303d..712929c321c722ba3a78e8366ab495fae9c47a61 100644 (file)
@@ -1,5 +1,5 @@
 /* Subroutines used for code generation on ROMP.
-   Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
    Contributed by Richard Kenner (kenner@nyu.edu)
 
 This file is part of GNU CC.
@@ -1144,10 +1144,18 @@ output_epilog (file, size)
   int nargs = 0;               /* words of arguments */
   tree argptr;
 
+  /* Compute the number of words of arguments.  Since this is just for
+     the traceback table, we ignore arguments that don't have a size or
+     don't have a fixed size.  */
+
   for (argptr = DECL_ARGUMENTS (current_function_decl);
        argptr; argptr = TREE_CHAIN (argptr))
-    nargs += ((TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (argptr)))
-              + BITS_PER_WORD - 1) / BITS_PER_WORD);
+    {
+      int this_size = int_size_in_bytes (TREE_TYPE (argptr));
+
+      if (this_size > 0)
+       nargs += (this_size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+    }
   
   /* If the last insn was a BARRIER, we don't have to write anything except
      the trace table.  */
This page took 0.065442 seconds and 5 git commands to generate.