-
chevalier@alum.wellesley.edu authored
Added support for testing generation and compilation of External Core code. There are two new ways, which are not automatically enabled but can be invoked from the command line: extcore and optextcore. Invoking either way will test that ghc is able to generate External Core code for a given test, read the code back in, and compile it to an executable that produces the expected output for the test. The External Core facility has a few limitations which result in certain tests failing for the "extcore" way. - External Core can't represent foreign calls other than static C calls - External Core can't correctly represent literals resulting from a "foreign label" declaration - External Core can't represent declarations of datatypes with no constructors The first of these was already known, and GHC panics if you tried to generate External Core for a program containing such a call. The second two cases were not handled properly before now; in another commit, I've changed the code that emits External Core to panic if either of them arises. Previously, GHC would happily generate External Core in either case, but would not be able to compile the resulting code. There are several tests that exhibit these limitations of External Core, so they've had to be made "expected failures" when compiling in the extcore or optextcore ways.
a27b1e51