[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