summaryrefslogtreecommitdiff
path: root/gcc/expr-escaper.hpp
blob: c58e18301338e669d3b04d8fdd185d8d73357c72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

#include "ipa-prototype.h"
#include "expr-walker.hpp"
#include "type-escaper.hpp"
#include "collect-types.h"

class ExprEscaper : public ExprWalker
{
public:
  TypeEscaper typeEscaper;
  ExprEscaper(ptrset_t &types) : typeEscaper(types) {};
  ptrset_t get_sets() { return typeEscaper.get_sets(); };
  void update(const_tree t, Reason r);
  void update_single_level(const_tree t, Reason r) { typeEscaper.update_single_level(TREE_TYPE(t), r); };
  void print_reasons() { typeEscaper.print_reasons(); };
private:
  Reason _r;
  virtual void _walk_pre(const_tree e);
  virtual void _walk_CONSTRUCTOR_pre(const_tree e);
};