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 14/x] Pointer Bounds Checker passes


On Fri, May 30, 2014 at 2:25 PM, Ilya Enkovich <enkovich.gnu@gmail.com> wrote:
> Hi,
>
> This patch adds Pointer Bounds Checker passes.  Versioning happens before early local passes.  Earply local passes are split into 3 stages to have everything instrumented before any optimization applies.

That looks artificial to me.  If you need to split up early_local_passes
then do that - nesting three IPA pass groups inside it looks odd to me.
Btw - doing this in three "IPA phases" makes things possibly slower
due to cache effects.  It might be worth pursuing to move the early
stage completely to the lowering pipeline.

Btw, fixup_cfg only needs to run once local_pure_const was run
on a callee, thus it shouldn't be neccessary to run it from the
first group.

 void
 pass_manager::execute_early_local_passes ()
 {
-  execute_pass_list (pass_early_local_passes_1->sub);
+  execute_pass_list (pass_early_local_passes_1->sub->sub);
+  execute_pass_list (pass_early_local_passes_1->sub->next->sub);
+  execute_pass_list (pass_early_local_passes_1->sub->next->next->next->sub);
 }

is gross - it should be enough to execute the early local pass list
(obsolete comment with the suggestion above).

Richard.

> Bootstrapped and tested on linux-x86_64.
>
> Thanks,
> Ilya
> --
> gcc/
>
> 2014-05-29  Ilya Enkovich  <ilya.enkovich@intel.com>
>
>         * tree-chkp.c: New.
>         * tree-chkp.h: New.
>         * rtl-chkp.c: New.
>         * rtl-chkp.h: New.
>         * Makefile.in (OBJS): Add tree-chkp.o, rtl-chkp.o.
>         (GTFILES): Add tree-chkp.c.
>         * c-family/c.opt (fchkp-check-incomplete-type): New.
>         (fchkp-zero-input-bounds-for-main): New.
>         (fchkp-first-field-has-own-bounds): New.
>         (fchkp-narrow-bounds): New.
>         (fchkp-narrow-to-innermost-array): New.
>         (fchkp-optimize): New.
>         (fchkp-use-fast-string-functions): New.
>         (fchkp-use-nochk-string-functions): New.
>         (fchkp-use-static-bounds): New.
>         (fchkp-use-static-const-bounds): New.
>         (fchkp-treat-zero-dynamic-size-as-infinite): New.
>         (fchkp-check-read): New.
>         (fchkp-check-write): New.
>         (fchkp-store-bounds): New.
>         (fchkp-instrument-calls): New.
>         (fchkp-instrument-marked-only): New.
>         * cppbuiltin.c (define_builtin_macros_for_compilation_flags): Add
>         __CHKP__ macro when Pointer Bounds Checker is on.
>         * passes.def (pass_ipa_chkp_versioning): New.
>         (pass_before_local_optimization_passes): New.
>         (pass_chkp_instrumentation_passes): New.
>         (pass_ipa_chkp_produce_thunks): New.
>         (pass_local_optimization_passes): New.
>         (pass_chkp_opt): New.
>         * toplev.c: include tree-chkp.h.
>         (compile_file): Add chkp_finish_file call.
>         * tree-pass.h (make_pass_ipa_chkp_versioning): New.
>         (make_pass_ipa_chkp_produce_thunks): New.
>         (make_pass_chkp): New.
>         (make_pass_chkp_opt): New.
>         (make_pass_before_local_optimization_passes): New.
>         (make_pass_chkp_instrumentation_passes): New.
>         (make_pass_local_optimization_passes): New.
>         * tree.h (called_as_built_in): New.
>         * builtins.c (called_as_built_in): Not static anymore.
>         * passes.c (pass_manager::execute_early_local_passes): Execute
>         early passes in three steps.
>         (pass_data_before_local_optimization_passes): New.
>         (pass_before_local_optimization_passes): New.
>         (pass_data_chkp_instrumentation_passes): New.
>         (pass_chkp_instrumentation_passes): New.
>         (pass_data_local_optimization_passes): New.
>         (pass_local_optimization_passes): New.
>         (make_pass_before_local_optimization_passes): New.
>         (make_pass_chkp_instrumentation_passes): New.
>         (make_pass_local_optimization_passes): New.


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