| ; RUN: llc -o - %s -asm-verbose=false | FileCheck %s | |
| target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" | |
| target triple = "wasm32-unknown-unknown" | |
| ; Test that stackified IMPLICIT_DEF instructions are converted into | |
| ; CONST_I32 to provide an explicit push. | |
| ; CHECK: br_if 2, | |
| ; CHECK: i32.const $push[[L0:[0-9]+]]=, 0{{$}} | |
| ; CHECK-NEXT: return $pop[[L0]]{{$}} | |
| define i1 @f() { | |
| %a = xor i1 0, 0 | |
| switch i1 %a, label %C [ | |
| i1 0, label %A | |
| i1 1, label %B | |
| ] | |
| A: | |
| %b = xor i1 0, 0 | |
| br label %X | |
| B: | |
| %c = xor i1 0, 0 | |
| br i1 %c, label %D, label %X | |
| C: | |
| %d = icmp slt i32 0, 0 | |
| br i1 %d, label %G, label %F | |
| D: | |
| %e = xor i1 0, 0 | |
| br i1 %e, label %E, label %X | |
| E: | |
| %f = xor i1 0, 0 | |
| br label %X | |
| F: | |
| %g = xor i1 0, 0 | |
| br label %G | |
| G: | |
| %h = phi i1 [ undef, %C ], [ false, %F ] | |
| br label %X | |
| X: | |
| %i = phi i1 [ true, %A ], [ true, %B ], [ true, %D ], [ true, %E ], [ %h, %G ] | |
| ret i1 %i | |
| } | |