This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Getting past gcc-3.2 20000611 breakage.
- From: Richard Henderson <rth at redhat dot com>
- To: Matt Thomas <matt at 3am-software dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 16 Jun 2002 12:39:45 -0700
- Subject: Re: Getting past gcc-3.2 20000611 breakage.
- References: <5.1.0.14.2.20020616110533.037fa000@3am-software.com>
On Sun, Jun 16, 2002 at 11:26:24AM -0700, Matt Thomas wrote:
> <stdin>: In function `x':
> <stdin>:9: error: missing barrier after block 0
> <stdin>:9: internal compiler error: verify_flow_info failed
The problem is that the vax casesi expander was using
emit_insn instead of emit_jump_insn.
Fixed thus, with a tad extra cleanup.
r~
* vax.md (casesi): Use emit_jump_insn. Tidy expander pattern.
Index: config/vax/vax.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/vax/vax.md,v
retrieving revision 1.21
diff -c -p -d -r1.21 vax.md
*** config/vax/vax.md 15 Jan 2002 22:37:00 -0000 1.21
--- config/vax/vax.md 16 Jun 2002 19:36:56 -0000
***************
*** 1931,1954 ****
;; This is here to accept 5 arguments (as passed by expand_end_case)
;; and pass the first 4 along to the casesi1 pattern that really does the work.
(define_expand "casesi"
! [(set (pc)
! (if_then_else
! (leu (minus:SI (match_operand:SI 0 "general_operand" "g")
! (match_operand:SI 1 "general_operand" "g"))
! (match_operand:SI 2 "general_operand" "g"))
! (plus:SI (sign_extend:SI
! (mem:HI (plus:SI (mult:SI (minus:SI (match_dup 0)
! (match_dup 1))
! (const_int 2))
! (pc))))
! (label_ref:SI (match_operand 3 "" "")))
! (pc)))
! (match_operand 4 "" "")]
""
! "
! emit_insn (gen_casesi1 (operands[0], operands[1], operands[2], operands[3]));
DONE;
! ")
(define_insn "casesi1"
[(set (pc)
--- 1931,1947 ----
;; This is here to accept 5 arguments (as passed by expand_end_case)
;; and pass the first 4 along to the casesi1 pattern that really does the work.
(define_expand "casesi"
! [(match_operand:SI 0 "general_operand" "") ; index
! (match_operand:SI 1 "general_operand" "") ; lower
! (match_operand:SI 2 "general_operand" "") ; upper-lower
! (match_operand 3 "" "") ; table label
! (match_operand 4 "" "")] ; default label
""
! {
! emit_jump_insn (gen_casesi1 (operands[0], operands[1],
! operands[2], operands[3]));
DONE;
! })
(define_insn "casesi1"
[(set (pc)