diff options
author | Homer Hsing <homer.xing@intel.com> | 2012-09-17 13:34:38 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2012-09-26 23:26:59 -0400 |
commit | 7aaad71a65473c4d58227c25867ad00d7793740c (patch) | |
tree | 28e2a759325823fa692df8994097fd148e4cf012 | |
parent | 1ef4bcb42107bb7e6227a9620e2359ada8c91baf (diff) |
Merge same if branches in declare_pragma section in gram.y
-rw-r--r-- | src/gram.y | 34 |
1 files changed, 15 insertions, 19 deletions
@@ -252,27 +252,23 @@ declare_type: TYPE EQ regtype ; declare_pragma: DECLARE_PRAGMA STRING declare_base declare_elementsize declare_srcregion declare_dstregion declare_type { - struct declared_register *reg; - if ((reg = find_register($2)) != NULL) { + struct declared_register *reg; + int defined; + defined = (reg = find_register($2)) != NULL; + if (defined) { fprintf(stderr, "WARNING: %s already defined\n", $2); - reg->name = $2; - reg->base.reg_file = $3.reg_file; - reg->base.reg_nr = $3.reg_nr; - reg->base.subreg_nr = $3.subreg_nr; - reg->element_size = $4; - reg->src_region = $5; - reg->dst_region = $6; - reg->type = $7; - }else { + } else { reg = calloc(sizeof(struct declared_register), 1); - reg->name = $2; - reg->base.reg_file = $3.reg_file; - reg->base.reg_nr = $3.reg_nr; - reg->base.subreg_nr = $3.subreg_nr; - reg->element_size = $4; - reg->src_region = $5; - reg->dst_region = $6; - reg->type = $7; + } + reg->name = $2; + reg->base.reg_file = $3.reg_file; + reg->base.reg_nr = $3.reg_nr; + reg->base.subreg_nr = $3.subreg_nr; + reg->element_size = $4; + reg->src_region = $5; + reg->dst_region = $6; + reg->type = $7; + if (!defined) { insert_register(reg); } } |