This is the mail archive of the
mailing list for the GCC project.
[patch] More thorough checking in reg_fits_class_p
- From: Jim MacArthur <jim dot macarthur at arm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 26 Apr 2012 14:20:25 +0100
- Subject: [patch] More thorough checking in reg_fits_class_p
The current code in reg_fits_class_p appears to be incorrect; since
offset may be negative, it's necessary to check both ends of the range
otherwise an array overrun or underrun may occur when calling
in_hard_reg_set_p. in_hard_reg_set_p should also be checked for each
register in the range of regno .. regno+offset.
A negative offset can occur on a big-endian target. For example, on
AArch64, subreg_regno_offset (0, DImode, 0, TImode) returns -1.
We discovered this problem while developing unrelated code for
big-endian support in the AArch64 back end.
I've tested this with an x86 bootstrap which shows no errors, and with
our own AArch64 back end.
Ok for trunk?
2012-04-26 Jim MacArthur<firstname.lastname@example.org>
* recog.c (reg_fits_class_p): Check every register between regno and
regno+offset is in the hard register set.
Description: Text document