Commit 847ffe17 by Ilya Enkovich Committed by Ilya Enkovich

re PR middle-end/66567 ([CHKP] internal compiler error: in assign_parms)

gcc/

	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.

gcc/testsuite/

	PR middle-end/66567
	* gcc.target/i386/mpx/pr66567.c: New test.

From-SVN: r224600
parent cc63a7fa
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
......
......@@ -563,25 +563,10 @@ chkp_maybe_create_clone (tree fndecl)
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
......
2015-06-18 Ilya Enkovich <enkovich.gnu@gmail.com>
PR middle-end/66567
* gcc.target/i386/mpx/pr66567.c: New test.
2015-06-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/66510
......
/* { dg-do compile } */
/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
void (*b) ();
void fn1 (const int *p1)
{
static void *a = &&conv_1234_123C;
conv_1234_123C:
;
}
void fn2 ()
{
b = fn1;
}
......@@ -4088,7 +4088,7 @@ chkp_replace_function_pointer (tree *op, int *walk_subtrees,
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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment