; RUN: opt %s -mergefunc -globalopt -S -o - | FileCheck %s

; Make sure we don't crash on this example. This test is supposed to test that
; MergeFunctions clears its GlobalNumbers value map. If this map still contains
; entries when running globalopt and the MergeFunctions instance is still alive
; the optimization of @G would cause an assert because globalopt would do an
; RAUW on @G which still exists as an entry in the GlobalNumbers ValueMap which
; causes an assert in the ValueHandle call back because we are RAUWing with a
; different type (AllocaInst) than its key type (GlobalValue).

@G = internal global i8** null
@G2 = internal global i8** null

define i32 @main(i32 %argc, i8** %argv) norecurse {
; CHECK: alloca
  store i8** %argv, i8*** @G
  ret i32 0
}

define internal i8** @dead1(i64 %p) {
  call void @right(i64 %p)
  call void @right(i64 %p)
  call void @right(i64 %p)
  call void @right(i64 %p)
  %tmp = load i8**, i8*** @G
  ret i8** %tmp
}

define internal i8** @dead2(i64 %p) {
  call void @right(i64 %p)
  call void @right(i64 %p)
  call void @right(i64 %p)
  call void @right(i64 %p)
  %tmp = load i8**, i8*** @G2
  ret i8** %tmp
}

define void @left(i64 %p) {
entry-block:
  call void @right(i64 %p)
  call void @right(i64 %p)
  call void @right(i64 %p)
  call void @right(i64 %p)
  ret void
}

define void @right(i64 %p) {
entry-block:
  call void @left(i64 %p)
  call void @left(i64 %p)
  call void @left(i64 %p)
  call void @left(i64 %p)
  ret void
}
