public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re:  egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
@ 1997-11-07 12:55 Kaveh R. Ghazi
  1997-11-07 14:52 ` Jim Wilson
  0 siblings, 1 reply; 12+ messages in thread
From: Kaveh R. Ghazi @ 1997-11-07 12:55 UTC (permalink / raw)
  To: egcs; +Cc: ghazi

	The following problem still occurs with egcs-971105.

		--Kaveh


 > 	Building egcs-971031 on sparc-sun-solaris2.5 using BOOT_CFLAGS=
 > "-g -O3 -funroll-all-loops" with cc for stage1 resulted in:
 > 
 >  > stage1/xgcc -Bstage1/ -DIN_GCC -DSVR4 -g -O3 -funroll-all-loops
 >  > -DHAVE_CONFIG_H -o cccp cccp.o cexp.o \
 >  >   version.o obstack.o ` case "stage1/xgcc -Bstage1/" in "cc") echo
 >  > "alloca.o" ;; esac `
 >  > Undefined                       first referenced
 >  >  symbol                             in file
 >  > .LL6861                             cccp.o
 >  > ld: fatal: Symbol referencing errors. No output written to cccp
 >  > collect2: ld returned 1 exit status
 >  > make[1]: *** [cccp] Error 1
 > 
 > 	The dwarf patch made no difference.
 > 
 > 	I was able to bootstrap when using "-g -O2".
 > 
 > 		--Kaveh

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-07 12:55 egcs-971031, sparc-sun-solaris2.5 new bootstrap failure Kaveh R. Ghazi
@ 1997-11-07 14:52 ` Jim Wilson
  1997-11-08  5:13   ` Toon Moene
  0 siblings, 1 reply; 12+ messages in thread
From: Jim Wilson @ 1997-11-07 14:52 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: egcs

Here is a patch to fix this.  This will be in the next snapshot.

Thu Nov  6 18:27:36 1997  Jim Wilson  <wilson@cygnus.com>

	* flags.h (flag_rerun_loop_opt): Declare.
	* loop.c (invariant_p, case LABEL_REF): Check flag_rerun_loop_opt.
	* toplev.c (flag_rerum_loop_opt): Delete static.

diff -pr clean-egcs-971105/gcc/flags.h egcs-971105/gcc/flags.h
*** clean-egcs-971105/gcc/flags.h	Wed Aug 27 20:35:15 1997
--- egcs-971105/gcc/flags.h	Thu Nov  6 17:57:46 1997
*************** extern int flag_volatile_global;
*** 275,280 ****
--- 275,284 ----
  
  extern int flag_fast_math;
  
+ /* Nonzero means to run loop optimizations twice.  */
+ 
+ extern int flag_rerun_loop_opt;
+ 
  /* Nonzero means make functions that look like good inline candidates
     go inline.  */
  
diff -pr clean-egcs-971105/gcc/loop.c egcs-971105/gcc/loop.c
*** clean-egcs-971105/gcc/loop.c	Sun Oct 26 08:20:07 1997
--- egcs-971105/gcc/loop.c	Thu Nov  6 17:54:00 1997
*************** invariant_p (x)
*** 2833,2839 ****
  
  	 We don't know the loop bounds here though, so just fail for all
  	 labels.  */
!       if (flag_unroll_loops)
  	return 0;
        else
  	return 1;
--- 2833,2844 ----
  
  	 We don't know the loop bounds here though, so just fail for all
  	 labels.  */
!       /* ??? This is also necessary if flag_rerun_loop_opt is true, because in
! 	 this case we may be doing loop unrolling the second time we run loop,
! 	 and hence the first loop run also needs this check.  There is no way
! 	 to check here whether the second run will actually do loop unrolling
! 	 though, as that info is in a local var in rest_of_compilation.  */
!       if (flag_unroll_loops || flag_rerun_loop_opt)
  	return 0;
        else
  	return 1;
diff -pr clean-egcs-971105/gcc/toplev.c egcs-971105/gcc/toplev.c
*** clean-egcs-971105/gcc/toplev.c	Sun Oct 26 08:56:15 1997
--- egcs-971105/gcc/toplev.c	Thu Nov  6 17:56:26 1997
*************** static int flag_rerun_cse_after_loop;
*** 507,513 ****
  
  /* Nonzero means to run loop optimizations twice.  */
  
! static int flag_rerun_loop_opt;
  
  /* Nonzero for -finline-functions: ok to inline functions that look like
     good inline candidates.  */
--- 507,513 ----
  
  /* Nonzero means to run loop optimizations twice.  */
  
! int flag_rerun_loop_opt;
  
  /* Nonzero for -finline-functions: ok to inline functions that look like
     good inline candidates.  */

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-07 14:52 ` Jim Wilson
@ 1997-11-08  5:13   ` Toon Moene
  1997-11-09  0:42     ` Jeffrey A Law
  1997-11-09  7:52     ` Toon Moene
  0 siblings, 2 replies; 12+ messages in thread
From: Toon Moene @ 1997-11-08  5:13 UTC (permalink / raw)
  To: Jim Wilson; +Cc: egcs

>  Here is a patch to fix this.  This will be in the next
>  snapshot.
>
>  Thu Nov  6 18:27:36 1997  Jim Wilson  <wilson@cygnus.com>
>
>  	* flags.h (flag_rerun_loop_opt): Declare.
>       * loop.c (invariant_p, case LABEL_REF): Check
>  	flag_rerun_loop_opt.
>       * toplev.c (flag_rerum_loop_opt): Delete static.

Ah, that means that Jeff implemented rerun-loop-opt slightly  
differently from the way g77 had it; we *did* have an externally  
visible flag -frerun-loop-opt.

>  	 We don't know the loop bounds here though, so
>  	 just fail for all labels.  */
>  !       /* ??? This is also necessary if
>  flag_rerun_loop_opt is true, because in
>  !        this
>  case we may be doing loop unrolling the second time we
>  run loop,
>  !        and hence the first loop run also
>  needs this check.  There is no way
>  !        to check here
>  whether the second run will actually do loop unrolling
>  !        though, as that info is in a local var in
>  rest_of_compilation.  */
>  !       if (flag_unroll_loops || flag_rerun_loop_opt)
>  	return 0;
>       else
>       return 1;

Fascinating - this error must have been in g77 too (between 0.5.18,  
April '96 and 0.5.20, March '97).  We never found a problem with it  
though.

For g77-0.5.20 I decided to have loop unrolling only happening in  
the second pass through loop_optimize (as it is in egcs now),  
because the backend is not good at optimising unrolled loops.  One  
can easily check this by compiling the following on a ix86 (for  
simplicity this assumes n % 4 == 0):

      subroutine daxpy(x, y, a, n)
      integer n
      double precision x(n), y(n), a
      do i = 1, n, 4
         y(i  ) = y(i  ) + a * x(i  )
         y(i+1) = y(i+1) + a * x(i+1)
         y(i+2) = y(i+2) + a * x(i+2)
         y(i+3) = y(i+3) + a * x(i+3)
      enddo
      end

This basically is again pointing out that an optimisation that  
combine_givs *should* do isn't done, and we end up using 8 different  
pseudo registers for the array accesses.

HTH,
Toon.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-08  5:13   ` Toon Moene
@ 1997-11-09  0:42     ` Jeffrey A Law
  1997-11-09  9:20       ` Joern Rennecke
  1997-11-09  7:52     ` Toon Moene
  1 sibling, 1 reply; 12+ messages in thread
From: Jeffrey A Law @ 1997-11-09  0:42 UTC (permalink / raw)
  To: Toon Moene; +Cc: Jim Wilson, egcs

  In message < 9711081217.AA08778@moene.indiv.nluug.nl >you write:
  > >  Here is a patch to fix this.  This will be in the next
  > >  snapshot.
  > >
  > >  Thu Nov  6 18:27:36 1997  Jim Wilson  <wilson@cygnus.com>
  > >
  > >  	* flags.h (flag_rerun_loop_opt): Declare.
  > >       * loop.c (invariant_p, case LABEL_REF): Check
  > >  	flag_rerun_loop_opt.
  > >       * toplev.c (flag_rerum_loop_opt): Delete static.
  > 
  > Ah, that means that Jeff implemented rerun-loop-opt slightly  
  > differently from the way g77 had it; we *did* have an externally  
  > visible flag -frerun-loop-opt.
We always had a user visible -frerun-loop-opt option.

I believe Jim was referring to the variable itself -- it was static
in toplev.c, but needed to be external so that loop.c could peek at
it.

jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-08  5:13   ` Toon Moene
  1997-11-09  0:42     ` Jeffrey A Law
@ 1997-11-09  7:52     ` Toon Moene
  1 sibling, 0 replies; 12+ messages in thread
