; RUN: llc -o - %s | FileCheck %s
; Make sure RegAllocGreedy/SplitKit do not produce invalid liveness information
; and crash when splitting a liverange twice and rematerializing each time.
; (Sorry for the testcase; this was ran through bugpoint and then  manually
;  reduced for several hours but is still big...)
target triple = "thumbv7-apple-ios"

%struct.ham = type { %struct.wombat.0 }
%struct.wombat.0 = type { %struct.barney }
%struct.barney = type { %struct.snork.1 }
%struct.snork.1 = type { %struct.wobble.2 }
%struct.wobble.2 = type { %struct.blam }
%struct.blam = type { i32, i32, ptr }
%struct.ham.3 = type { %struct.pluto }
%struct.pluto = type { ptr, %struct.snork.5, %struct.wibble }
%struct.zot = type { ptr }
%struct.blam.4 = type <{ %struct.zot, ptr, ptr, i8, [3 x i8] }>
%struct.snork.5 = type { %struct.quux }
%struct.quux = type { %struct.zot }
%struct.wibble = type { %struct.widget }
%struct.widget = type { i32 }
%struct.bar = type { %struct.spam }
%struct.spam = type { ptr, %struct.wobble, %struct.zot.7 }
%struct.wobble = type { %struct.wibble.6 }
%struct.wibble.6 = type { %struct.zot }
%struct.zot.7 = type { %struct.ham.8 }
%struct.ham.8 = type { i32 }
%struct.hoge = type { %struct.ham, %struct.foo }
%struct.foo = type { float, float }
%struct.wombat = type { %struct.ham, float }
%struct.snork = type { %struct.ham.9, [11 x i8] }
%struct.ham.9 = type { i8 }

@global = external global i8
@global.1 = private constant [20 x i8] c"aaaaaaaaaaaaaaaaaa0\00"
@global.2 = external constant [27 x i8]
@global.3 = external global %struct.ham
@global.4 = external constant [47 x i8]
@global.5 = external constant [61 x i8]
@global.6 = external constant [40 x i8]
@global.7 = external constant [24 x i8]
@global.8 = external constant [20 x i8]
@global.9 = external global %struct.ham
@global.10 = external global %struct.ham
@global.11 = external global %struct.ham
@global.12 = external global %struct.ham
@global.13 = external global %struct.ham
@global.14 = external global %struct.ham
@global.15 = external global %struct.ham
@global.16 = external global %struct.ham
@global.17 = external global %struct.ham
@global.18 = external constant [35 x i8]
@global.19 = external global %struct.ham
@global.20 = external constant [53 x i8]
@global.21 = external global %struct.ham
@global.22 = external global %struct.ham
@global.23 = external global %struct.ham
@global.24 = external constant [32 x i8]
@global.25 = external global %struct.ham
@global.26 = external constant [47 x i8]
@global.27 = external global %struct.ham
@global.28 = external constant [45 x i8]
@global.29 = external global %struct.ham
@global.30 = external global %struct.ham
@global.31 = external constant [24 x i8]
@global.32 = external global %struct.ham
@global.33 = external global %struct.ham
@global.34 = external global %struct.ham
@global.35 = external global %struct.ham
@global.36 = external constant [27 x i8]
@global.37 = external global %struct.ham
@global.38 = external constant [10 x i8]
@global.39 = external global %struct.ham
@global.40 = external global %struct.ham
@global.41 = external global %struct.ham
@global.42 = external global %struct.ham
@global.43 = external global %struct.ham
@global.44 = external constant [41 x i8]
@global.45 = external global %struct.ham
@global.46 = external global %struct.ham
@global.47 = external global %struct.ham
@global.48 = external global %struct.ham
@global.49 = external constant [52 x i8]
@global.50 = external constant [47 x i8]
@global.51 = external global %struct.ham
@global.52 = external global %struct.ham
@global.53 = external global %struct.ham
@global.54 = external global %struct.ham
@global.55 = external global %struct.ham.3
@global.56 = external global %struct.bar
@global.57 = external global i8

declare ptr @bar(ptr returned)

declare i32 @__cxa_atexit(ptr, ptr, ptr)

declare ptr @wobble(ptr returned, ptr )

declare i32 @quux(...)

declare ptr @_Znwm(i32)

