]> granicus.if.org Git - re2c/commit
Use tag versions to implement fallback tags.
authorUlya Trofimovich <skvadrik@gmail.com>
Wed, 26 Oct 2016 14:01:43 +0000 (15:01 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Wed, 26 Oct 2016 14:01:43 +0000 (15:01 +0100)
commit394fec90c1d7a66f2e13c658c5cc28e0d38c5678
tree66e55f3f8367be158b2843cf97d55e6f7beac1a7
parentdc7fe43739fc86b75133f5f90c003c41de639a24
Use tag versions to implement fallback tags.

This commit adds new data structure to represent copy commands for
tags: list of pairs (X, Y) which stand for command 'X = Y'.

Previously we used the same bit vectors that are used for constructing
DFA states, but this representation is inconvenient.

We no longer need special tag names (postfixed with underscore) for
fallback tags: we simply use a fresh version for each fallback tag.
27 files changed:
re2c/src/codegen/emit.h
re2c/src/codegen/emit_action.cc
re2c/src/codegen/emit_dfa.cc
re2c/src/codegen/go_emit.cc
re2c/src/ir/adfa/adfa.cc
re2c/src/ir/adfa/adfa.h
re2c/src/ir/adfa/prepare.cc
re2c/src/ir/dfa/determinization.cc
re2c/src/ir/dfa/dfa.h
re2c/src/ir/dfa/fallback_tags.cc
re2c/src/ir/dfa/tag_allocation.cc
re2c/src/ir/dfa/tag_dce.cc
re2c/src/ir/dfa/tag_interference.cc
re2c/src/ir/dfa/tag_liveness.cc
re2c/src/ir/dfa/tag_optimize.cc
re2c/src/ir/dfa/tag_renaming.cc
re2c/src/ir/tag.cc
re2c/src/ir/tag.h
re2c/test/tags/copy_coalescing1.i--tags.c [new file with mode: 0644]
re2c/test/tags/copy_coalescing1.i--tags.re [new file with mode: 0644]
re2c/test/tags/copy_coalescing2.i--tags.c [new file with mode: 0644]
re2c/test/tags/copy_coalescing2.i--tags.re [new file with mode: 0644]
re2c/test/tags/fallback3.i--tags.c
re2c/test/tags/fallback4.i--tags.c [new file with mode: 0644]
re2c/test/tags/fallback4.i--tags.re [new file with mode: 0644]
re2c/test/tags/interference.i--tags.c [new file with mode: 0644]
re2c/test/tags/interference.i--tags.re [new file with mode: 0644]