From c47c77bb058d7b196330aafc7b2d6fac41ef027d Mon Sep 17 00:00:00 2001 From: sayle Date: Wed, 31 Jan 2007 02:15:45 +0000 Subject: [PATCH] * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when calculating the size of an array (to avoid recursive errors). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121371 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/error.c | 18 +++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ad008bf..c89e383 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2007-01-30 Roger Sayle + + * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when + calculating the size of an array (to avoid recursive errors). + 2007-01-30 Manuel Lopez-Ibanez PR c++/24745 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 49f3367..00f0767 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -1,7 +1,7 @@ /* Call-backs for C++ error reporting. This code is non-reentrant. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, - 2003, 2004, 2005 Free Software Foundation, Inc. + 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify @@ -629,16 +629,16 @@ dump_type_suffix (tree t, int flags) pp_cxx_left_bracket (cxx_pp); if (TYPE_DOMAIN (t)) { - if (host_integerp (TYPE_MAX_VALUE (TYPE_DOMAIN (t)), 0)) - pp_wide_integer - (cxx_pp, tree_low_cst (TYPE_MAX_VALUE (TYPE_DOMAIN (t)), 0) + 1); - else if (TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (t))) == MINUS_EXPR) - dump_expr (TREE_OPERAND (TYPE_MAX_VALUE (TYPE_DOMAIN (t)), 0), + tree dtype = TYPE_DOMAIN (t); + tree max = TYPE_MAX_VALUE (dtype); + if (host_integerp (max, 0)) + pp_wide_integer (cxx_pp, tree_low_cst (max, 0) + 1); + else if (TREE_CODE (max) == MINUS_EXPR) + dump_expr (TREE_OPERAND (max, 0), flags & ~TFF_EXPR_IN_PARENS); else - dump_expr (fold (cp_build_binary_op - (PLUS_EXPR, TYPE_MAX_VALUE (TYPE_DOMAIN (t)), - integer_one_node)), + dump_expr (fold_build2 (PLUS_EXPR, dtype, max, + build_int_cst (dtype, 1)), flags & ~TFF_EXPR_IN_PARENS); } pp_cxx_right_bracket (cxx_pp); -- 2.7.4