diff options
Diffstat (limited to 'gcc/gimple-rewriter.c')
-rw-r--r-- | gcc/gimple-rewriter.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/gcc/gimple-rewriter.c b/gcc/gimple-rewriter.c index b1e2dc2aa0a..4ba96e2c77f 100644 --- a/gcc/gimple-rewriter.c +++ b/gcc/gimple-rewriter.c @@ -24,6 +24,7 @@ #include "ssa.h" #include "tree-into-ssa.h" #include "gimple-rewriter.hpp" +#include "type-stringifier.hpp" void GimpleTypeRewriter::_walk_pre(const_tree e) @@ -167,6 +168,19 @@ GimpleTypeRewriter::_walk_pre(gassign *s) case POINTER_DIFF_EXPR: handle_pointer_arithmetic(s); break; + case COMPONENT_REF: + { + log("i am missing a component ref\n"); + print_gimple_stmt(dump_file, s, 0); + log("\n"); + + ///TypeStringifier stringifier; + //const_tree type = TREE_TYPE(s); + //std::string name = stringifier.stringify(type); + //log("%s\n", name.c_str()); + } + break; + break; default: log("missing %s\n", get_tree_code_name(e_code)); break; @@ -194,6 +208,15 @@ GimpleTypeRewriter::_rewrite_function_decl() tree decl = DECL_RESULT(fndecl); if (decl) exprTypeRewriter.walk(decl); } +} - +void +GimpleTypeRewriter::_walk_pre(gphi *s) +{ + unsigned n = gimple_phi_num_args (s); + for (unsigned i = 0; i < n; i++) + { + tree a = gimple_phi_arg_def(s, i); + exprTypeRewriter.walk(a); + } } |