aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2007-01-31 02:15:45 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2007-01-31 02:15:45 +0000
commit5e203bf88350d60801814a1993db77e2dc7c98e2 (patch)
tree704bec3269c5aecdf4f58a146dcaa2e30e30c502 /gcc
parent5c3f8c97a70f90fec62050b353aa949443914af3 (diff)
downloadgcc-5e203bf88350d60801814a1993db77e2dc7c98e2.zip
gcc-5e203bf88350d60801814a1993db77e2dc7c98e2.tar.gz
gcc-5e203bf88350d60801814a1993db77e2dc7c98e2.tar.bz2
error.c (dump_type_suffix): Avoid use of cp_build_binary_op when calculating the size of an array (to avoid...
* error.c (dump_type_suffix): Avoid use of cp_build_binary_op when calculating the size of an array (to avoid recursive errors). From-SVN: r121371
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/error.c18
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 <roger@eyesopen.com>
+
+ * 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 <manu@gcc.gnu.org>
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);