aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-object-size.c
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-11-16 12:40:33 +0000
committerTom de Vries <vries@gcc.gnu.org>2015-11-16 12:40:33 +0000
commit813ccd83aef21bfaee56ea3d84ce5bf6c60984f7 (patch)
tree8d1489cda293630115ee052c09cefde6686b0e24 /gcc/tree-object-size.c
parent5ce8d99a1b45692a14b4a8aaf5b481738bf95172 (diff)
downloadgcc-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.c14
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))