; RUN: llc < %s -march=x86
	%struct.function = type opaque
	%struct.lang_decl = type opaque
	%struct.location_t = type { i8*, i32 }
	%struct.rtx_def = type opaque
	%struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %union.tree_ann_d*, i8, i8, i8, i8, i8 }
	%struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, %struct.tree_node*, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, i32, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_decl* }
	%struct.tree_decl_u1 = type { i64 }
	%struct.tree_decl_u2 = type { %struct.function* }
	%struct.tree_node = type { %struct.tree_decl }
	%union.tree_ann_d = type opaque

define void @check_format_arg() {
	br i1 false, label %cond_next196, label %bb12.preheader

bb12.preheader:		; preds = %0
	ret void

cond_next196:		; preds = %0
	br i1 false, label %cond_next330, label %cond_true304

cond_true304:		; preds = %cond_next196
	ret void

cond_next330:		; preds = %cond_next196
	br i1 false, label %cond_next472, label %bb441

bb441:		; preds = %cond_next330
	ret void

cond_next472:		; preds = %cond_next330
	%tmp490 = load %struct.tree_node** null		; <%struct.tree_node*> [#uses=1]
	%tmp492 = getelementptr %struct.tree_node* %tmp490, i32 0, i32 0, i32 0, i32 3		; <i8*> [#uses=1]
	%tmp492.upgrd.1 = bitcast i8* %tmp492 to i32*		; <i32*> [#uses=1]
	%tmp493 = load i32* %tmp492.upgrd.1		; <i32> [#uses=1]
	%tmp495 = trunc i32 %tmp493 to i8		; <i8> [#uses=1]
	%tmp496 = icmp eq i8 %tmp495, 11		; <i1> [#uses=1]
	%tmp496.upgrd.2 = zext i1 %tmp496 to i8		; <i8> [#uses=1]
	store i8 %tmp496.upgrd.2, i8* null
	ret void
}
