[PATCH] D52837: [WebAssembly] Ignore DBG_VALUE in WebAssemblyCFGStacify pass when looking for block start

Heejin Ahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 3 15:48:15 PDT 2018


aheejin added a comment.

In https://reviews.llvm.org/D52837#1254381, @sbc100 wrote:

> Is there any way to we can make this test case more focused?
>
> How does the output of the test differ without this fix?


In MIR tests,

before (wrong):

  %18:i32 = I32_WRAP_I64 ...  ; defines %18
  DBG_VALUE ...
  BLOCK
  BR_UNLESS ... %18 ...      ; uses %18

after (right):

  BLOCK
  %18:i32 = I32_WRAP_I64 ...  ; defines %18
  DBG_VALUE ...
  BR_UNLESS ... %18 ...      ; uses %18

So `I32_WRAP_I64` is a child of `BR_UNLESS` in the stackified form, but the loop stops at `DBG_VALUE` without checking `I32_WRAP_I64` and places `BLOCK` in the middle of the stackified instruction sequence.

I think the way we can make this test case clearer or more focused is do an MIR test, which would show the instruction sequence containing `DBG_VALUE`, which disappears in .s file, as I suggested above.


Repository:
  rL LLVM

https://reviews.llvm.org/D52837





More information about the llvm-commits mailing list