Commit 3dd598be by Ilya Enkovich Committed by Ilya Enkovich

tree-chkp.c (chkp_call_returns_bounds_p): Fix handling of bounds narrowing...

gcc/

	* tree-chkp.c (chkp_call_returns_bounds_p): Fix handling of
	bounds narrowing, already instrumented calls and calls to
	not instrumentable functions.

gcc/testsuite/

	* gcc.target/i386/chkp-narrow-bounds.c: New.

From-SVN: r220154
parent b30ea138
2015-01-27 Ilya Enkovich <ilya.enkovich@intel.com>
* tree-chkp.c (chkp_call_returns_bounds_p): Fix handling of
bounds narrowing, already instrumented calls and calls to
not instrumentable functions.
2015-01-27 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/64807
......
2015-01-27 Ilya Enkovich <ilya.enkovich@intel.com>
* gcc.target/i386/chkp-narrow-bounds.c: New.
2015-01-27 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/64807
......
/* { dg-do compile } */
/* { dg-require-effective-target mpx } */
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkp" } */
/* { dg-final { scan-tree-dump "bndcl" "chkp" } } */
/* { dg-final { scan-tree-dump "bndcu" "chkp" } } */
/* { dg-final { cleanup-tree-dump "chkp" } } */
int
test (int *p)
{
int *p1 = __bnd_narrow_ptr_bounds (p - 10, p, sizeof (int) * 20);
return p1[10];
}
......@@ -2113,13 +2113,19 @@ chkp_call_returns_bounds_p (gcall *call)
if (gimple_call_internal_p (call))
return false;
if (gimple_call_builtin_p (call, BUILT_IN_CHKP_NARROW_PTR_BOUNDS)
|| chkp_gimple_call_builtin_p (call, BUILT_IN_CHKP_NARROW))
return true;
if (gimple_call_with_bounds_p (call))
return true;
tree fndecl = gimple_call_fndecl (call);
if (fndecl && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD)
return false;
if (fndecl
&& lookup_attribute ("bnd_legacy", DECL_ATTRIBUTES (fndecl)))
if (fndecl && !chkp_instrumentable_p (fndecl))
return false;
if (fndecl && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL)
......
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