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

#include "gimple-walker.hpp"
#include "expr-rewriter.hpp"
#include "type-reconstructor.hpp"

class GimpleTypeRewriter : public GimpleWalker
{
public:
  GimpleTypeRewriter(TypeReconstructor::reorg_record_map_t map, TypeReconstructor::reorg_field_map_t map2) : exprTypeRewriter(map, map2) {};
  void _rewrite_function_decl();
private:
  ExprTypeRewriter exprTypeRewriter;
  void handle_pointer_arithmetic(gimple *s);
  virtual void _walk_pre(const_tree) final;
  virtual void _walk_pre(gimple*) final;
  virtual void _walk_pre(gcall *s) final;
  virtual void _walk_pre(greturn *s) final;
  virtual void _walk_pre(gassign *s) final;
  virtual void _walk_pre(gcond *s) final;
};