Fix for "FAIL: tmpdir-gcc.dg-struct-layout-1/t028 c_compat_x_tst.o compile, (internal compiler error)"
Fri Sep 5 14:52:00 GMT 2014
I have a potential fix for a gcc testsuite failure for aarch64 in big
FAIL: tmpdir-gcc.dg-struct-layout-1/t028 c_compat_x_tst.o compile, (internal
FAIL: tmpdir-gcc.dg-struct-layout-1/t028 c_compat_y_tst.o compile, (internal
It is caused by the inappropriate choice of hard registers for paradoxical
sub registers in
big endian mode, for example if register 0 is chosen for a paradoxical TI
subreg on big
endian then we may end up attempting to reference register -1. Similarly, on
we could end up going beyond the upper bounds of the register file too.
My fix involves adding particular constraints in IRA on the choice of
register once paradoxical
sub registers are encountered. However, Richard Sandiford also proposed an
solution that involves not constraining registers in IRA, but rather making
use of cost analysis
instead and letting LRA do the work. Not sure what your preference is ....
Fix was tested on aarch64 on little and big endian with no regressions.
2014-08-26 David Sherwood <firstname.lastname@example.org>
* ira-int.h (ira_allocno): Add "wmode" field.
* ira-build.c (create_insn_allocnos): Add new "parent" function
* ira-conflicts.c (ira_build_conflicts): Add conflicts for registers
that cannot be accessed in wmode.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 6882 bytes
Desc: not available
More information about the Gcc-patches