[WebAssembly] Fix ScopeTops info in CFGStackify for EH pads
authorHeejin Ahn <aheejin@gmail.com>
Wed, 27 Feb 2019 01:35:14 +0000 (01:35 +0000)
committerHeejin Ahn <aheejin@gmail.com>
Wed, 27 Feb 2019 01:35:14 +0000 (01:35 +0000)
commit82da1ffc16c18fa440ac98bb4ed28953c77f796f
treeef78d2569aa45d3b7cceb1141eaf588a9fbf6939
parentded9f0efade11b4d3d95d0f93c92fde0e8ac3a4c
[WebAssembly] Fix ScopeTops info in CFGStackify for EH pads

Summary:
When creating `ScopeTops` info for `try` ~ `catch` ~ `end_try`, we
should create not only `end_try` -> `try` mapping but also `catch` ->
`try` mapping as well. If this is not created, `block` and `end_block`
markers later added may span across an existing `catch`, resulting in
the incorrect code like:
```
try
  block     --|  (X)
catch         |
  end_block --|
end_try
```

Reviewers: dschuff

Subscribers: sunfish, sbc100, jgravelle-google, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D58605

llvm-svn: 354945
llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp
llvm/test/CodeGen/WebAssembly/cfg-stackify-eh.ll