; 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
  %lpad = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
            cleanup
  ret void
}

declare void @_ZNSs14_M_replace_auxEjjjc()

declare i32 @strcmp()

declare void @_ZNSs6assignEPKcj()

declare void @_ZNSs7reserveEj()

declare void @_ZNSs6appendEPKcj()

declare i32 @__gxx_personality_v0(...)
