This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, Pointer Bounds Checker 26/x] CCP


On 03 Jun 11:54, Richard Biener wrote:
> On Tue, Jun 3, 2014 at 9:38 AM, Ilya Enkovich <enkovich.gnu@gmail.com> wrote:
> > Hi,
> >
> > This patch allows BUILT_IN_CHKP_BNDRET as a consumer of a result of BUILT_IN_STACK_SAVE call.
> >
> > Bootstrapped and tested on linux-x86_64.
> >
> > Thanks,
> > Ilya
> > --
> > gcc/
> >
> > 2014-06-03  Ilya Enkovich  <ilya.enkovich@intel.com>
> >
> >         * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Handle
> >         BUILT_IN_CHKP_BNDRET calls.
> >
> >
> > diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
> > index eeefeaf..c138337 100644
> > --- a/gcc/tree-ssa-ccp.c
> > +++ b/gcc/tree-ssa-ccp.c
> > @@ -1848,7 +1848,7 @@ insert_clobber_before_stack_restore (tree saved_val, tree var,
> >                                      gimple_htab *visited)
> >  {
> >    gimple stmt, clobber_stmt;
> > -  tree clobber;
> > +  tree clobber, fndecl;
> >    imm_use_iterator iter;
> >    gimple_stmt_iterator i;
> >    gimple *slot;
> > @@ -1880,6 +1880,10 @@ insert_clobber_before_stack_restore (tree saved_val, tree var,
> >      else if (gimple_assign_ssa_name_copy_p (stmt))
> >        insert_clobber_before_stack_restore (gimple_assign_lhs (stmt), var,
> >                                            visited);
> > +    else if (gimple_code (stmt) == GIMPLE_CALL
> > +            && (fndecl = targetm.builtin_chkp_function (BUILT_IN_CHKP_BNDRET))
> > +            && gimple_call_fndecl (stmt) == fndecl)
> > +      continue;
> 
> Please change this to use the proper abstraction once implemented.  It should
> be sth like
> 
>     else if (is_gimple_call (stmt)
>                && gimple_call_builtin_p (stmt, BUILT_IN_CHKP_BNDRET))
>        continue;
> 
> I assume now that the builtins are not target builtins but added to
> builtins.def.
> 
> Richard.
> 
> >      else
> >        gcc_assert (is_gimple_debug (stmt));
> >  }

Here is a fixed version with proper predicate.

Bootstrapped and tested on linux_x86-64.

Thanks,
Ilya
--
gcc/

2014-06-05  Ilya Enkovich  <ilya.enkovich@intel.com>

	* tree-ssa-ccp.c: Include tree-chkp.h.
	(insert_clobber_before_stack_restore): Handle
	BUILT_IN_CHKP_BNDRET calls.


diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index eeefeaf..e99bcf5 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -144,6 +144,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "dbgcnt.h"
 #include "params.h"
+#include "tree-chkp.h"
 
 
 /* Possible lattice values.  */
@@ -1880,6 +1881,9 @@ insert_clobber_before_stack_restore (tree saved_val, tree var,
     else if (gimple_assign_ssa_name_copy_p (stmt))
       insert_clobber_before_stack_restore (gimple_assign_lhs (stmt), var,
 					   visited);
+    else if (gimple_code (stmt) == GIMPLE_CALL
+	     && chkp_gimple_call_builtin_p (stmt, BUILT_IN_CHKP_BNDRET))
+      continue;
     else
       gcc_assert (is_gimple_debug (stmt));
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]