; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -disable-block-placement -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" target triple = "wasm32-unknown-unknown" ; Test an interesting pattern of nested irreducibility. ; Just check we resolve all the irreducibility here (if not we'd crash). ; CHECK-LABEL: tre_parse: define void @tre_parse() { entry: br label %for.cond.outer for.cond.outer: ; preds = %do.body14, %entry br label %for.cond for.cond: ; preds = %for.cond.backedge, %for.cond.outer %nbranch.0 = phi i32* [ null, %for.cond.outer ], [ %call188, %for.cond.backedge ] switch i8 undef, label %if.else [ i8 40, label %do.body14 i8 41, label %if.then63 ] do.body14: ; preds = %for.cond br label %for.cond.outer if.then63: ; preds = %for.cond unreachable if.else: ; preds = %for.cond switch i8 undef, label %if.then84 [ i8 92, label %if.end101 i8 42, label %if.end101 ] if.then84: ; preds = %if.else switch i8 undef, label %cleanup.thread [ i8 43, label %if.end101 i8 63, label %if.end101 i8 123, label %if.end101 ] if.end101: ; preds = %if.then84, %if.then84, %if.then84, %if.else, %if.else unreachable cleanup.thread: ; preds = %if.then84 %call188 = tail call i32* undef(i32* %nbranch.0) switch i8 undef, label %for.cond.backedge [ i8 92, label %land.lhs.true208 i8 0, label %if.else252 ] land.lhs.true208: ; preds = %cleanup.thread unreachable for.cond.backedge: ; preds = %cleanup.thread br label %for.cond if.else252: ; preds = %cleanup.thread unreachable }