; RUN: llc < %s 
; PR1228

	"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" = type { i8* }
	"struct.std::locale" = type { "struct.std::locale::_Impl"* }
	"struct.std::locale::_Impl" = type { i32, "struct.std::locale::facet"**, i32, "struct.std::locale::facet"**, i8** }
	"struct.std::locale::facet" = type { i32 (...)**, i32 }
	"struct.std::string" = type { "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" }

define void @_ZNKSt6locale4nameEv("struct.std::string"* %agg.result) {
entry:
	%tmp105 = icmp eq i8* null, null		; <i1> [#uses=1]
	br i1 %tmp105, label %cond_true, label %cond_true222

cond_true:		; preds = %entry
	invoke void @_ZNSs14_M_replace_auxEjjjc( )
			to label %cond_next1328 unwind label %cond_true1402

cond_true222:		; preds = %cond_true222, %entry
	%tmp207 = call i32 @strcmp( )		; <i32> [#uses=1]
	%tmp208 = icmp eq i32 %tmp207, 0		; <i1> [#uses=2]
	%bothcond1480 = and i1 %tmp208, false		; <i1> [#uses=1]
	br i1 %bothcond1480, label %cond_true222, label %cond_next226.loopexit

cond_next226.loopexit:		; preds = %cond_true222
	%phitmp = xor i1 %tmp208, true		; <i1> [#uses=1]
	br i1 %phitmp, label %cond_false280, label %cond_true235

cond_true235:		; preds = %cond_next226.loopexit
	invoke void @_ZNSs6assignEPKcj( )
			to label %cond_next1328 unwind label %cond_true1402

cond_false280:		; preds = %cond_next226.loopexit
	invoke void @_ZNSs7reserveEj( )
			to label %invcont282 unwind label %cond_true1402

invcont282:		; preds = %cond_false280
	invoke void @_ZNSs6appendEPKcj( )
			to label %invcont317 unwind label %cond_true1402

invcont317:		; preds = %invcont282
	ret void

cond_next1328:		; preds = %cond_true235, %cond_true
	ret void

cond_true1402:		; preds = %invcont282, %cond_false280, %cond_true235, %cond_true
	ret void
}

declare void @_ZNSs14_M_replace_auxEjjjc()

declare i32 @strcmp()

declare void @_ZNSs6assignEPKcj()

declare void @_ZNSs7reserveEj()

declare void @_ZNSs6appendEPKcj()
