Some tests had previously been passing despite actually causing a crash, due
to the required output being too loosely specified. This ensures the bare minimum:
that every test has an expected EXIT code and SIGNAL result.
The codes suggested were taken from the test's current output, and only applied for
CORE tests, but hand inspection suggests these choices are reasonable.
Modified the tests to not assume the order of the functions.
For precise tests no further changes are required since if
the removal failed, there will be a label before the call to be jumped to.
For the no-match tests, no further changes are required since the
goto statements are being verified to be all the there.
For the approx tests, we need to verify that
the other case statements aren't present in the GOTO program to be sure
that the FP removal has been successful. As such, the other case
statements are added to the exclude section.
To handle the cases where the function pointer is null, we enable the
pointer--check flag. This asserts that one of the branches is taken
(e.g. a valid function pointer). This wasn't supported by goto-analyze
so added the option to it.
Consistent indentation
Consistent functions for the function pointers.
Made braces appear on the next line.
Made all structs include at least two components.
Corrected the name of two of the tests.
Remove unused imports.
Made all the mains return int so they compile with clang with no
warnings.
Enabling debug output for all tests so can see the output
Removing out of date comments from the tests
Missing empty lines