Fix symbol register subreg number calculation rule symbol_reg_p

When in normal mode, subreg_nr should not be divided by type_size.
This patch fixes such bug.
This commit is contained in:
Homer Hsing 2012-10-16 14:14:25 +08:00 committed by Damien Lespiau
parent 460fdc041b
commit 599d7d244a

View File

@ -1634,8 +1634,13 @@ symbol_reg_p: STRING LPAREN exp RPAREN
memcpy(&$$, dcl_reg, sizeof(*dcl_reg));
$$.base.reg_nr += $3;
$$.base.subreg_nr += $5;
$$.base.reg_nr += $$.base.subreg_nr / (32 / get_type_size(dcl_reg->type));
$$.base.subreg_nr = $$.base.subreg_nr % (32 / get_type_size(dcl_reg->type));
if(advanced_flag) {
$$.base.reg_nr += $$.base.subreg_nr / (32 / get_type_size(dcl_reg->type));
$$.base.subreg_nr = $$.base.subreg_nr % (32 / get_type_size(dcl_reg->type));
} else {
$$.base.reg_nr += $$.base.subreg_nr / 32;
$$.base.subreg_nr = $$.base.subreg_nr % 32;
}
free($1);
}
;