This is the mail archive of the 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,H8300] Fix ICE due to insv and extzv patterns

Hi Jeff,

>> There's nothing which would prevent the same problem from occurring 
>> with the original H8 port

Yes, this seems to be a generic problem in H8 target. However, the 
original H8 port does not seem to generate the RTL patterns for insv
and extzv expanders. Hence, it does not result in ICE. 

H8SX is an advanced port in H8 target and generates the most optimized
code. So register and memory operands are allowed only in H8SX target
for insv and extzv expanders in their "loc" field unlike the original
H8 port which allows only register operands. If memory operands are
used in the "loc" field of H8SX target, it would generate more 
optimised code as it reduces the redundant instructions of loading and
storing the values between register and memory. Hence, the patch allows
only memory operands in the "loc" field of H8SX target. 

>> you haven't described the conditions leading to the abort in enough
>> detail for me to understand precisely why you're getting an ICE. 

The error generated while compiling the testcase was "internal compiler
error: in gen_rtx_SUBREG, at emit-rtl.c". On further investigation, it
led to the following line:-
gcc_assert (validate_subreg (mode, GET_MODE (reg), reg, offset));
Hence, it was assumed that the error was due to generating subreg and 
only memory operands were allowed in the "loc" field of insv and extzv 
expanders for H8SX. 

KPIT Cummins Infosystems Ltd,
Pune (INDIA)

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