diff options
author | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-12-02 15:55:32 +0100 |
---|---|---|
committer | Erick Ochoa <erick.ochoa@theobroma-systems.com> | 2020-12-02 15:55:32 +0100 |
commit | 54297d91d8bf09929f80de79b84b8ed40888c67b (patch) | |
tree | 3d651dc926609d8c14ea1455c766baddd236ca6b | |
parent | fe50ba7db350d2117294e50b6be766ad954dbd8e (diff) |
std::stack<tree> -> vec<tree>
-rw-r--r-- | gcc/ipa-type-escape-analysis.c | 40 | ||||
-rw-r--r-- | gcc/ipa-type-escape-analysis.h | 4 |
2 files changed, 21 insertions, 23 deletions
diff --git a/gcc/ipa-type-escape-analysis.c b/gcc/ipa-type-escape-analysis.c index cc9e6e615f7..7d0cee954fc 100644 --- a/gcc/ipa-type-escape-analysis.c +++ b/gcc/ipa-type-escape-analysis.c @@ -2238,7 +2238,6 @@ expr_escaper::update (tree t, Reason r) void expr_escaper::_walk_pre (tree e) { - //_stack.push (e); _stack2.safe_push (e); tree t = TREE_TYPE (e); @@ -2249,7 +2248,6 @@ expr_escaper::_walk_pre (tree e) void expr_escaper::_walk_post (__attribute__ ((unused)) tree e) { - //_stack.pop (); _stack2.pop (); } @@ -2810,7 +2808,7 @@ expr_accessor::add_all_fields_in_struct (tree t) void expr_accessor::_walk_pre (tree e) { - _stack.push (e); + _stack2.safe_push (e); tree t = TREE_TYPE (e); add_all_fields_in_struct (t); } @@ -2818,7 +2816,7 @@ expr_accessor::_walk_pre (tree e) void expr_accessor::_walk_post (__attribute__ ((unused)) tree e) { - _stack.pop (); + _stack2.pop (); } void @@ -2844,19 +2842,19 @@ void expr_accessor::_walk_ADDR_EXPR_pre (__attribute__ ((unused)) tree e) { log ("expr accessor mem ref\n"); - log ("stack size = %d\n", _stack.size ()); + log ("stack size = %d\n", _stack2.length ()); - if (_stack.size () < 4) + if (_stack2.length () < 4) return; // TODO: Fix error with double pushing - tree addr_expr = _stack.top (); - _stack.pop (); - tree twice = _stack.top (); - _stack.pop (); - tree prev_expr = _stack.top (); - _stack.push (addr_expr); - _stack.push (twice); + tree addr_expr = _stack2.last (); + _stack2.pop (); + tree twice = _stack2.last (); + _stack2.pop (); + tree prev_expr = _stack2.last (); + _stack2.safe_push (addr_expr); + _stack2.safe_push (twice); log ("prev_expr code = %s\n", get_tree_code_name (TREE_CODE (prev_expr))); if (TREE_CODE (prev_expr) != MEM_REF) return; @@ -2956,16 +2954,16 @@ expr_accessor::_walk_COMPONENT_REF_pre (tree e) add_all_fields_in_struct (op0_t); _type_accessor.put_in_record_field_map(op0_t, field_map); - if (_stack.size () < 4) + if (_stack2.length () < 4) return; - tree this_expr = _stack.top (); - _stack.pop (); - tree twice = _stack.top (); - _stack.pop (); - tree prev_expr = _stack.top (); - _stack.push (twice); - _stack.push (this_expr); + tree this_expr = _stack2.last (); + _stack2.pop (); + tree twice = _stack2.last (); + _stack2.pop (); + tree prev_expr = _stack2.last (); + _stack2.safe_push (twice); + _stack2.safe_push (this_expr); if (TREE_CODE (prev_expr) != ADDR_EXPR) return; diff --git a/gcc/ipa-type-escape-analysis.h b/gcc/ipa-type-escape-analysis.h index 6a154dc33f3..1c9826416cd 100644 --- a/gcc/ipa-type-escape-analysis.h +++ b/gcc/ipa-type-escape-analysis.h @@ -1148,7 +1148,7 @@ private: class expr_accessor : public expr_walker { public: - expr_accessor () : _type_accessor () + expr_accessor () : _type_accessor (), _stack2 (vNULL) {}; // Expr E is accessed in A manner. @@ -1171,7 +1171,7 @@ private: unsigned _access; // Stack to keep track of how current subexpression was reached. - std::stack<tree> _stack; + vec<tree> _stack2; // Mark FIELD_DECL as read. // If ADDR_EXPR is parent expression that means |