This is an archive of the discontinued LLVM Phabricator instance.

[WinEH] Fix single-block cleanup coloring
ClosedPublic

Authored by JosephTremoulet on Sep 9 2015, 8:16 PM.

Details

Summary

The coloring code in WinEHPrepare queues cleanuprets' successors with the
correct color (the parent one) when it sees their cleanuppad, and so later
when iterating successors knows to skip processing cleanuprets since
they've already been queued. This latter check was incorrectly under an
'else' condition and so inadvertently was not kicking in for single-block
cleanups. This change sinks the check out of the 'else' to fix the bug.

Diff Detail

Event Timeline

JosephTremoulet retitled this revision from to [WinEH] Fix single-block cleanup coloring.
JosephTremoulet updated this object.
JosephTremoulet added a subscriber: llvm-commits.

Fix typo in comment

rnk accepted this revision.Sep 10 2015, 9:29 AM
rnk edited edge metadata.

lgtm, thanks!

test/CodeGen/WinEH/wineh-cloning.ll
406

I always like to check for define void @test10 to avoid matching against some other call that might get added later.

This revision is now accepted and ready to land.Sep 10 2015, 9:29 AM
JosephTremoulet edited edge metadata.
  • tighten 'CHECK-LABEL's