Allow multiple entry points when allocating recursive groups (#9303)
authorSimon Marlow <marlowsd@gmail.com>
Tue, 22 Jul 2014 11:04:32 +0000 (12:04 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Thu, 31 Jul 2014 07:55:26 +0000 (08:55 +0100)
commitda70f9ef49a545707dc32db9662441b9c8845fba
tree78947d1a574b1d5d980c120a29cf9e7fc1bf8962
parent1837b2f38ec3442dcc4e7fd4bc67207fc2064e65
Allow multiple entry points when allocating recursive groups (#9303)

Summary:
In this example we ended up with some code that was only reachable via
an info table, because a branch had been optimised away by the native
code generator.  The register allocator then got confused because it
was only considering the first block of the proc to be an entry point,
when actually any of the info tables are entry points.

Test Plan: validate

Reviewers: simonpj, austin

Subscribers: simonmar, relrod, carter

Differential Revision: https://phabricator.haskell.org/D88
compiler/nativeGen/RegAlloc/Linear/Main.hs
compiler/nativeGen/RegAlloc/Liveness.hs
testsuite/tests/codeGen/should_compile/T9303.hs [new file with mode: 0644]
testsuite/tests/codeGen/should_compile/all.T