error.c (dump_type_suffix): Avoid use of cp_build_binary_op when calculating the...
authorRoger Sayle <roger@eyesopen.com>
Wed, 31 Jan 2007 02:15:45 +0000 (02:15 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Wed, 31 Jan 2007 02:15:45 +0000 (02:15 +0000)
* 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

gcc/cp/ChangeLog
gcc/cp/error.c

index ad008bf1aa75a4e7154dc9c9c357c8e3d67a33a1..c89e3836055fc64595b8d6516023e6dec9967874 100644 (file)
@@ -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
index 49f3367d743178e40432da12e4fb8b6b1e1c6e12..00f0767745483e538d4b2ab6ba8119ed28ce5f83 100644 (file)
@@ -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);