; RUN: opt -licm -verify-memoryssa  -S %s | FileCheck %s
; REQUIRES: asserts

target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
target triple = "s390x-ibm-linux"

@g_77 = external dso_local global i16, align 2

; CHECK-LABEL: @f1()
define void @f1() {
entry:
  store i16 undef, i16* @g_77, align 2
  br label %loop_pre

unreachablelabel: ; No predecessors
  br label %loop_pre

loop_pre:
  br label %for.cond.header

for.cond.header:
  store i32 0, i32* undef, align 4
  br i1 undef, label %for.body, label %for.end

for.body:
  %tmp1 = load volatile i16, i16* undef, align 2
  br label %for.end

for.end:
  br i1 undef, label %func.exit, label %for.cond.header

func.exit:
  ret void
}

@g_159 = external dso_local global i32, align 4

; CHECK-LABEL: @f2()
define void @f2() {
entry:
  br label %for.header.first

for.header.first:
  br label %for.body.first

for.body.first:
  store i32 0, i32* @g_159, align 4
  br i1 undef, label %for.body.first, label %for.end.first

for.end.first:
  br i1 undef, label %lor.end, label %for.header.first

lor.end:
  br label %for.pre

unreachablelabel: ; No predecessors
  br label %for.pre

for.pre:
  br label %for.header.second

for.header.second:
  store i32 undef, i32* undef, align 4
  br label %for.header.second
}

@g_271 = external dso_local global i8, align 2
@g_427 = external dso_local unnamed_addr global [9 x i16], align 2

; CHECK-LABEL: @f3()
define  void @f3() {
entry:
  br label %for.preheader

for.preheader:
  store volatile i8 undef, i8* @g_271, align 2
  br i1 undef, label %for.preheader, label %for.end

for.end:
  br label %lbl_1058.i

unreachablelabel: ; No predecessors
  br label %lbl_1058.i

lbl_1058.i:
  br label %for.cond3.preheader.i

for.cond3.preheader.i:
  %tmp1 = load i16, i16* getelementptr inbounds ([9 x i16], [9 x i16]* @g_427, i64 0, i64 2), align 2
  %conv620.i129 = zext i16 %tmp1 to i32
  %cmp621.i130 = icmp ugt i32 undef, %conv620.i129
  %conv622.i131 = zext i1 %cmp621.i130 to i32
  store i32 %conv622.i131, i32* undef, align 4
  br i1 undef, label %func.exit, label %for.cond3.preheader.i

func.exit:
  ret void
}

@g_6 = external dso_local unnamed_addr global [3 x i32], align 4
@g_244 = external dso_local global i64, align 8
@g_1164 = external dso_local global i64, align 8

; CHECK-LABEL: @f4()
define void @f4() {
entry:
  br label %for.cond8.preheader

for.cond8.preheader:
  store i32 0, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @g_6, i64 0, i64 2), align 4
  br i1 undef, label %if.end, label %for.cond8.preheader

if.end:
  br i1 undef, label %cleanup1270, label %for.cond504.preheader

for.cond504.preheader:
  store i64 undef, i64* @g_244, align 8
  br label %cleanup1270

for.cond559.preheader:
  store i64 undef, i64* @g_1164, align 8
  br i1 undef, label %for.cond559.preheader, label %cleanup1270

cleanup1270:
  ret void
}

@g_1504 = external dso_local local_unnamed_addr global i16****, align 8

define void @f5() {
bb:
  tail call fastcc void @f21()
  br label %bb12.outer

bb12.outer.loopexit:                              ; No predecessors!
  br label %bb12.outer

bb12.outer:                                       ; preds = %bb12.outer.loopexit, %bb
  br i1 undef, label %bb12.outer.split.us, label %bb12.preheader

bb12.preheader:                                   ; preds = %bb12.outer
  br label %bb12

bb12.outer.split.us:                              ; preds = %bb12.outer
  br label %bb16.us.us

bb16.us.us:                                       ; preds = %bb16.us.us, %bb12.outer.split.us
  br label %bb16.us.us

bb12:                                             ; preds = %bb77.1, %bb12.preheader
  br i1 undef, label %bb25.preheader, label %bb77

bb25.preheader:                                   ; preds = %bb12.1, %bb12
  br label %bb25

bb25:                                             ; preds = %l0, %bb25.preheader
  br i1 undef, label %bb62, label %bb71.thread

bb62:                                             ; preds = %bb25
  br i1 undef, label %bb92.loopexit, label %l0

l0:                                                ; preds = %bb62
  br label %bb25

bb71.thread:                                      ; preds = %bb25
  br label %bb92

bb77:                                             ; preds = %bb12
  %tmp78 = load i16****, i16***** @g_1504, align 8
  %tmp79 = load volatile i16***, i16**** %tmp78, align 8
  br i1 undef, label %bb91, label %bb12.1

bb91:                                             ; preds = %bb77.1, %bb77
  unreachable

bb92.loopexit:                                    ; preds = %bb62
  br label %bb92

bb92:                                             ; preds = %bb92.loopexit, %bb71.thread
  ret void

bb12.1:                                           ; preds = %bb77
  br i1 undef, label %bb25.preheader, label %bb77.1

bb77.1:                                           ; preds = %bb12.1
  br i1 undef, label %bb91, label %bb12
}

declare void @f21()
