summaryrefslogtreecommitdiff
path: root/gcc/gimple-rewriter.hpp
blob: 03d5bfa21ad0f8641323f1a7611550ebf424fb68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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(gphi* ) final;
  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;
};