macaw/x86_symbolic
Tristan Ravitch 8e10643b0f
Fix tail call classification (#286)
The tail call classifier came after the jump classifier, which was a problem because it is less strict than the tail call classifier, meaning it would always fire.  This commit moves direct jump to be the last classifier applied, giving the others a chance.

Includes a test case in the ARM backend.

This requires some updates to some of the expected test results, as a few blocks are now classified as tail calls that were
plain jumps before.  They really could be considered either.  I think it would be nice if these could be classified as jumps instead, but the reason they are flagged as tail calls is mostly down to the fact that their surrounding context is so simple that either interpretation works.

Correcting this would require some heuristics based on additional analysis passes.

The test harness for macaw symbolic required a few changes because the new detection of some jumps as tail calls introduces new calls into the symbolic test suites. However, the symbolic testing harness did not support calls before.  Adding support required a bit of plumbing, including a more extensive code discovery pass.


Fixes #285
2022-05-10 07:29:55 -07:00
..
src/Data/Macaw/X86 generalize treatment for terminal statements in CFG slicing code (#278) 2022-04-20 10:08:15 -07:00
tests Fix tail call classification (#286) 2022-05-10 07:29:55 -07:00
LICENSE Add macaw-x86-symbolic 2018-01-02 22:50:23 -08:00
macaw-x86-symbolic.cabal Fix tail call classification (#286) 2022-05-10 07:29:55 -07:00