AMDGPU: Fix a use-after free and a missing break
authorJustin Bogner <mail@justinbogner.com>
Fri, 25 Mar 2016 18:33:16 +0000 (18:33 +0000)
committerJustin Bogner <mail@justinbogner.com>
Fri, 25 Mar 2016 18:33:16 +0000 (18:33 +0000)
commitf2a0d349a68cd6e3f94c34743b4adf1f1ce6730b
tree2120a896745b7db0c87cf3cdb53ee129e0c5c5e8
parent20e24193f3403f007c35e85d8ce9d7f5793ea078
AMDGPU: Fix a use-after free and a missing break

We're erasing MI here, but then immediately using it again inside the
`if`. This moves the erase after we're done using it.

Doing that reveals a second problem though - this case is missing a
break, so we fall through to the default and dereference MI again.
This is obviously a bug, though I don't know how to write a test that
triggers it - all we do in the error case is print some extra debug
output.

Both of these issue crash on lots of tests under ASAN with the
recycling allocator changes from PR26808 applied.

llvm-svn: 264442
llvm/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp