+2015-06-18 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR middle-end/66567
+ * ipa-chkp.c (chkp_maybe_create_clone): Require
+ functions to be instrumentable.
+ * tree-chkp.c (chkp_replace_function_pointer): Use
+ chkp_instrumentable_p instead of attribute check.
+
2015-06-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/66510
if (gimple_has_body_p (fndecl))
{
- /* If function will not be instrumented, then it's instrumented
- version is a thunk for the original. */
- if (!chkp_instrumentable_p (fndecl))
- {
- clone->remove_callees ();
- clone->remove_all_references ();
- clone->thunk.thunk_p = true;
- clone->thunk.add_pointer_bounds_args = true;
- clone->create_edge (node, NULL, 0, CGRAPH_FREQ_BASE);
- /* Thunk shouldn't be a cdtor. */
- DECL_STATIC_CONSTRUCTOR (clone->decl) = 0;
- DECL_STATIC_DESTRUCTOR (clone->decl) = 0;
- }
- else
- {
- tree_function_versioning (fndecl, new_decl, NULL, false,
- NULL, false, NULL, NULL);
- clone->lowered = true;
- }
+ gcc_assert (chkp_instrumentable_p (fndecl));
+ tree_function_versioning (fndecl, new_decl, NULL, false,
+ NULL, false, NULL, NULL);
+ clone->lowered = true;
}
/* New params are inserted after versioning because it
void *data ATTRIBUTE_UNUSED)
{
if (TREE_CODE (*op) == FUNCTION_DECL
- && !lookup_attribute ("bnd_legacy", DECL_ATTRIBUTES (*op))
+ && chkp_instrumentable_p (*op)
&& (DECL_BUILT_IN_CLASS (*op) == NOT_BUILT_IN
/* For builtins we replace pointers only for selected
function and functions having definitions. */