From 599d7d244afa4cf70de02d7b6799449fe8cbe57b Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Tue, 16 Oct 2012 14:14:25 +0800 Subject: [PATCH] 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. --- assembler/src/gram.y | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/assembler/src/gram.y b/assembler/src/gram.y index 1b409886..ccd47630 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -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); } ;