diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-11-16 12:40:33 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-11-16 12:40:33 +0000 |
commit | 813ccd83aef21bfaee56ea3d84ce5bf6c60984f7 (patch) | |
tree | 8d1489cda293630115ee052c09cefde6686b0e24 /gcc/tree-object-size.c | |
parent | 5ce8d99a1b45692a14b4a8aaf5b481738bf95172 (diff) | |
download | gcc-813ccd83aef21bfaee56ea3d84ce5bf6c60984f7.zip gcc-813ccd83aef21bfaee56ea3d84ce5bf6c60984f7.tar.gz gcc-813ccd83aef21bfaee56ea3d84ce5bf6c60984f7.tar.bz2 |
Remove first_pass_instance from pass_object_sizes
2015-11-16 Tom de Vries <tom@codesourcery.com>
* passes.def: Add arg to pass_object_sizes pass instantiation.
* tree-object-size.c (pass_object_sizes::pass_object_sizes): Initialize
insert_min_max_p.
(pass_object_sizes::set_pass_param): New member function. Set
insert_min_max_p.
(pass_object_sizes::insert_min_max_p): New private member.
(pass_object_sizes::execute): Use insert_min_max_p instead of
first_pass_instance.
From-SVN: r230418
Diffstat (limited to 'gcc/tree-object-size.c')
-rw-r--r-- | gcc/tree-object-size.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index fa3625c..459e65d 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -1217,13 +1217,21 @@ class pass_object_sizes : public gimple_opt_pass { public: pass_object_sizes (gcc::context *ctxt) - : gimple_opt_pass (pass_data_object_sizes, ctxt) + : gimple_opt_pass (pass_data_object_sizes, ctxt), insert_min_max_p (false) {} /* opt_pass methods: */ opt_pass * clone () { return new pass_object_sizes (m_ctxt); } + void set_pass_param (unsigned int n, bool param) + { + gcc_assert (n == 0); + insert_min_max_p = param; + } virtual unsigned int execute (function *); + private: + /* Determines whether the pass instance creates MIN/MAX_EXPRs. */ + bool insert_min_max_p; }; // class pass_object_sizes /* Dummy valueize function. */ @@ -1250,12 +1258,12 @@ pass_object_sizes::execute (function *fun) init_object_sizes (); - /* In the first pass instance, only attempt to fold + /* If insert_min_max_p, only attempt to fold __builtin_object_size (x, 1) and __builtin_object_size (x, 3), and rather than folding the builtin to the constant if any, create a MIN_EXPR or MAX_EXPR of the __builtin_object_size call result and the computed constant. */ - if (first_pass_instance) + if (insert_min_max_p) { tree ost = gimple_call_arg (call, 1); if (tree_fits_uhwi_p (ost)) |