This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
libjava building failure on mainline
- From: Diego Novillo <dnovillo at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 5 Aug 2002 11:16:17 -0400
- Subject: libjava building failure on mainline
- Organization: Red Hat Canada
libjava/interpret.cc fails to build on mainline when configured
with --enable-checking=misc,tree,gc,rtlflag,rtl:
---------------------------------------------------------------------------
/home/dnovillo/tree-ssa-20020619-branch/merge/src/libjava/interpret.cc: In
member function `void _Jv_InterpMethod::run(void*, ffi_raw*)':
/home/dnovillo/tree-ssa-20020619-branch/merge/src/libjava/interpret.cc:3170: internal compiler error: RTL
check: expected code `reg', have `subreg' in split_2, at insn-recog.c:48188
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
---------------------------------------------------------------------------
The failure is triggered at the neg:SF splitter:
---------------------------------------------------------------------------
(define_split
[(set (match_operand:SF 0 "register_operand" "")
(neg:SF (match_operand:SF 1 "register_operand" "")))
(clobber (reg:CC 17))]
"TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed"
[(set (match_dup 0)
(neg:SF (match_dup 1)))]
"")
---------------------------------------------------------------------------
The offending operand contains:
---------------------------------------------------------------------------
Breakpoint 1, split_2 (x0=0x40514ca8, insn=0x404ec500) at insn-recog.c:48188
48188 if ((TARGET_80387 && FP_REGNO_P (REGNO (operands[0])) && reload_completed))
(gdb) pr x0
(parallel [
(set (subreg:DF (reg/v:DI 1219) 0)
(neg:DF (reg:DF 1220)))
(clobber (reg:CC 17 flags))
])
void(gdb) pr insn
(insn 4971 4970 11692 783 0x402a47c0 (parallel [
(set (subreg:DF (reg/v:DI 1219) 0)
(neg:DF (reg:DF 1220)))
(clobber (reg:CC 17 flags))
]) 256 {*negdf2_if} (insn_list 4969 (nil))
(expr_list:REG_DEAD (reg:DF 1220)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_EH_REGION (const_int 1 [0x1])
(nil)))))
void(gdb)
---------------------------------------------------------------------------
that results from expanding 'w2.d = value * -1' in the original
source file. Variable value is of type jdouble and w2 is of type
_Jv_word2 (a union of jint, jlong and jdouble).
Is the subreg:DF of a DI register the problem here?
Diego.