summaryrefslogtreecommitdiff
path: root/gcc/gimple-rewriter.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/gimple-rewriter.c')
-rw-r--r--gcc/gimple-rewriter.c25
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);
+ }
}