g++ ICE in fix_lexical_addr

Mark Mitchell mark@codesourcery.com
Sat Feb 26 21:28:00 GMT 2000


Thanks.  Fixed with this patch.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

2000-02-26  Mark Mitchell  <mark@codesourcery.com>

	* semantics.c (simplify_aggr_init_exprs_p): Don't walk into
	types.

Index: semantics.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/semantics.c,v
retrieving revision 1.127
diff -c -p -r1.127 semantics.c
*** semantics.c	2000/02/27 02:46:57	1.127
--- semantics.c	2000/02/27 05:20:46
*************** simplify_aggr_init_exprs_r (tp, walk_sub
*** 2618,2626 ****
    tree call_type;
    int copy_from_buffer_p;
  
-   /* Only AGGR_INIT_EXPRs are interesting.  */
    aggr_init_expr = *tp;
!   if (TREE_CODE (aggr_init_expr) != AGGR_INIT_EXPR)
      return NULL_TREE;
  
    /* Form an appropriate CALL_EXPR.  */
--- 2618,2636 ----
    tree call_type;
    int copy_from_buffer_p;
  
    aggr_init_expr = *tp;
!   /* We don't need to walk into types; there's nothing in a type that
!      needs simplification.  (And, furthermore, there are places we
!      actively don't want to go.  For example, we don't want to wander
!      into the default arguments for a FUNCTION_DECL that appears in a
!      CALL_EXPR.)  */
!   if (TYPE_P (aggr_init_expr))
!     {
!       *walk_subtrees = 0;
!       return NULL_TREE;
!     }
!   /* Only AGGR_INIT_EXPRs are interesting.  */
!   else if (TREE_CODE (aggr_init_expr) != AGGR_INIT_EXPR)
      return NULL_TREE;
  
    /* Form an appropriate CALL_EXPR.  */


More information about the Gcc-bugs mailing list