summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHomer Hsing <homer.xing@intel.com>2012-09-17 13:34:38 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2012-09-26 23:26:59 -0400
commit7aaad71a65473c4d58227c25867ad00d7793740c (patch)
tree28e2a759325823fa692df8994097fd148e4cf012
parent1ef4bcb42107bb7e6227a9620e2359ada8c91baf (diff)
Merge same if branches in declare_pragma section in gram.y
-rw-r--r--src/gram.y34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/gram.y b/src/gram.y
index c9e2c1e..ad53a08 100644
--- a/src/gram.y
+++ b/src/gram.y
@@ -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);
}
}