]> granicus.if.org Git - re2c/commitdiff
Moved tag optimizing functions to 'cfg_t' struct namespace.
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 2 Nov 2016 18:27:27 +0000 (18:27 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 2 Nov 2016 18:30:47 +0000 (18:30 +0000)
re2c/src/ir/dfa/cfg/cfg.h
re2c/src/ir/dfa/cfg/dce.cc
re2c/src/ir/dfa/cfg/interfere.cc
re2c/src/ir/dfa/cfg/liveanal.cc
re2c/src/ir/dfa/cfg/normalize.cc
re2c/src/ir/dfa/cfg/optimize.cc
re2c/src/ir/dfa/cfg/rename.cc
re2c/src/ir/dfa/cfg/varalloc.cc

index fde83ffc8b63610ef7743f3d8e2ad8d8d983db82..26489ccd282eac9d2f40ecb8ee20fe267baedf64 100644 (file)
@@ -25,16 +25,15 @@ struct cfg_t
 
        explicit cfg_t(dfa_t &a);
        ~cfg_t();
+       static void liveness_analysis(const cfg_t &cfg, bool *live);
+       static void dead_code_elimination(cfg_t &cfg, const bool *live);
+       static void interference(const cfg_t &cfg, const bool *live, bool *interf);
+       static tagver_t variable_allocation(const cfg_t &cfg, const bool *interf, tagver_t *ver2new);
+       static void renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver);
+       static void normalization(cfg_t &cfg);
        FORBID_COPY(cfg_t);
 };
 
-void tag_liveness(const cfg_t &cfg, bool *live);
-void tag_dce(cfg_t &cfg, const bool *live);
-void tag_interference(const cfg_t &cfg, const bool *live, bool *interf);
-tagver_t tag_allocation(const cfg_t &cfg, const bool *interf, tagver_t *ver2new);
-void tag_renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver);
-void tag_normalization(cfg_t &cfg);
-
 } // namespace re2c
 
 #endif // _RE2C_IR_DFA_CFG_CFG_
index ffddd91c866618664e208740c5df4719b3b173b2..60fea7ced1d465a68819ad3db843ef77159ce60c 100644 (file)
@@ -3,7 +3,7 @@
 namespace re2c
 {
 
-void tag_dce(cfg_t &cfg, const bool *live)
+void cfg_t::dead_code_elimination(cfg_t &cfg, const bool *live)
 {
        const tagver_t nver = cfg.dfa.maxtagver + 1;
        cfg_bb_t *b = cfg.bblocks, *e = b + cfg.nbblock;
index 1952d5a1acee98b4b0ccbbf0053d243dd8fd72e8..8f87838060327635a318edde0ea24a4ae215b374 100644 (file)
@@ -7,7 +7,7 @@ namespace re2c
 
 static void interfere(const tcmd_t &cmd, bool *interf, bool *live, bool *buf, size_t nver);
 
-void tag_interference(const cfg_t &cfg, const bool *live, bool *interf)
+void cfg_t::interference(const cfg_t &cfg, const bool *live, bool *interf)
 {
        const size_t nver = static_cast<size_t>(cfg.dfa.maxtagver) + 1;
        bool *buf1 = new bool[nver];
index d996b67a6f1e28ee9520e698051c24b02fd40dda..825888fa33147d5fe963c1230688b4a15027e4f8 100644 (file)
@@ -5,7 +5,7 @@
 namespace re2c
 {
 
-void tag_liveness(const cfg_t &cfg, bool *live)
+void cfg_t::liveness_analysis(const cfg_t &cfg, bool *live)
 {
        const size_t
                nbb = cfg.nbblock,
index 45cf8dd08b53bfaf3a36be8aaee67a6847658293..91c54b50c97e5d6f05eacc1763dc085cb9d66b68 100644 (file)
@@ -14,7 +14,7 @@ template<typename cmd_t> void normalize(cmd_t *cmd);
  * For that reason all commands are normalized.
  */
 
-void tag_normalization(cfg_t &cfg)
+void cfg_t::normalization(cfg_t &cfg)
 {
        cfg_bb_t *b = cfg.bblocks, *e = b + cfg.nbblock;
        for (; b < e; ++b) {
index e022b56c046518544b22de85596f391574b7534d..d48fa5eba957eaf6435f088b0d16269f048f0617 100644 (file)
@@ -16,12 +16,12 @@ void optimize_tags(dfa_t &dfa)
                bool *interf = new bool[nver * nver];
                tagver_t *ver2new = new tagver_t[nver];
 
-               tag_liveness(cfg, live);
-               tag_dce(cfg, live);
-               tag_interference(cfg, live, interf);
-               const tagver_t maxver = tag_allocation(cfg, interf, ver2new);
-               tag_renaming(cfg, ver2new, maxver);
-               tag_normalization(cfg);
+               cfg_t::liveness_analysis(cfg, live);
+               cfg_t::dead_code_elimination(cfg, live);
+               cfg_t::interference(cfg, live, interf);
+               const tagver_t maxver = cfg_t::variable_allocation(cfg, interf, ver2new);
+               cfg_t::renaming(cfg, ver2new, maxver);
+               cfg_t::normalization(cfg);
 
                delete[] live;
                delete[] interf;
index 493688de483afa1a59d34f4878c6777416a3cecc..be797504b2bbf0838e6ba9c7d20080829a227ff3 100644 (file)
@@ -3,7 +3,7 @@
 namespace re2c
 {
 
-void tag_renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver)
+void cfg_t::renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver)
 {
        tagver_t &oldmax = cfg.dfa.maxtagver;
        if (oldmax == maxver) return;
index 721ece273f5c53168d4bd89ded2266f66ab2039d..f710f4c64d33244ca2aeb3d84c451ee581a203f4 100644 (file)
@@ -16,7 +16,7 @@ namespace re2c
  * We build just some cover (not necessarily minimal).
  * The algorithm takes quadratic (in the number of tags) time.
  */
-tagver_t tag_allocation(const cfg_t &cfg, const bool *interf,
+tagver_t cfg_t::variable_allocation(const cfg_t &cfg, const bool *interf,
        tagver_t *ver2new)
 {
        const tagver_t