From: Toon Moene @ 1997-11-09  7:52 UTC (permalink / raw)
  To: egcs

New code by Jim in invariant_p (file loop.c):

>  	 We don't know the loop bounds here though, so
>  	 just fail for all labels.  */
>  !       /* ??? This is also necessary if
>  flag_rerun_loop_opt is true, because in
>  !        this
>  case we may be doing loop unrolling the second time we
>  run loop,
>  !        and hence the first loop run also
>  needs this check.  There is no way
>  !        to check here
>  whether the second run will actually do loop unrolling
>  !        though, as that info is in a local var in
>  rest_of_compilation.  */
>  !       if (flag_unroll_loops || flag_rerun_loop_opt)
>  	return 0;
>       else
>       return 1;

and I babbled:

>  Fascinating - this error must have been in g77 too
>  (between 0.5.18, April '96 and 0.5.20, March '97).  We
>  never found a problem with it though.

Well, I got this backwards, so please ignore :-(

Toon.

BTW, I can neither build dejangnu-971028:

make[1]: Entering directory  
`/Users/toon/Unix/compilers/dejagnu-971028/tcl'
make[2]: Entering directory  
`/Users/toon/Unix/compilers/dejagnu-971028/tcl/unix'
gcc -c -g -O2  -I./../generic -I. -DUSEGETWD=1 -DHAVE_OPENDIR=1  
-DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DNO_UNAME=1  
-DNO_DIRENT_H=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1  
-DUSE_SGTTY=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1  
-DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_TIMEZONE_VAR=1  
-DSTDC_HEADERS=1 -Dmode_t=int -Dpid_t=int -DHAVE_ST_BLKSIZE=1  
-DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1         
-DTCL_SHLIB_EXT=\".so\" ./tclUnixFCmd.c
./tclUnixFCmd.c: In function `TclpCreateDirectory':
./tclUnixFCmd.c:475: `S_IRUSR' undeclared (first use this function)
./tclUnixFCmd.c:475: (Each undeclared identifier is reported only once
./tclUnixFCmd.c:475: for each function it appears in.)
./tclUnixFCmd.c:475: `S_IWUSR' undeclared (first use this function)
./tclUnixFCmd.c:475: `S_IXUSR' undeclared (first use this function)
./tclUnixFCmd.c: In function `CopyFileAtts':
./tclUnixFCmd.c:877: storage size of `tval' isn't known
./tclUnixFCmd.c:881: `S_IRWXU' undeclared (first use this function)
./tclUnixFCmd.c:881: `S_IRWXG' undeclared (first use this function)
./tclUnixFCmd.c:881: `S_IRWXO' undeclared (first use this function)
make[2]: *** [tclUnixFCmd.o] Error 1

nor the C++ compiler (of egcs-971105) (Sorry, threw away the error  
message).  One of the first problems to be solved on  
m68k-next-nextstep3 is to have fixincludes repair  
/NextDeveloper/Headers as that directory is searched before all  
others (with the exception of /usr/local/include and the  
gcc-repaired directories.

To fill my copious spare time, I got egcs-core-971105 +  
egcs-g77-971105.  That combination built just fine and correctly  
compiled my 1300 routine Fortran application.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-09  0:42     ` Jeffrey A Law
@ 1997-11-09  9:20       ` Joern Rennecke
  1997-11-09 10:46         ` Jeffrey A Law
  0 siblings, 1 reply; 12+ messages in thread
From: Joern Rennecke @ 1997-11-09  9:20 UTC (permalink / raw)
  To: law; +Cc: toon, wilson, egcs

>   > >  Thu Nov  6 18:27:36 1997  Jim Wilson  <wilson@cygnus.com>
>   > >
>   > >  	* flags.h (flag_rerun_loop_opt): Declare.
>   > >       * loop.c (invariant_p, case LABEL_REF): Check
>   > >  	flag_rerun_loop_opt.
>   > >       * toplev.c (flag_rerum_loop_opt): Delete static.
>   > 
>   > Ah, that means that Jeff implemented rerun-loop-opt slightly  
>   > differently from the way g77 had it; we *did* have an externally  
>   > visible flag -frerun-loop-opt.
> We always had a user visible -frerun-loop-opt option.
> 
> I believe Jim was referring to the variable itself -- it was static
> in toplev.c, but needed to be external so that loop.c could peek at
> it.

I wonder if that was actually the most appropriate patch; the comment
in invariant_p says that the information is still not as good as we'd
like to have.

Why not add a new argument to loop_optimize, so that
rest_of_compilation can exactly tell it if there will be an subsequent
loop unrolling.  loop_optimize could then store this information in a
variable static to loop.c .

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-09  9:20       ` Joern Rennecke
@ 1997-11-09 10:46         ` Jeffrey A Law
  1997-11-25 22:49           ` Joern Rennecke
  0 siblings, 1 reply; 12+ messages in thread
From: Jeffrey A Law @ 1997-11-09 10:46 UTC (permalink / raw)
  To: Joern Rennecke; +Cc: toon, wilson, egcs

  In message < 199711091720.RAA14763@phal.cygnus.co.uk >you write:
  > I wonder if that was actually the most appropriate patch; the comment
  > in invariant_p says that the information is still not as good as we'd
  > like to have.
I believe it's appropriate -- especially for the release.

  > Why not add a new argument to loop_optimize, so that
  > rest_of_compilation can exactly tell it if there will be an subsequent
  > loop unrolling.  loop_optimize could then store this information in a
  > variable static to loop.c .
Something like this is pretty reasonable for the mainline sources.  Will
you implement it and send me the diffs?

jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-09 10:46         ` Jeffrey A Law
@ 1997-11-25 22:49           ` Joern Rennecke
  1997-12-06  7:50             ` Jeffrey A Law
  0 siblings, 1 reply; 12+ messages in thread
From: Joern Rennecke @ 1997-11-25 22:49 UTC (permalink / raw)
  To: law; +Cc: amylaar, toon, wilson, egcs

>   > Why not add a new argument to loop_optimize, so that
>   > rest_of_compilation can exactly tell it if there will be an subsequent
>   > loop unrolling.  loop_optimize could then store this information in a
>   > variable static to loop.c .
> Something like this is pretty reasonable for the mainline sources.  Will
> you implement it and send me the diffs?

I have thought about this some more, and have come to the conclusion that
it would be cleaner not to change flag_unroll_loops in
the first place.
There is also no need to manipulate flag_unroll_all_loops - it has only an
effect on unroll_loop, and this function is only called when some loop
unrolling is done in the first place.

Tue Nov 25 22:32:49 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* loop.c (invariant_p): Don't test flag_rerun_loop_opt.
	(loop_optimize, scan_loop, strength_reduce): New argument unroll_p.
	* toplev.c (rest_of_compilation): Pass it.  Remove code to
	save / clear / restore flag_unroll_{,all_}loops.

Index: loop.c
===================================================================
RCS file: /cvs/cvsfiles/egcs/gcc/loop.c,v
retrieving revision 1.20
diff -p -r1.20 loop.c
*** loop.c	1997/11/09 08:35:43	1.20
--- loop.c	1997/11/25 22:34:24
*************** init_loop ()
*** 374,383 ****
     (or 0 if none should be output).  */
  
  void
! loop_optimize (f, dumpfile)
       /* f is the first instruction of a chain of insns for one function */
       rtx f;
       FILE *dumpfile;
  {
    register rtx insn;
    register int i;
--- 374,384 ----
     (or 0 if none should be output).  */
  
  void
! loop_optimize (f, dumpfile, unroll_p)
       /* f is the first instruction of a chain of insns for one function */
       rtx f;
       FILE *dumpfile;
+      int unroll_p;
  {
    register rtx insn;
    register int i;
*************** loop_optimize (f, dumpfile)
*** 502,508 ****
        uid_luid[i] = uid_luid[i - 1];
  
    /* Create a mapping from loops to BLOCK tree nodes.  */
!   if (flag_unroll_loops && write_symbols != NO_DEBUG)
      find_loop_tree_blocks ();
  
    /* Determine if the function has indirect jump.  On some systems
--- 503,509 ----
        uid_luid[i] = uid_luid[i - 1];
  
    /* Create a mapping from loops to BLOCK tree nodes.  */
!   if (unroll_p && write_symbols != NO_DEBUG)
      find_loop_tree_blocks ();
  
    /* Determine if the function has indirect jump.  On some systems
*************** loop_optimize (f, dumpfile)
*** 514,525 ****
    for (i = max_loop_num-1; i >= 0; i--)
      if (! loop_invalid[i] && loop_number_loop_ends[i])
        scan_loop (loop_number_loop_starts[i], loop_number_loop_ends[i],
! 		 max_reg_num ());
  
    /* If debugging and unrolling loops, we must replicate the tree nodes
       corresponding to the blocks inside the loop, so that the original one
       to one mapping will remain.  */
!   if (flag_unroll_loops && write_symbols != NO_DEBUG)
      unroll_block_trees ();
  }
  \f
--- 515,526 ----
    for (i = max_loop_num-1; i >= 0; i--)
      if (! loop_invalid[i] && loop_number_loop_ends[i])
        scan_loop (loop_number_loop_starts[i], loop_number_loop_ends[i],
! 		 max_reg_num (), unroll_p);
  
    /* If debugging and unrolling loops, we must replicate the tree nodes
       corresponding to the blocks inside the loop, so that the original one
       to one mapping will remain.  */
!   if (unroll_p && write_symbols != NO_DEBUG)
      unroll_block_trees ();
  }
  \f
*************** loop_optimize (f, dumpfile)
*** 534,542 ****
     write, then we can also mark the memory read as invariant.  */
  
  static void
! scan_loop (loop_start, end, nregs)
       rtx loop_start, end;
       int nregs;
  {
    register int i;
    register rtx p;
--- 535,544 ----
     write, then we can also mark the memory read as invariant.  */
  
  static void
! scan_loop (loop_start, end, nregs, unroll_p)
       rtx loop_start, end;
       int nregs;
+      int unroll_p;
  {
    register int i;
    register rtx p;
*************** scan_loop (loop_start, end, nregs)
*** 1051,1057 ****
  
    if (flag_strength_reduce)
      strength_reduce (scan_start, end, loop_top,
! 		     insn_count, loop_start, end);
  }
  \f
  /* Add elements to *OUTPUT to record all the pseudo-regs
--- 1053,1059 ----
  
    if (flag_strength_reduce)
      strength_reduce (scan_start, end, loop_top,
! 		     insn_count, loop_start, end, unroll_p);
  }
  \f
  /* Add elements to *OUTPUT to record all the pseudo-regs
*************** invariant_p (x)
*** 2847,2858 ****
  
  	 We don't know the loop bounds here though, so just fail for all
  	 labels.  */
!       /* ??? This is also necessary if flag_rerun_loop_opt is true, because in
! 	 this case we may be doing loop unrolling the second time we run loop,
! 	 and hence the first loop run also needs this check.  There is no way
! 	 to check here whether the second run will actually do loop unrolling
! 	 though, as that info is in a local var in rest_of_compilation.  */
!       if (flag_unroll_loops || flag_rerun_loop_opt)
  	return 0;
        else
  	return 1;
--- 2849,2855 ----
  
  	 We don't know the loop bounds here though, so just fail for all
  	 labels.  */
!       if (flag_unroll_loops)
  	return 0;
        else
  	return 1;
*************** static rtx addr_placeholder;
*** 3339,3351 ****
  
  static void
  strength_reduce (scan_start, end, loop_top, insn_count,
! 		 loop_start, loop_end)
       rtx scan_start;
       rtx end;
       rtx loop_top;
       int insn_count;
       rtx loop_start;
       rtx loop_end;
  {
    rtx p;
    rtx set;
--- 3336,3349 ----
  
  static void
  strength_reduce (scan_start, end, loop_top, insn_count,
! 		 loop_start, loop_end, unroll_p)
       rtx scan_start;
       rtx end;
       rtx loop_top;
       int insn_count;
       rtx loop_start;
       rtx loop_end;
+      int unroll_p;
  {
    rtx p;
    rtx set;
*************** strength_reduce (scan_start, end, loop_t
*** 3583,3589 ****
      {
        /* Can still unroll the loop anyways, but indicate that there is no
  	 strength reduction info available.  */
!       if (flag_unroll_loops)
  	unroll_loop (loop_end, insn_count, loop_start, end_insert_before, 0);
  
        return;
--- 3581,3587 ----
      {
        /* Can still unroll the loop anyways, but indicate that there is no
  	 strength reduction info available.  */
!       if (unroll_p)
  	unroll_loop (loop_end, insn_count, loop_start, end_insert_before, 0);
  
        return;
*************** strength_reduce (scan_start, end, loop_t
*** 4362,4368 ****
       induction variable information that strength_reduce has already
       collected.  */
    
!   if (flag_unroll_loops)
      unroll_loop (loop_end, insn_count, loop_start, end_insert_before, 1);
  
  #ifdef HAIFA
--- 4360,4366 ----
       induction variable information that strength_reduce has already
       collected.  */
    
!   if (unroll_p)
      unroll_loop (loop_end, insn_count, loop_start, end_insert_before, 1);
  
  #ifdef HAIFA
  
Index: toplev.c
===================================================================
RCS file: /cvs/cvsfiles/egcs/gcc/toplev.c,v
retrieving revision 1.15
diff -p -r1.15 toplev.c
*** toplev.c	1997/11/14 15:44:56	1.15
--- toplev.c	1997/11/25 22:34:29
*************** rest_of_compilation (decl)
*** 3313,3340 ****
      {
        TIMEVAR (loop_time,
  	       {
- 		 int save_flag_unroll_loops;
- 		 int save_flag_unroll_all_loops;
- 
  		 if (flag_rerun_loop_opt)
  		   {
  		      /* We only want to perform unrolling once.  */
- 		      save_flag_unroll_loops = flag_unroll_loops;
- 		      save_flag_unroll_all_loops = flag_unroll_all_loops;
- 		      flag_unroll_loops = 0;
- 		      flag_unroll_all_loops = 0;
  
! 		      loop_optimize (insns, loop_dump_file);
  
  		      /* The regscan pass may not be necessary, but let's
  			 be safe until we can prove otherwise.  */
  		      reg_scan (insns, max_reg_num (), 1);
- 
- 		      /* Restore loop unrolling flags.  */
- 		      flag_unroll_loops = save_flag_unroll_loops;
- 		      flag_unroll_all_loops = save_flag_unroll_all_loops;
  		   }
! 		 loop_optimize (insns, loop_dump_file);
  	       });
      }
  
--- 3313,3329 ----
      {
        TIMEVAR (loop_time,
  	       {
  		 if (flag_rerun_loop_opt)
  		   {
  		      /* We only want to perform unrolling once.  */
  
! 		      loop_optimize (insns, loop_dump_file, 0);
  
  		      /* The regscan pass may not be necessary, but let's
  			 be safe until we can prove otherwise.  */
  		      reg_scan (insns, max_reg_num (), 1);
  		   }
! 		 loop_optimize (insns, loop_dump_file, flag_unroll_loops);
  	       });
      }
  

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-25 22:49           ` Joern Rennecke
@ 1997-12-06  7:50             ` Jeffrey A Law
  0 siblings, 0 replies; 12+ messages in thread
From: Jeffrey A Law @ 1997-12-06  7:50 UTC (permalink / raw)
  To: Joern Rennecke; +Cc: toon, wilson, egcs

  In message <199711252310.XAA08838@phal.cygnus.co.uk>you write:
  > Tue Nov 25 22:32:49 1997  J"orn Rennecke <amylaar@cygnus.co.uk>
  > 
  > 	* loop.c (invariant_p): Don't test flag_rerun_loop_opt.
  > 	(loop_optimize, scan_loop, strength_reduce): New argument unroll_p.
  > 	* toplev.c (rest_of_compilation): Pass it.  Remove code to
  > 	save / clear / restore flag_unroll_{,all_}loops.
Thanks.  I've installed this patch.

jeff

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
@ 1997-11-08 20:45 Kaveh R. Ghazi
  0 siblings, 0 replies; 12+ messages in thread
From: Kaveh R. Ghazi @ 1997-11-08 20:45 UTC (permalink / raw)
  To: wilson; +Cc: egcs

 > From: Jim Wilson <wilson@cygnus.com>
 > 
 > Here is a patch to fix this.  This will be in the next snapshot.
 > 
 > Thu Nov  6 18:27:36 1997  Jim Wilson  <wilson@cygnus.com>
 > 
 > 	* flags.h (flag_rerun_loop_opt): Declare.
 > 	* loop.c (invariant_p, case LABEL_REF): Check flag_rerun_loop_opt.
 > 	* toplev.c (flag_rerum_loop_opt): Delete static.

	Your patch fixes the unroll bootstrap problems on all three
platforms I had trouble on.  (For the record, they were strange
unresolved symbols on sparc and alpha, as well as an internal compiler
error on powerpc, all three occuring when BOOT_CFLAGS contained -O3
-funroll-all-loops.)

	Thanks Jim.

		--Kaveh
--
Kaveh R. Ghazi				Project Manager
ghazi@caip.rutgers.edu			ICon CMT Corp.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
  1997-11-03  9:43 Kaveh R. Ghazi
@ 1997-11-03 17:55 ` H.J. Lu
  0 siblings, 0 replies; 12+ messages in thread
From: H.J. Lu @ 1997-11-03 17:55 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: egcs, ghazi

> 
> 	Building egcs-971031 on sparc-sun-solaris2.5 using BOOT_CFLAGS=
> "-g -O3 -funroll-all-loops" with cc for stage1 resulted in:
> 
>  > stage1/xgcc -Bstage1/ -DIN_GCC -DSVR4 -g -O3 -funroll-all-loops
>  > -DHAVE_CONFIG_H -o cccp cccp.o cexp.o \
>  >   version.o obstack.o ` case "stage1/xgcc -Bstage1/" in "cc") echo
>  > "alloca.o" ;; esac `
>  > Undefined                       first referenced
>  >  symbol                             in file
>  > .LL6861                             cccp.o
>  > ld: fatal: Symbol referencing errors. No output written to cccp
>  > collect2: ld returned 1 exit status
>  > make[1]: *** [cccp] Error 1
> 
> 	The dwarf patch made no difference.
> 
> 	I was able to bootstrap when using "-g -O2".

This may or may not be related to my -g -funroll-loops bug report.
I cannot use them together on x86 with my small test code.
-g -O -funroll-loops kills gcc.


H.J.
----
class String
{
public:
                    String();
                    ~String();
  int               OK() const;
};
void splittest()
{
  String w[10];
  for (int i = 0; i < 5; ++i)
  {
    if (!w[i].OK())
      return;
  }
}

^ permalink raw reply	[flat|nested] 12+ messages in thread

* egcs-971031, sparc-sun-solaris2.5 new bootstrap failure
@ 1997-11-03  9:43 Kaveh R. Ghazi
  1997-11-03 17:55 ` H.J. Lu
  0 siblings, 1 reply; 12+ messages in thread
From: Kaveh R. Ghazi @ 1997-11-03  9:43 UTC (permalink / raw)
  To: egcs; +Cc: ghazi

	Building egcs-971031 on sparc-sun-solaris2.5 using BOOT_CFLAGS=
"-g -O3 -funroll-all-loops" with cc for stage1 resulted in:

 > stage1/xgcc -Bstage1/ -DIN_GCC -DSVR4 -g -O3 -funroll-all-loops
 > -DHAVE_CONFIG_H -o cccp cccp.o cexp.o \
 >   version.o obstack.o ` case "stage1/xgcc -Bstage1/" in "cc") echo
 > "alloca.o" ;; esac `
 > Undefined                       first referenced
 >  symbol                             in file
 > .LL6861                             cccp.o
 > ld: fatal: Symbol referencing errors. No output written to cccp
 > collect2: ld returned 1 exit status
 > make[1]: *** [cccp] Error 1

	The dwarf patch made no difference.

	I was able to bootstrap when using "-g -O2".

		--Kaveh
--
Kaveh R. Ghazi				Project Manager
ghazi@caip.rutgers.edu			ICon CMT Corp.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~1997-12-06  7:50 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-11-07 12:55 egcs-971031, sparc-sun-solaris2.5 new bootstrap failure Kaveh R. Ghazi
1997-11-07 14:52 ` Jim Wilson
1997-11-08  5:13   ` Toon Moene
1997-11-09  0:42     ` Jeffrey A Law
1997-11-09  9:20       ` Joern Rennecke
1997-11-09 10:46         ` Jeffrey A Law
1997-11-25 22:49           ` Joern Rennecke
1997-12-06  7:50             ` Jeffrey A Law
1997-11-09  7:52     ` Toon Moene
  -- strict thread matches above, loose matches on Subject: below --
1997-11-08 20:45 Kaveh R. Ghazi
1997-11-03  9:43 Kaveh R. Ghazi
1997-11-03 17:55 ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).