aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-copy.c
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2020-05-14 16:29:19 +0200
committerAldy Hernandez <aldyh@redhat.com>2020-05-15 08:50:12 +0200
commit304543d8ff80796ef7fa6afdf0ab6bffa5698c9a (patch)
tree95a6681762c374dab0503517e6676d2ea94f9c27 /gcc/tree-ssa-copy.c
parentaf1295ebe16845ced1901c1dc6fb16ba33f57818 (diff)
downloadgcc-304543d8ff80796ef7fa6afdf0ab6bffa5698c9a.zip
gcc-304543d8ff80796ef7fa6afdf0ab6bffa5698c9a.tar.gz
gcc-304543d8ff80796ef7fa6afdf0ab6bffa5698c9a.tar.bz2
Run copy propagation before evrp.
Diffstat (limited to 'gcc/tree-ssa-copy.c')
-rw-r--r--gcc/tree-ssa-copy.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c
index 9bcb708..2952850 100644
--- a/gcc/tree-ssa-copy.c
+++ b/gcc/tree-ssa-copy.c
@@ -636,11 +636,22 @@ const pass_data pass_data_copy_prop =
0, /* todo_flags_finish */
};
+class pass_data_factory : public pass_data
+{
+public:
+ pass_data_factory (const pass_data &pass, const char *name)
+ {
+ memcpy (this, &pass, sizeof (*this));
+ if (name)
+ this->name = name;
+ }
+};
+
class pass_copy_prop : public gimple_opt_pass
{
public:
- pass_copy_prop (gcc::context *ctxt)
- : gimple_opt_pass (pass_data_copy_prop, ctxt)
+ pass_copy_prop (gcc::context *ctxt, const char *name = NULL)
+ : gimple_opt_pass (pass_data_factory (pass_data_copy_prop, name), ctxt)
{}
/* opt_pass methods: */
@@ -657,3 +668,12 @@ make_pass_copy_prop (gcc::context *ctxt)
{
return new pass_copy_prop (ctxt);
}
+
+// Instantiate a new copy propagation pass with a different name, to
+// minimize changes to tests looking for a particular copyprop dump
+// file.
+gimple_opt_pass *
+make_pass_evrp_copy_prop (gcc::context *ctxt)
+{
+ return new pass_copy_prop (ctxt, "evrp-copyprop");
+}