; RUN: opt < %s -indvars -disable-output
; PR1487

	%struct.AVClass = type { i8*, i8* (i8*)*, %struct.AVOption* }
	%struct.AVCodec = type { i8*, i32, i32, i32, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32, i8*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32*, i8*, i32)*, i32, %struct.AVCodec*, void (%struct.AVCodecContext*)*, %struct.AVCodecTag*, i32* }
	%struct.AVCodecContext = type { %struct.AVClass*, i32, i32, i32, i32, i32, i8*, i32, %struct.AVCodecTag, i32, i32, i32, i32, i32, void (%struct.AVCodecContext*, %struct.AVFrame*, i32*, i32, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, float, i32, i32, i32, %struct.AVCodec*, i8*, i32, i32, void (%struct.AVCodecContext*, i8*, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, [32 x i8], i32, i32, i32, i32, i32, i32, i32, float, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, void (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i8*, i8*, float, float, i32, %struct.RcOverride*, i32, i8*, i32, i32, i32, float, float, float, float, i32, float, float, float, float, float, i32, i32, i32, i32*, i32, i32, i32, i32, %struct.AVCodecTag, %struct.AVFrame*, i32, i32, [4 x i64], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32*)*, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i16*, i16*, i32, i32, i32, i32, %struct.AVPaletteControl*, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*)*, i8**, i32*, i32)*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 }
	%struct.AVCodecTag = type { i32, i32 }
	%struct.AVFrame = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*] }
	%struct.AVOption = type { i8*, i8*, i32, i32, double, double, double, i32, i8* }
	%struct.AVPaletteControl = type { i32, [256 x i32] }
	%struct.AVPanScan = type { i32, i32, i32, [3 x [2 x i16]] }
	%struct.RcOverride = type { i32, i32, i32, float }

define i32 @smc_decode_frame(%struct.AVCodecContext* %avctx, i8* %data, i32* %data_size, i8* %buf, i32 %buf_size) {
entry:
	br i1 false, label %cond_next, label %cond_true

cond_true:		; preds = %entry
	ret i32 -1

cond_next:		; preds = %entry
	br i1 false, label %bb.outer5.split.split.split.us, label %cond_true194.split

bb.outer5.split.split.split.us:		; preds = %cond_next
	br i1 false, label %cond_next188.us503.us, label %bb.us481

bb275.us493.us:		; preds = %cond_next188.us503.us, %cond_next188.us503.us
	ret i32 0

cond_next188.us503.us:		; preds = %bb.outer5.split.split.split.us
	switch i32 0, label %bb1401 [
		 i32 0, label %cond_next202.bb215_crit_edge.split
		 i32 16, label %bb215
		 i32 32, label %bb275.us493.us
		 i32 48, label %bb275.us493.us
		 i32 64, label %cond_next202.bb417_crit_edge.split
		 i32 80, label %bb417
		 i32 96, label %cond_next202.bb615_crit_edge.split
		 i32 112, label %bb615
		 i32 128, label %cond_next202.bb716_crit_edge.split
		 i32 144, label %bb716
		 i32 160, label %cond_next202.bb882_crit_edge.split
		 i32 176, label %bb882
		 i32 192, label %cond_next202.bb1062_crit_edge.split
		 i32 208, label %bb1062
		 i32 224, label %bb1326.us.outer.outer
	]

bb.us481:		; preds = %bb.outer5.split.split.split.us
	ret i32 0

cond_true194.split:		; preds = %cond_next
	ret i32 %buf_size

cond_next202.bb1062_crit_edge.split:		; preds = %cond_next188.us503.us
	ret i32 0

cond_next202.bb882_crit_edge.split:		; preds = %cond_next188.us503.us
	ret i32 0

cond_next202.bb716_crit_edge.split:		; preds = %cond_next188.us503.us
	ret i32 0

cond_next202.bb615_crit_edge.split:		; preds = %cond_next188.us503.us
	ret i32 0

cond_next202.bb417_crit_edge.split:		; preds = %cond_next188.us503.us
	ret i32 0

cond_next202.bb215_crit_edge.split:		; preds = %cond_next188.us503.us
	ret i32 0

bb215:		; preds = %cond_next188.us503.us
	ret i32 0

bb417:		; preds = %cond_next188.us503.us
	ret i32 0

bb615:		; preds = %cond_next188.us503.us
	ret i32 0

bb716:		; preds = %cond_next188.us503.us
	ret i32 0

bb882:		; preds = %cond_next188.us503.us
	ret i32 0

bb1062:		; preds = %cond_next188.us503.us
	ret i32 0

bb1326.us:		; preds = %bb1326.us.outer.outer, %bb1347.loopexit.us, %bb1326.us
	%pixel_y.162036.us.ph = phi i32 [ %tmp1352.us, %bb1347.loopexit.us ], [ 0, %bb1326.us.outer.outer ], [ %pixel_y.162036.us.ph, %bb1326.us ]		; <i32> [#uses=2]
	%stream_ptr.142038.us.ph = phi i32 [ %tmp1339.us, %bb1347.loopexit.us ], [ %stream_ptr.142038.us.ph.ph, %bb1326.us.outer.outer ], [ %stream_ptr.142038.us.ph, %bb1326.us ]		; <i32> [#uses=2]
	%pixel_x.232031.us = phi i32 [ %tmp1341.us, %bb1326.us ], [ 0, %bb1326.us.outer.outer ], [ 0, %bb1347.loopexit.us ]		; <i32> [#uses=3]
	%block_ptr.222030.us = add i32 0, %pixel_x.232031.us		; <i32> [#uses=1]
	%stream_ptr.132032.us = add i32 %pixel_x.232031.us, %stream_ptr.142038.us.ph		; <i32> [#uses=1]
	%tmp1341.us = add i32 %pixel_x.232031.us, 1		; <i32> [#uses=2]
	%tmp1344.us = icmp slt i32 %tmp1341.us, 4		; <i1> [#uses=1]
	br i1 %tmp1344.us, label %bb1326.us, label %bb1347.loopexit.us

bb1347.loopexit.us:		; preds = %bb1326.us
	%tmp1339.us = add i32 %stream_ptr.132032.us, 1		; <i32> [#uses=2]
	%tmp1337.us = add i32 %block_ptr.222030.us, 1		; <i32> [#uses=0]
	%tmp1352.us = add i32 %pixel_y.162036.us.ph, 1		; <i32> [#uses=2]
	%tmp1355.us = icmp slt i32 %tmp1352.us, 4		; <i1> [#uses=1]
	br i1 %tmp1355.us, label %bb1326.us, label %bb1358

bb1358:		; preds = %bb1347.loopexit.us
	br label %bb1326.us.outer.outer

bb1326.us.outer.outer:		; preds = %bb1358, %cond_next188.us503.us
	%stream_ptr.142038.us.ph.ph = phi i32 [ %tmp1339.us, %bb1358 ], [ 0, %cond_next188.us503.us ]		; <i32> [#uses=1]
	br label %bb1326.us

bb1401:		; preds = %cond_next188.us503.us
	ret i32 0
}
