diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-05-14 16:29:19 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2020-05-15 08:50:12 +0200 |
commit | 304543d8ff80796ef7fa6afdf0ab6bffa5698c9a (patch) | |
tree | 95a6681762c374dab0503517e6676d2ea94f9c27 /gcc/tree-ssa-copy.c | |
parent | af1295ebe16845ced1901c1dc6fb16ba33f57818 (diff) | |
download | gcc-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.c | 24 |
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"); +} |