summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErick Ochoa <erick.ochoa@theobroma-systems.com>2020-12-02 15:55:32 +0100
committerErick Ochoa <erick.ochoa@theobroma-systems.com>2020-12-02 15:55:32 +0100
commit54297d91d8bf09929f80de79b84b8ed40888c67b (patch)
tree3d651dc926609d8c14ea1455c766baddd236ca6b
parentfe50ba7db350d2117294e50b6be766ad954dbd8e (diff)
std::stack<tree> -> vec<tree>
-rw-r--r--gcc/ipa-type-escape-analysis.c40
-rw-r--r--gcc/ipa-type-escape-analysis.h4
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