From d49debfe04c7afdf4a1a59ae8bfad1652ef84a82 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 31 May 1993 21:45:53 -0400 Subject: [PATCH] (output_epilog): Don't crash if TYPE_SIZE of an arg is not set. From-SVN: r4614 --- gcc/config/romp/romp.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/config/romp/romp.c b/gcc/config/romp/romp.c index f2f5195ef2a..712929c321c 100644 --- a/gcc/config/romp/romp.c +++ b/gcc/config/romp/romp.c @@ -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. */ -- 2.30.2