[Bug optimization/12630] [3.4 regression] Various unrecognizable insns and ICEs at -O3

jh at suse dot cz gcc-bugzilla@gcc.gnu.org
Wed Oct 15 23:31:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12630



------- Additional Comments From jh at suse dot cz  2003-10-15 23:31 -------
Subject: Re:  New: [3.4 regression] Various unrecognizable insns and ICEs at -O3

> PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12630
> 
>            Summary: [3.4 regression] Various unrecognizable insns and ICEs
>                     at -O3
>            Product: gcc
>            Version: 3.4
>             Status: UNCONFIRMED
>           Severity: critical
>           Priority: P2
>          Component: optimization
>         AssignedTo: unassigned at gcc dot gnu dot org
>         ReportedBy: danglin at gcc dot gnu dot org
>                 CC: gcc-bugs at gcc dot gnu dot org,jh at suse dot cz
>  GCC build triplet: hppa-unknown-linux-gnu, hppa2.0w-hp-hpux11.11
>   GCC host triplet: hppa-unknown-linux-gnu, hppa2.0w-hp-hpux11.11
> GCC target triplet: hppa-unknown-linux-gnu, hppa2.0w-hp-hpux11.11
> 
> The following patch introduced numerous regressions on the PA at -O3:
> 
> 2003-10-11  Jan Hubicka  <jh@suse.cz>
> 
>         * Makefile.in (web.o): New.
>         * web.c: New file.
>         * rtl.h (web_main): Declare.
>         * timervar.def (TV_WEB): New.
>         * toplev.c (dump_file_index, dump_file_info): Add DFI_web.
>         (rest_of_hanle_web): New.
>         (flag_web): New static variable.
>         (lang_independent_options): Add "web".
>         (rest_of_compilation): Call rest_of_handle_web.
>         * invoke.texi (-fweb): Document.
>         * common.opt (fweb): New.
>         * flags.h (flag_web): New.
>         * opts.c (decode_options): Set flag_web at -O3.
> 
>         * passes.texi (web construction):  Document.
>         * invoke.texi (-O3): Document that -fweb is enabled.
> 
>         * regrename.c (regrename_optimize): Deal better with situation when
>         replacement failed.
> 
>         * sched-ebb.c: Include params.h and profile.h
>         (schedule_ebbs):  Use tracer parameters to discover superblocks
>         * Makefile.in (sched-ebb.o):  Add dependencies.
> 
> See for example the difference in testsuite results between
> <http://gcc.gnu.org/ml/gcc-testresults/2003-10/msg00653.html>
> and
> <http://gcc.gnu.org/ml/gcc-testresults/2003-10/msg00612.html>.
> 
> Here is an example of one of the common failures:
> 
> dave@hiauly6:~/gnu/gcc-3.4/objdir/gcc/testsuite$
> /home/dave/gnu/gcc-3.4/objdir/gcc/stage1/xgcc
> -B/home/dave/gnu/gcc-3.4/objdir/gcc/stage1/   -O3  -w -c  -o 20011109-1.o
> /home/dave/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20011109-1.c
> /home/dave/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20011109-1.c: In
> function `die':
> 
> /home/dave/gnu/gcc-3.4/gcc/gcc/testsuite/gcc.c-torture/compile/20011109-1.c:51:
> error: unrecognizable insn:
> (insn 188 187 189 17 (parallel [
>             (set (mem/s:BLK (reg/f:SI 169 [ u ]) [12 S8 A16])
>                 (mem/s:BLK (reg/f:SI 170) [12 S8 A16]))
>             (clobber (reg/f:SI 206 [ u ]))
>             (clobber (reg/f:SI 205))

This is pa.md that is wrong.  
Does the attached patch help?

Index: pa.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/pa/pa.md,v
retrieving revision 1.131
diff -c -3 -p -r1.131 pa.md
*** pa.md	24 Sep 2003 01:38:32 -0000	1.131
--- pa.md	15 Oct 2003 23:30:14 -0000
***************
*** 3016,3025 ****
  ;; therefore it is forced to operand 2.  If the count is compile-time
  ;; determined, we need two scratch registers for the unrolled code.
  (define_insn "movstrsi_internal"
!   [(set (mem:BLK (match_operand:SI 0 "register_operand" "+r,r"))
! 	(mem:BLK (match_operand:SI 1 "register_operand" "+r,r")))
!    (clobber (match_dup 0))
!    (clobber (match_dup 1))
     (clobber (match_operand:SI 2 "register_operand" "=r,r"))	;loop cnt/tmp
     (clobber (match_operand:SI 3 "register_operand" "=&r,&r"))	;item tmp
     (clobber (match_operand:SI 6 "register_operand" "=&r,&r"))	;item tmp2
--- 3016,3025 ----
  ;; therefore it is forced to operand 2.  If the count is compile-time
  ;; determined, we need two scratch registers for the unrolled code.
  (define_insn "movstrsi_internal"
!   [(set (mem:BLK (match_operand:SI 0 "register_operand" "r,r"))
! 	(mem:BLK (match_operand:SI 1 "register_operand" "r,r")))
!    (clobber (match_operand:SI 7 "register_operand" "=0,0")))
!    (clobber (match_operand:SI 8 "register_operand" "=1,1"))
     (clobber (match_operand:SI 2 "register_operand" "=r,r"))	;loop cnt/tmp
     (clobber (match_operand:SI 3 "register_operand" "=&r,&r"))	;item tmp
     (clobber (match_operand:SI 6 "register_operand" "=&r,&r"))	;item tmp2



More information about the Gcc-bugs mailing list