This is the mail archive of the gcc-patches@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]

Re: [PATCH] S/390 Bootstrap failure due to fixup_eh_region_note


Hello Andrew,

> But when I was looking into this bug, I noticed that the EH REGIONS are
> always throw external and never can throw internal so new basic blocks
> will not be found.  The assert is correct for internal throw EH REGIONS
> reg notes but not correct for the external throw as we don't need a
> new basic block.

I've tested your patch as well - although I forgot to tell you about 
the result. Bootstrap fails on s390 and s390x in very much the same 
way as before.
The insn numbers in this example differ from my first posting because 
I've updated gcc.
But the problem stays the same.

The source operand of this insn must be reloaded:

(insn 382 381 746 59 /build/gcc-4.1/libjava/classpath/java/awt/image/SinglePixelPackedSampleModel
.java:353 (set (mem/s:SI (plus:DI (plus:DI (reg:DI 195)
                    (reg/f:DI 85 [ D.30281 ]))
                (const_int 12 [0xc])) [16 <variable>.data S4 A32])
        (mem/s:SI (plus:DI (reg/v/f:DI 45 [ in ])
                (const_int 12 [0xc])) [16 <variable>.data+0 S4 A32])) 51 {*movsi_zarch} (insn_lis
t:REG_DEP_ANTI 381 (insn_list:REG_DEP_ANTI 380 (nil)))
    (expr_list:REG_DEAD (reg/v/f:DI 45 [ in ])
        (expr_list:REG_DEAD (reg:DI 195)
            (expr_list:REG_DEAD (reg/f:DI 85 [ D.30281 ])
                (expr_list:REG_EH_REGION (const_int 1 [0x1])
                    (nil))))))


Afterwards we have two trapping insns:

(insn 773 381 382 59 /build/gcc-4.1/libjava/classpath/java/awt/image/SinglePixelPackedSampleModel.java:353 (set (reg:SI 10 %r10)
        (mem/s:SI (plus:DI (reg/v/f:DI 10 %r10 [orig:45 in ] [45])
                (const_int 12 [0xc])) [16 <variable>.data+0 S4 A32])) -1 (nil)
    (expr_list:REG_EH_REGION (const_int 1 [0x1])
        (nil)))

(insn 382 773 746 59 /build/gcc-4.1/libjava/classpath/java/awt/image/SinglePixelPackedSampleModel.java:353 (set (mem/s:SI (plus:DI (plus:DI (reg:DI 1 %r1 [195])
                    (reg/f:DI 2 %r2 [orig:85 D.30281 ] [85]))
                (const_int 12 [0xc])) [16 <variable>.data S4 A32])
        (reg:SI 10 %r10)) 51 {*movsi_zarch} (insn_list:REG_DEP_ANTI 381 (insn_list:REG_DEP_ANTI 380 (nil)))
    (expr_list:REG_DEAD (reg/v/f:DI 10 %r10 [orig:45 in ] [45])
        (expr_list:REG_DEAD (reg:DI 1 %r1 [195])
            (expr_list:REG_DEAD (reg/f:DI 2 %r2 [orig:85 D.30281 ] [85])
                (expr_list:REG_EH_REGION (const_int 1 [0x1])
                    (nil))))))


Your patch enabling the assertion for internal throws only doesn't help because
insn 382 is considered an internal throw.
I must admit that it is not clear to me why do you think that we should make a
difference between internal and external throws. The problem of an increasing
number of trapping insns due to reloads should stay the same for both variants.

Bye,

-Andreas-


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