[PATCH, committed] TILE-Gx: fix barrier bundling
Walter Lee
walt@mellanox.com
Sat Nov 19 03:19:00 GMT 2016
This patch fixes a bundling bug. When there are consecutive barriers,
the end-of-bundle marker of the last barrier is getting dropped.
Bootstrapped and tested on tilegx hardware, also backported to GCC 6.
2016-11-18 Walter Lee <walt@tilera.com>
* config/tilegx/tilegx.c (tilegx_gen_bundles): Preserve
end-of-bundle marker for consecutive barriers.
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index 76a7455..0403e8e 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -4469,8 +4469,7 @@ tilegx_gen_bundles (void)
rtx_insn *end = NEXT_INSN (BB_END (bb));
prev = NULL;
- for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn;
- prev = insn, insn = next)
+ for (insn = next_insn_to_bundle (BB_HEAD (bb), end); insn; insn = next)
{
next = next_insn_to_bundle (NEXT_INSN (insn), end);
@@ -4506,7 +4505,11 @@ tilegx_gen_bundles (void)
PUT_MODE (prev, QImode);
}
delete_insn (insn);
+
+ // Note: prev remains the same for next iteration.
}
+ else
+ prev = insn;
}
}
}
More information about the Gcc-patches
mailing list