; RUN: llc < %s -mtriple=powerpc-apple-darwin

	%struct.Handle = type { %struct.oopDesc** }
	%struct.JNI_ArgumentPusher = type { %struct.SignatureIterator, %struct.JavaCallArguments* }
	%struct.JNI_ArgumentPusherArray = type { %struct.JNI_ArgumentPusher, %struct.JvmtiEventEnabled* }
	%struct.JavaCallArguments = type { [9 x i32], [9 x i32], i32*, i32*, i32, i32, i32 }
	%struct.JvmtiEventEnabled = type { i64 }
	%struct.KlassHandle = type { %struct.Handle }
	%struct.SignatureIterator = type { i32 (...)**, %struct.KlassHandle, i32, i32, i32 }
	%struct.instanceOopDesc = type { %struct.oopDesc }
	%struct.oopDesc = type { %struct.instanceOopDesc*, %struct.instanceOopDesc* }
@.str = external constant [44 x i8]		; <[44 x i8]*> [#uses=1]

define void @_ZN23JNI_ArgumentPusherArray7iterateEy(%struct.JNI_ArgumentPusherArray* %this, i64 %fingerprint) nounwind  {
entry:
	br label %bb113

bb22.preheader:		; preds = %bb113
	ret void

bb32.preheader:		; preds = %bb113
	ret void

bb42.preheader:		; preds = %bb113
	ret void

bb52:		; preds = %bb113
	br label %bb113

bb62.preheader:		; preds = %bb113
	ret void

bb72.preheader:		; preds = %bb113
	ret void

bb82:		; preds = %bb113
	br label %bb113

bb93:		; preds = %bb113
	br label %bb113

bb103.preheader:		; preds = %bb113
	ret void

bb113:		; preds = %bb113, %bb93, %bb82, %bb52, %entry
	%fingerprint_addr.0.reg2mem.9 = phi i64 [ 0, %entry ], [ 0, %bb52 ], [ 0, %bb82 ], [ 0, %bb93 ], [ %tmp118, %bb113 ]		; <i64> [#uses=1]
	tail call void @_Z28report_should_not_reach_herePKci( i8* getelementptr ([44 x i8], [44 x i8]* @.str, i32 0, i32 0), i32 817 ) nounwind 
	%tmp118 = lshr i64 %fingerprint_addr.0.reg2mem.9, 4		; <i64> [#uses=2]
	%tmp21158 = and i64 %tmp118, 15		; <i64> [#uses=1]
	switch i64 %tmp21158, label %bb113 [
		 i64 1, label %bb22.preheader
		 i64 2, label %bb52
		 i64 3, label %bb32.preheader
		 i64 4, label %bb42.preheader
		 i64 5, label %bb62.preheader
		 i64 6, label %bb82
		 i64 7, label %bb93
		 i64 8, label %bb103.preheader
		 i64 9, label %bb72.preheader
		 i64 10, label %UnifiedReturnBlock
	]

UnifiedReturnBlock:		; preds = %bb113
	ret void
}

declare void @_Z28report_should_not_reach_herePKci(i8*, i32)
