This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

libjava building failure on mainline


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]