; RUN: opt -licm %s -disable-output

target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-darwin10.0.0"


; PR8068
@g_12 = external global i8, align 1
define void @test1() nounwind ssp {
entry:
  br label %for.body

for.body:                                         ; preds = %for.cond, %bb.nph
  store i8 0, i8* @g_12, align 1
  %tmp6 = load i8* @g_12, align 1
  br label %for.cond

for.cond:                                         ; preds = %for.body
  store i8 %tmp6, i8* @g_12, align 1
  br i1 false, label %for.cond.for.end10_crit_edge, label %for.body

for.cond.for.end10_crit_edge:                     ; preds = %for.cond
  br label %for.end10

for.end10:                                        ; preds = %for.cond.for.end10_crit_edge, %entry
  ret void
}

; PR8067
@g_8 = external global i32, align 4

define void @test2() noreturn nounwind ssp {
entry:
  br label %for.body

for.body:                                         ; preds = %for.body, %entry
  %tmp7 = load i32* @g_8, align 4
  store i32* @g_8, i32** undef, align 16
  store i32 undef, i32* @g_8, align 4
  br label %for.body
}

; PR8102
define void @test3() {
entry:
  %__first = alloca { i32* }
  br i1 undef, label %for.cond, label %for.end

for.cond:                                         ; preds = %for.cond, %entry
  %tmp1 = getelementptr { i32*}* %__first, i32 0, i32 0
  %tmp2 = load i32** %tmp1, align 4
  %call = tail call i32* @test3helper(i32* %tmp2)
  %tmp3 = getelementptr { i32*}* %__first, i32 0, i32 0
  store i32* %call, i32** %tmp3, align 4
  br i1 false, label %for.cond, label %for.end

for.end:                                          ; preds = %for.cond, %entry
  ret void
}

declare i32* @test3helper(i32*)


; PR8602
@g_47 = external global i32, align 4

define void @test4() noreturn nounwind {
  br label %1

; <label>:1                                       ; preds = %1, %0
  volatile store i32* @g_47, i32** undef, align 8
  store i32 undef, i32* @g_47, align 4
  br label %1
}
