|  | ; 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-wasm" | 
|  |  | 
|  | ; 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 | 
|  | } | 
|  |  |