irix 6.5 bootstrap failure on trunk: g++ error while configuring libstdc++-v3

Jeffrey Oldham oldham@codesourcery.com
Thu Apr 26 09:01:00 GMT 2001


Applying the attached patch permits a Linux->mips-sgi-irix6.5 cross
compiler to successfully compile the conftest.ii given in
http://gcc.gnu.org/ml/gcc-bugs/2001-04/msg00609.html .

The patch does two things:

1) It reverses a portion of Jason Merill's 24Apr change to gcc/except.c.
2) It fixes two gcc warnings.

The first change worries me.  In the unpatched code, `cleanup' can be
used even if it is a null pointer.  I added a test for a null pointer,
but a more correct solution is desired.

I defer committing this patch or a variant to Jason Merrill, who
better understands the exception handler code.  Saturday, I'll test it
and commit it if no action has been taken.

Thanks,
Jeffrey D. Oldham
oldham@codesourcery.com
Index: except.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/except.c,v
retrieving revision 1.152
diff -c -p -r1.152 except.c
*** except.c	2001/04/25 00:23:10	1.152
--- except.c	2001/04/26 15:54:02
*************** resolve_fixup_regions ()
*** 1112,1117 ****
--- 1112,1119 ----
        if (j > n)
  	abort ();
  
+       if (cleanup == (struct eh_region *) 0)
+ 	abort ();
        fixup->u.fixup.real_region = cleanup->outer;
      }
  }
*************** finish_eh_generation ()
*** 2340,2346 ****
    /* These registers are used by the landing pads.  Make sure they
       have been generated.  */
    get_exception_pointer ();
!   get_exception_filter ();
  
    /* Construct the landing pads.  */
  
--- 2342,2348 ----
    /* These registers are used by the landing pads.  Make sure they
       have been generated.  */
    get_exception_pointer ();
!   cfun->eh->filter = gen_reg_rtx (word_mode);
  
    /* Construct the landing pads.  */
  
*************** output_function_exception_table ()
*** 3566,3572 ****
  
    funcdef_number = (USING_SJLJ_EXCEPTIONS
  		    ? sjlj_funcdef_number
! 		    : current_funcdef_number);
  
    exception_section ();
  
--- 3568,3574 ----
  
    funcdef_number = (USING_SJLJ_EXCEPTIONS
  		    ? sjlj_funcdef_number
! 		    : (int) current_funcdef_number);
  
    exception_section ();
  


More information about the Gcc-bugs mailing list