Home | History | Annotate | Download | only in WebAssembly
      1 ; RUN: llc -o - %s -asm-verbose=false | FileCheck %s
      2 target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
      3 target triple = "wasm32-unknown-unknown"
      4 
      5 ; Test that stackified IMPLICIT_DEF instructions are converted into
      6 ; CONST_I32 to provide an explicit push.
      7 
      8 ; CHECK:      br_if 2,
      9 ; CHECK:      i32.const $push[[L0:[0-9]+]]=, 0{{$}}
     10 ; CHECK-NEXT: return $pop[[L0]]{{$}}
     11 define i1 @f() {
     12   %a = xor i1 0, 0
     13   switch i1 %a, label %C [
     14     i1 0, label %A
     15     i1 1, label %B
     16   ]
     17 
     18 A:
     19   %b = xor i1 0, 0
     20   br label %X
     21 
     22 B:
     23   %c = xor i1 0, 0
     24   br i1 %c, label %D, label %X
     25 
     26 C:
     27   %d = icmp slt i32 0, 0
     28   br i1 %d, label %G, label %F
     29 
     30 D:
     31   %e = xor i1 0, 0
     32   br i1 %e, label %E, label %X
     33 
     34 E:
     35   %f = xor i1 0, 0
     36   br label %X
     37 
     38 F:
     39   %g = xor i1 0, 0
     40   br label %G
     41 
     42 G:
     43   %h = phi i1 [ undef, %C ], [ false, %F ]
     44   br label %X
     45 
     46 X:
     47   %i = phi i1 [ true, %A ], [ true, %B ], [ true, %D ], [ true, %E ], [ %h, %G ]
     48   ret i1 %i
     49 }
     50 
     51