]> granicus.if.org Git - re2c/commit
Drop hoisted tags in 'base' states duplicated by tunneling.
authorUlya Trofimovich <skvadrik@gmail.com>
Sun, 4 Dec 2016 12:00:31 +0000 (12:00 +0000)
committerUlya Trofimovich <skvadrik@gmail.com>
Sun, 4 Dec 2016 12:00:31 +0000 (12:00 +0000)
commit0b4c6b8a1c2009df2514ecbad69ccd5e0896c7cd
tree0b0bc30384fdf07ce28a877003302ff057e135c6
parent1e2e16a0c5711a6177ada5b8dccc0229941b2676
Drop hoisted tags in 'base' states duplicated by tunneling.

Tunneling optimization finds certain states and splits them into
two parts: First part consumes a character and unconditionally moves
to the second part. Second part does not consume characters, but
contains a switch on character value.

Second part is a 'base switch', which may be utilized by many other
states. So if the first part has hoisted tags, they should be dropped
in the second part (the aforementioned many other states may have hoisted
tags of there own or no hoisted tags at all).

Found by slyfox's fuzzer. :)

Yet unable to construct a test case that reveals the error: the original
test case found by fuzzer is not breaking anymore after recent commit
44045203c211531cc3e3a47f0b5eb2e5d993cc15 "Properly remove useless final states.".
re2c/src/ir/adfa/prepare.cc