This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: c++/8067: g++ 3.2 internal error: Segmentation fault


Bootstrapped on x86.  
(configured with --enable-languages=c,c++)

Ok for closing c++/8067 ?


Sebastian



2002-09-30  Sebastian Pop  <s.pop@laposte.net>

	* decl.c (maybe_inject_for_scope_var): Handle the case when
	IDENTIFIER_BINDING is NULL.


Index: decl.c
===================================================================
RCS file: /cvsroot/gcc/gcc/gcc/cp/decl.c,v
retrieving revision 1.937
diff -d -c -p -r1.937 decl.c
*** decl.c	29 Sep 2002 11:53:48 -0000	1.937
--- decl.c	30 Sep 2002 18:03:41 -0000
*************** maybe_inject_for_scope_var (decl)
*** 8006,8022 ****
  	 Otherwise, we need to preserve the temp slot for decl to last
  	 into the outer binding level.  */
  
!       tree outer_binding
! 	= TREE_CHAIN (IDENTIFIER_BINDING (DECL_NAME (decl)));
! 
!       if (outer_binding && BINDING_LEVEL (outer_binding) == outer
! 	  && (TREE_CODE (BINDING_VALUE (outer_binding))
! 	      == VAR_DECL)
! 	  && DECL_DEAD_FOR_LOCAL (BINDING_VALUE (outer_binding)))
  	{
! 	  BINDING_VALUE (outer_binding)
! 	    = DECL_SHADOWED_FOR_VAR (BINDING_VALUE (outer_binding));
! 	  current_binding_level->is_for_scope = 0;
  	}
        else if (DECL_IN_MEMORY_P (decl))
  	preserve_temp_slots (DECL_RTL (decl));
--- 8006,8026 ----
  	 Otherwise, we need to preserve the temp slot for decl to last
  	 into the outer binding level.  */
  
!       tree ib, outer_binding;
!       ib = IDENTIFIER_BINDING (DECL_NAME (decl));
!       if (ib)
  	{
! 	  outer_binding = TREE_CHAIN (ib);
! 	  
! 	  if (outer_binding && BINDING_LEVEL (outer_binding) == outer
! 	      && (TREE_CODE (BINDING_VALUE (outer_binding))
! 		  == VAR_DECL)
! 	      && DECL_DEAD_FOR_LOCAL (BINDING_VALUE (outer_binding)))
! 	    {
! 	      BINDING_VALUE (outer_binding)
! 		= DECL_SHADOWED_FOR_VAR (BINDING_VALUE (outer_binding));
! 	      current_binding_level->is_for_scope = 0;
! 	    }
  	}
        else if (DECL_IN_MEMORY_P (decl))
  	preserve_temp_slots (DECL_RTL (decl));
// { dg-do compile }

// Copyright (C) 2002 Free Software Foundation, Inc.
// Contributed by Sebastian Pop 30 Sep 2002 <s.pop@laposte.net>

void foo() 
{ 
  for ( __PRETTY_FUNCTION__ ; ; ) 
    ; 
}



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]