declare i32 @wobble.58(ptr, [1 x i32], ptr , ptr )

declare i32 @widget(ptr, [1 x i32], ptr , ptr )

; Just check we didn't crash and did output something...
; CHECK-LABEL: func:
; CHECK: trap
define internal void @func() section "__TEXT,__StaticInit,regular,pure_instructions" personality ptr @quux {
  %tmp = tail call i32 @__cxa_atexit(ptr @bar, ptr @global.3, ptr @global) #0
  %tmp2 = invoke ptr @wobble(ptr undef, ptr  @global.9)
          to label %bb14 unwind label %bbunwind

bb14:
  %tmp15 = getelementptr  i8, ptr undef, i32 12
  store i8 0, ptr %tmp15
  %tmp16 = icmp eq i8 undef, 0
  br i1 %tmp16, label %bb28, label %bb18

bb18:
  br i1 undef, label %bb21, label %bb29

bb21:
  %tmp22 = call ptr @_Znwm(i32 16)
  store i32 17, ptr @global.10
  %tmp23 = call ptr @_Znwm(i32 32)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.2, i32 26, i1 false)
  store i32 33, ptr @global.11
  store i32 23, ptr getelementptr  (%struct.ham, ptr @global.11, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.7, i32 23, i1 false)
  %tmp24 = call i32 @__cxa_atexit(ptr @bar, ptr @global.11, ptr @global) #0
  store i32 49, ptr @global.12
  store i32 37, ptr getelementptr  (%struct.ham, ptr @global.13, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  call void @llvm.memset.p0.i32(ptr align 4 @global.14, i8 0, i32 12, i1 false)
  %tmp25 = call ptr @_Znwm(i32 48)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 %tmp25, ptr align 1 @global.6, i32 39, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.4, i32 46, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.5, i32 60, i1 false)
  %tmp26 = call ptr @_Znwm(i32 48)
  store i32 65, ptr @global.15
  %tmp27 = icmp eq i8 undef, 0
  br i1 %tmp27, label %bb30, label %bb33

bb28:
  call void @llvm.trap()
  unreachable

bb29:
  call void @llvm.trap()
  unreachable

bb30:
  %tmp31 = icmp eq i32 undef, 37
  br i1 %tmp31, label %bb32, label %bb30

bb32:
  store i8 1, ptr @global.57
  br label %bb33

