; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=i686-apple-darwin -mattr=+sse2 -no-x86-call-frame-opt | FileCheck %s

	%struct.quad_struct = type { i32, i32, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct*, %struct.quad_struct* }

define  i32 @perimeter(%struct.quad_struct* %tree, i32 %size) nounwind  {
; CHECK-LABEL: perimeter:
; CHECK:       ## %bb.0: ## %entry
; CHECK-NEXT:    pushl %esi
; CHECK-NEXT:    subl $8, %esp
; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %eax
; CHECK-NEXT:    testl %eax, %eax
; CHECK-NEXT:    je LBB0_3
; CHECK-NEXT:  ## %bb.1: ## %entry
; CHECK-NEXT:    cmpl $2, %eax
; CHECK-NEXT:    jne LBB0_3
; CHECK-NEXT:  ## %bb.2: ## %bb
; CHECK-NEXT:    movl $0, {{[0-9]+}}(%esp)
; CHECK-NEXT:    movl $0, (%esp)
; CHECK-NEXT:    calll _perimeter
; CHECK-NEXT:    movl %eax, %esi
; CHECK-NEXT:    movl $0, {{[0-9]+}}(%esp)
; CHECK-NEXT:    movl $0, (%esp)
; CHECK-NEXT:    calll _perimeter
; CHECK-NEXT:    addl %esi, %eax
; CHECK-NEXT:    jmp LBB0_4
; CHECK-NEXT:  LBB0_3: ## %UnifiedReturnBlock
; CHECK-NEXT:    xorl %eax, %eax
; CHECK-NEXT:  LBB0_4: ## %UnifiedReturnBlock
; CHECK-NEXT:    addl $8, %esp
; CHECK-NEXT:    popl %esi
; CHECK-NEXT:    retl
entry:
	switch i32 %size, label %UnifiedReturnBlock [
		 i32 2, label %bb
		 i32 0, label %bb50
	]

bb:		; preds = %entry
	%tmp31 = tail call  i32 @perimeter( %struct.quad_struct* null, i32 0 ) nounwind 		; <i32> [#uses=1]
	%tmp40 = tail call  i32 @perimeter( %struct.quad_struct* null, i32 0 ) nounwind 		; <i32> [#uses=1]
	%tmp33 = add i32 0, %tmp31		; <i32> [#uses=1]
	%tmp42 = add i32 %tmp33, %tmp40		; <i32> [#uses=1]
	ret i32 %tmp42

bb50:		; preds = %entry
	ret i32 0

UnifiedReturnBlock:		; preds = %entry
	ret i32 0
}
