On 10/08/14 13:08, Ilya Enkovich wrote:
Hi,
This patch adds removal of user calls to chkp builtins which become useless
after instrumentation.
Thanks,
Ilya
--
2014-10-08 Ilya Enkovich <ilya.enkov...@intel.com>
* tree-chkp.c (chkp_remove_useless_builtins): New.
(chkp_execute): Remove useless calls to Pointer Bounds
Checker builtins.
Please put this in the file with the optimizations. Tests too, which
may require you to add some dumping bits into this code since you may
not be able to directly see the behaviour you want in the gimple dumps
later.
What I'm a bit confused about is it looks like every one of these
builtin calls you end up optimizing -- why not generate the simple copy
in the first place and avoid the need for chkp_remove_useless_builtins
completely? Clearly I'm missing something here.
diff --git a/gcc/tree-chkp.c b/gcc/tree-chkp.c
index 5443950..b424af8 100644
--- a/gcc/tree-chkp.c
+++ b/gcc/tree-chkp.c
@@ -3805,6 +3805,49 @@ chkp_instrument_function (void)
}
}
+/* Find init/null/copy_ptr_bounds calls and replace them
+ with assignments. It should allow better code
+ optimization. */
+
+static void
+chkp_remove_useless_builtins ()
+{
+ basic_block bb, next;
+ gimple_stmt_iterator gsi;
+
+ bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
+ do
+ {
+ next = bb->next_bb;
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple stmt = gsi_stmt (gsi);
+ tree fndecl;
+ enum built_in_function fcode;
There's some kind of formatting goof on one or more of the preceeding
lines. They should be at the same indention level. Most likely they
aren't consistent with their use of tabs vs spaces. A nit, but please
take care of it.
If we end up keeping this code, then I think it'll be fine with the
whitespace nit fixed. I just want to make sure there's a good reason to
generate these builtins in the first place rather than the more direct
assignment.
THanks,
Jeff