bb33:
  %tmp34 = call ptr @_Znwm(i32 32)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.1, i32 19, i1 false)
  store i32 17, ptr @global.16
  store i32 65, ptr @global.17
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.18, i32 34, i1 false)
  store i32 65, ptr @global.19
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.20, i32 52, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.8, i32 19, i1 false)
  store i32 37, ptr getelementptr  (%struct.ham, ptr @global.21, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  %tmp35 = call ptr @_Znwm(i32 32)
  store i8 16, ptr @global.22
  %tmp36 = call ptr @_Znwm(i32 32)
  store i32 31, ptr getelementptr  (%struct.ham, ptr @global.23, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 %tmp36, ptr align 1 @global.24, i32 31, i1 false)
  %tmp37 = getelementptr  i8, ptr %tmp36, i32 31
  store i8 0, ptr %tmp37
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.26, i32 46, i1 false)
  %tmp38 = call i32 @__cxa_atexit(ptr @bar, ptr @global.25, ptr @global) #0
  %tmp39 = call ptr @_Znwm(i32 48)
  store i32 44, ptr getelementptr  (%struct.ham, ptr @global.27, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 %tmp39, ptr align 1 @global.28, i32 44, i1 false)
  %tmp40 = getelementptr  i8, ptr %tmp39, i32 44
  store i8 0, ptr %tmp40
  call void @llvm.memset.p0.i32(ptr align 4 @global.29, i8 0, i32 12, i1 false)
  %tmp41 = call ptr @_Znwm(i32 32)
  store i32 23, ptr getelementptr  (%struct.ham, ptr @global.30, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 %tmp41, ptr align 1 @global.31, i32 23, i1 false)
  %tmp42 = getelementptr  i8, ptr %tmp41, i32 23
  store i8 0, ptr %tmp42
  call void @llvm.memset.p0.i32(ptr align 4 @global.32, i8 0, i32 12, i1 false)
  store i8 16, ptr @global.32
  %tmp43 = call i32 @__cxa_atexit(ptr @bar, ptr @global.33, ptr @global) #0
  %tmp44 = call ptr @_Znwm(i32 16)
  call void @llvm.memset.p0.i32(ptr align 4 @global.34, i8 0, i32 12, i1 false)
  call void @llvm.memset.p0.i32(ptr align 4 @global.9, i8 0, i32 12, i1 false)
  %tmp45 = call ptr @_Znwm(i32 32)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 %tmp45, ptr align 1 @global.36, i32 26, i1 false)
  call void @llvm.memset.p0.i32(ptr align 4 @global.37, i8 0, i32 12, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 getelementptr (%struct.snork, ptr @global.37, i32 0, i32 1, i32 0), ptr align 1 @global.38, i32 9, i1 false)
  store i32 17, ptr @global.39
  %tmp46 = call i32 @__cxa_atexit(ptr @bar, ptr @global.40, ptr @global) #0
  %tmp47 = call ptr @_Znwm(i32 32)
  %tmp48 = getelementptr  i8, ptr %tmp47, i32 21
  store i8 0, ptr %tmp48
  store i32 33, ptr @global.41
  store i32 15, ptr getelementptr  (%struct.ham, ptr @global.42, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  %tmp49 = call i32 @__cxa_atexit(ptr @bar, ptr @global.43, ptr @global) #0
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.44, i32 40, i1 false)
  %tmp50 = call i32 @__cxa_atexit(ptr @bar, ptr @global.45, ptr @global) #0
  %tmp51 = call i32 @__cxa_atexit(ptr @bar, ptr @global.46, ptr @global) #0
  %tmp52 = call ptr @_Znwm(i32 32)
  store ptr %tmp52, ptr getelementptr  (%struct.ham, ptr @global.47, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2)
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.49, i32 51, i1 false)
  %tmp53 = call i32 @__cxa_atexit(ptr @bar, ptr @global.48, ptr @global) #0
  call void @llvm.memcpy.p0.p0.i32(ptr align 1 undef, ptr align 1 @global.50, i32 46, i1 false)
  store i32 33, ptr @global.51
  store i32 37, ptr getelementptr  (%struct.ham, ptr @global.52, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1)
  %tmp54 = invoke ptr @wobble(ptr undef, ptr  @global.54)
          to label %bb58 unwind label %bbunwind

bb58:
  %tmp59 = invoke i32 @wobble.58(ptr @global.55, [1 x i32] [i32 ptrtoint (ptr getelementptr  (%struct.ham.3, ptr @global.55, i32 0, i32 0, i32 1, i32 0, i32 0) to i32)], ptr  undef, ptr  undef)
          to label %bb71 unwind label %bbunwind

bb71:
  %tmp72 = invoke i32 @widget(ptr @global.56, [1 x i32] [i32 ptrtoint (ptr getelementptr  (%struct.bar, ptr @global.56, i32 0, i32 0, i32 1, i32 0, i32 0) to i32)], ptr  undef, ptr  undef)
          to label %bb73 unwind label %bbunwind

bb73:
  ret void

bbunwind:
  %tmp75 = landingpad { ptr, i32 }
          cleanup
  resume { ptr, i32 } undef
}

; CHECK-LABEL: func_reduced_remat_regclass_error:
define void @func_reduced_remat_regclass_error(ptr %global.10, ptr %global.15) {
bb14:
  store i32 999, ptr %global.10, align 4
  call void @llvm.memset.p0.i32(ptr null, i8 0, i32 12, i1 false)
  call void @llvm.memcpy.p0.p0.i32(ptr null, ptr null, i32 60, i1 false)
  %tmp34 = call ptr @_Znwm()
  store i32 999, ptr %global.15, align 4
  call void @llvm.memcpy.p0.p0.i32(ptr %global.10, ptr null, i32 52, i1 false)
  call void @llvm.memset.p0.i32(ptr null, i8 0, i32 12, i1 false)
  call void @llvm.memset.p0.i32(ptr null, i8 0, i32 12, i1 false)
  ret void
}

declare void @llvm.trap()

declare void @llvm.memcpy.p0.p0.i32(ptr , ptr , i32, i1)

declare void @llvm.memset.p0.i32(ptr , i8, i32, i1)

attributes #0 = { nounwind }
