From f322b423194007ef5a08daa69a8301739b63fa88 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 20 Feb 2002 10:34:28 -0800 Subject: [PATCH] re PR c/5615 (ICE in size_binop, at fold-const.c:1914) PR c/5615 * expr.h (ARGS_SIZE_TREE): Convert size.var to ssizetype. From-SVN: r49904 --- gcc/ChangeLog | 5 +++++ gcc/expr.h | 3 ++- gcc/testsuite/gcc.c-torture/compile/20020210-1.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/20020210-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b0a2b51989..879ebbd6ce4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-02-20 Richard Henderson + + PR c/5615 + * expr.h (ARGS_SIZE_TREE): Convert size.var to ssizetype. + 2002-02-20 Tom Tromey * config/fr30/fr30.h (DWARF_LINE_MIN_INSTR_LENGTH): Removed. diff --git a/gcc/expr.h b/gcc/expr.h index e5b488aec33..c1ee7f4e1e8 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -97,7 +97,8 @@ struct args_size of type ssizetype. */ #define ARGS_SIZE_TREE(SIZE) \ ((SIZE).var == 0 ? ssize_int ((SIZE).constant) \ - : size_binop (PLUS_EXPR, (SIZE).var, ssize_int ((SIZE).constant))) + : size_binop (PLUS_EXPR, convert (ssizetype, (SIZE).var), \ + ssize_int ((SIZE).constant))) /* Convert the implicit sum in a `struct args_size' into an rtx. */ #define ARGS_SIZE_RTX(SIZE) \ diff --git a/gcc/testsuite/gcc.c-torture/compile/20020210-1.c b/gcc/testsuite/gcc.c-torture/compile/20020210-1.c new file mode 100644 index 00000000000..5ca27f4f6ca --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20020210-1.c @@ -0,0 +1,2 @@ +/* PR c/5615 */ +void f(int a, struct {int b[a];} c) {}