1f3a928e2SArthur Eubanks; RUN: opt < %s -passes='print<iv-users>' 232754aa3SSerguei Katkov; This is a regression test against very slow execution... 332754aa3SSerguei Katkov; In bad case it should fail by timeout. 432754aa3SSerguei Katkovtarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128-ni:1" 532754aa3SSerguei Katkovtarget triple = "x86_64-unknown-linux-gnu" 632754aa3SSerguei Katkov 7*1aee1e1fSNikita Popovdefine void @quux(ptr addrspace(1) %arg, ptr addrspace(1) %arg1) { 832754aa3SSerguei Katkovbb: 9*1aee1e1fSNikita Popov %tmp2 = getelementptr inbounds i8, ptr addrspace(1) %arg, i64 80 10*1aee1e1fSNikita Popov %tmp3 = bitcast ptr addrspace(1) %tmp2 to ptr addrspace(1) 11*1aee1e1fSNikita Popov %tmp4 = load ptr addrspace(1), ptr addrspace(1) %tmp3, align 8 12*1aee1e1fSNikita Popov %tmp5 = getelementptr inbounds i8, ptr addrspace(1) %tmp4, i64 8 13*1aee1e1fSNikita Popov %tmp6 = bitcast ptr addrspace(1) %tmp5 to ptr addrspace(1) 14*1aee1e1fSNikita Popov %tmp7 = load ptr addrspace(1), ptr addrspace(1) %tmp6, align 8 15*1aee1e1fSNikita Popov %tmp8 = getelementptr inbounds i8, ptr addrspace(1) %tmp7, i64 8 16*1aee1e1fSNikita Popov %tmp9 = bitcast ptr addrspace(1) %tmp8 to ptr addrspace(1) 17*1aee1e1fSNikita Popov %tmp10 = load i32, ptr addrspace(1) %tmp9, align 8 1832754aa3SSerguei Katkov %tmp11 = udiv i32 65, %tmp10 19*1aee1e1fSNikita Popov %tmp12 = getelementptr inbounds i8, ptr addrspace(1) %arg, i64 80 20*1aee1e1fSNikita Popov %tmp13 = bitcast ptr addrspace(1) %tmp12 to ptr addrspace(1) 21*1aee1e1fSNikita Popov %tmp14 = load ptr addrspace(1), ptr addrspace(1) %tmp13, align 8 22*1aee1e1fSNikita Popov %tmp15 = getelementptr inbounds i8, ptr addrspace(1) %tmp14, i64 8 23*1aee1e1fSNikita Popov %tmp16 = bitcast ptr addrspace(1) %tmp15 to ptr addrspace(1) 24*1aee1e1fSNikita Popov %tmp17 = load ptr addrspace(1), ptr addrspace(1) %tmp16, align 8 25*1aee1e1fSNikita Popov %tmp18 = getelementptr inbounds i8, ptr addrspace(1) %arg1, i64 8 26*1aee1e1fSNikita Popov %tmp19 = bitcast ptr addrspace(1) %tmp18 to ptr addrspace(1) 27*1aee1e1fSNikita Popov %tmp20 = load i32, ptr addrspace(1) %tmp19, align 8, !range !0 28*1aee1e1fSNikita Popov %tmp21 = getelementptr inbounds i8, ptr addrspace(1) %tmp17, i64 8 29*1aee1e1fSNikita Popov %tmp22 = bitcast ptr addrspace(1) %tmp21 to ptr addrspace(1) 30*1aee1e1fSNikita Popov %tmp23 = load i32, ptr addrspace(1) %tmp22, align 8, !range !0 3132754aa3SSerguei Katkov %tmp24 = zext i32 %tmp23 to i64 3232754aa3SSerguei Katkov %tmp25 = and i32 %tmp11, 7 3332754aa3SSerguei Katkov %tmp26 = icmp ugt i32 %tmp10, 9 3432754aa3SSerguei Katkov br i1 %tmp26, label %bb27, label %bb46 3532754aa3SSerguei Katkov 3632754aa3SSerguei Katkovbb27: ; preds = %bb117, %bb 3732754aa3SSerguei Katkov %tmp28 = phi i32 [ 8, %bb ], [ %tmp112, %bb117 ] 3832754aa3SSerguei Katkov br label %bb29 3932754aa3SSerguei Katkov 4032754aa3SSerguei Katkovbb29: ; preds = %bb40, %bb27 4132754aa3SSerguei Katkov %tmp30 = phi i32 [ %tmp43, %bb40 ], [ %tmp28, %bb27 ] 4232754aa3SSerguei Katkov %tmp31 = phi i32 [ %tmp41, %bb40 ], [ %tmp25, %bb27 ] 4332754aa3SSerguei Katkov br label %bb32 4432754aa3SSerguei Katkov 4532754aa3SSerguei Katkovbb32: ; preds = %bb37, %bb29 4632754aa3SSerguei Katkov %tmp33 = phi i64 [ 0, %bb29 ], [ %tmp38, %bb37 ] 4732754aa3SSerguei Katkov %tmp34 = trunc i64 %tmp33 to i32 4832754aa3SSerguei Katkov %tmp35 = add i32 %tmp30, %tmp34 4932754aa3SSerguei Katkov %tmp36 = icmp ult i32 %tmp35, %tmp20 5032754aa3SSerguei Katkov br i1 %tmp36, label %bb37, label %bb56 5132754aa3SSerguei Katkov 5232754aa3SSerguei Katkovbb37: ; preds = %bb32 5332754aa3SSerguei Katkov %tmp38 = add nuw nsw i64 %tmp33, 1 5432754aa3SSerguei Katkov %tmp39 = icmp ult i64 %tmp38, %tmp24 5532754aa3SSerguei Katkov br i1 %tmp39, label %bb32, label %bb40 5632754aa3SSerguei Katkov 5732754aa3SSerguei Katkovbb40: ; preds = %bb37 5832754aa3SSerguei Katkov %tmp41 = add i32 %tmp31, -1 5932754aa3SSerguei Katkov %tmp42 = trunc i64 %tmp38 to i32 6032754aa3SSerguei Katkov %tmp43 = add i32 %tmp30, %tmp42 6132754aa3SSerguei Katkov %tmp44 = icmp eq i32 %tmp41, 0 6232754aa3SSerguei Katkov br i1 %tmp44, label %bb45, label %bb29 6332754aa3SSerguei Katkov 6432754aa3SSerguei Katkovbb45: ; preds = %bb40 6532754aa3SSerguei Katkov ret void 6632754aa3SSerguei Katkov 6732754aa3SSerguei Katkovbb46: ; preds = %bb 6832754aa3SSerguei Katkov %tmp47 = sub nsw i32 %tmp11, %tmp25 6932754aa3SSerguei Katkov br label %bb48 7032754aa3SSerguei Katkov 7132754aa3SSerguei Katkovbb48: ; preds = %bb117, %bb46 7232754aa3SSerguei Katkov %tmp49 = phi i32 [ 8, %bb46 ], [ %tmp112, %bb117 ] 7332754aa3SSerguei Katkov %tmp50 = phi i32 [ %tmp47, %bb46 ], [ %tmp118, %bb117 ] 7432754aa3SSerguei Katkov br label %bb51 7532754aa3SSerguei Katkov 7632754aa3SSerguei Katkovbb51: ; preds = %bb58, %bb48 7732754aa3SSerguei Katkov %tmp52 = phi i64 [ 0, %bb48 ], [ %tmp59, %bb58 ] 7832754aa3SSerguei Katkov %tmp53 = phi i32 [ %tmp49, %bb48 ], [ %tmp54, %bb58 ] 7932754aa3SSerguei Katkov %tmp54 = add i32 %tmp53, 1 8032754aa3SSerguei Katkov %tmp55 = icmp ult i32 %tmp53, %tmp20 8132754aa3SSerguei Katkov br i1 %tmp55, label %bb58, label %bb56 8232754aa3SSerguei Katkov 8332754aa3SSerguei Katkovbb56: ; preds = %bb109, %bb101, %bb93, %bb85, %bb77, %bb69, %bb61, %bb51, %bb32 8432754aa3SSerguei Katkov unreachable 8532754aa3SSerguei Katkov 8632754aa3SSerguei Katkovbb58: ; preds = %bb51 8732754aa3SSerguei Katkov %tmp59 = add nuw nsw i64 %tmp52, 1 8832754aa3SSerguei Katkov %tmp60 = icmp ult i64 %tmp59, %tmp24 8932754aa3SSerguei Katkov br i1 %tmp60, label %bb51, label %bb61 9032754aa3SSerguei Katkov 9132754aa3SSerguei Katkovbb61: ; preds = %bb66, %bb58 9232754aa3SSerguei Katkov %tmp62 = phi i64 [ %tmp67, %bb66 ], [ 0, %bb58 ] 9332754aa3SSerguei Katkov %tmp63 = phi i32 [ %tmp64, %bb66 ], [ %tmp54, %bb58 ] 9432754aa3SSerguei Katkov %tmp64 = add i32 %tmp63, 1 9532754aa3SSerguei Katkov %tmp65 = icmp ult i32 %tmp63, %tmp20 9632754aa3SSerguei Katkov br i1 %tmp65, label %bb66, label %bb56 9732754aa3SSerguei Katkov 9832754aa3SSerguei Katkovbb66: ; preds = %bb61 9932754aa3SSerguei Katkov %tmp67 = add nuw nsw i64 %tmp62, 1 10032754aa3SSerguei Katkov %tmp68 = icmp ult i64 %tmp67, %tmp24 10132754aa3SSerguei Katkov br i1 %tmp68, label %bb61, label %bb69 10232754aa3SSerguei Katkov 10332754aa3SSerguei Katkovbb69: ; preds = %bb74, %bb66 10432754aa3SSerguei Katkov %tmp70 = phi i64 [ %tmp75, %bb74 ], [ 0, %bb66 ] 10532754aa3SSerguei Katkov %tmp71 = phi i32 [ %tmp72, %bb74 ], [ %tmp64, %bb66 ] 10632754aa3SSerguei Katkov %tmp72 = add i32 %tmp71, 1 10732754aa3SSerguei Katkov %tmp73 = icmp ult i32 %tmp71, %tmp20 10832754aa3SSerguei Katkov br i1 %tmp73, label %bb74, label %bb56 10932754aa3SSerguei Katkov 11032754aa3SSerguei Katkovbb74: ; preds = %bb69 11132754aa3SSerguei Katkov %tmp75 = add nuw nsw i64 %tmp70, 1 11232754aa3SSerguei Katkov %tmp76 = icmp ult i64 %tmp75, %tmp24 11332754aa3SSerguei Katkov br i1 %tmp76, label %bb69, label %bb77 11432754aa3SSerguei Katkov 11532754aa3SSerguei Katkovbb77: ; preds = %bb82, %bb74 11632754aa3SSerguei Katkov %tmp78 = phi i64 [ %tmp83, %bb82 ], [ 0, %bb74 ] 11732754aa3SSerguei Katkov %tmp79 = phi i32 [ %tmp80, %bb82 ], [ %tmp72, %bb74 ] 11832754aa3SSerguei Katkov %tmp80 = add i32 %tmp79, 1 11932754aa3SSerguei Katkov %tmp81 = icmp ult i32 %tmp79, %tmp20 12032754aa3SSerguei Katkov br i1 %tmp81, label %bb82, label %bb56 12132754aa3SSerguei Katkov 12232754aa3SSerguei Katkovbb82: ; preds = %bb77 12332754aa3SSerguei Katkov %tmp83 = add nuw nsw i64 %tmp78, 1 12432754aa3SSerguei Katkov %tmp84 = icmp ult i64 %tmp83, %tmp24 12532754aa3SSerguei Katkov br i1 %tmp84, label %bb77, label %bb85 12632754aa3SSerguei Katkov 12732754aa3SSerguei Katkovbb85: ; preds = %bb90, %bb82 12832754aa3SSerguei Katkov %tmp86 = phi i64 [ %tmp91, %bb90 ], [ 0, %bb82 ] 12932754aa3SSerguei Katkov %tmp87 = phi i32 [ %tmp88, %bb90 ], [ %tmp80, %bb82 ] 13032754aa3SSerguei Katkov %tmp88 = add i32 %tmp87, 1 13132754aa3SSerguei Katkov %tmp89 = icmp ult i32 %tmp87, %tmp20 13232754aa3SSerguei Katkov br i1 %tmp89, label %bb90, label %bb56 13332754aa3SSerguei Katkov 13432754aa3SSerguei Katkovbb90: ; preds = %bb85 13532754aa3SSerguei Katkov %tmp91 = add nuw nsw i64 %tmp86, 1 13632754aa3SSerguei Katkov %tmp92 = icmp ult i64 %tmp91, %tmp24 13732754aa3SSerguei Katkov br i1 %tmp92, label %bb85, label %bb93 13832754aa3SSerguei Katkov 13932754aa3SSerguei Katkovbb93: ; preds = %bb98, %bb90 14032754aa3SSerguei Katkov %tmp94 = phi i64 [ %tmp99, %bb98 ], [ 0, %bb90 ] 14132754aa3SSerguei Katkov %tmp95 = phi i32 [ %tmp96, %bb98 ], [ %tmp88, %bb90 ] 14232754aa3SSerguei Katkov %tmp96 = add i32 %tmp95, 1 14332754aa3SSerguei Katkov %tmp97 = icmp ult i32 %tmp95, %tmp20 14432754aa3SSerguei Katkov br i1 %tmp97, label %bb98, label %bb56 14532754aa3SSerguei Katkov 14632754aa3SSerguei Katkovbb98: ; preds = %bb93 14732754aa3SSerguei Katkov %tmp99 = add nuw nsw i64 %tmp94, 1 14832754aa3SSerguei Katkov %tmp100 = icmp ult i64 %tmp99, %tmp24 14932754aa3SSerguei Katkov br i1 %tmp100, label %bb93, label %bb101 15032754aa3SSerguei Katkov 15132754aa3SSerguei Katkovbb101: ; preds = %bb106, %bb98 15232754aa3SSerguei Katkov %tmp102 = phi i64 [ %tmp107, %bb106 ], [ 0, %bb98 ] 15332754aa3SSerguei Katkov %tmp103 = phi i32 [ %tmp104, %bb106 ], [ %tmp96, %bb98 ] 15432754aa3SSerguei Katkov %tmp104 = add i32 %tmp103, 1 15532754aa3SSerguei Katkov %tmp105 = icmp ult i32 %tmp103, %tmp20 15632754aa3SSerguei Katkov br i1 %tmp105, label %bb106, label %bb56 15732754aa3SSerguei Katkov 15832754aa3SSerguei Katkovbb106: ; preds = %bb101 15932754aa3SSerguei Katkov %tmp107 = add nuw nsw i64 %tmp102, 1 16032754aa3SSerguei Katkov %tmp108 = icmp ult i64 %tmp107, %tmp24 16132754aa3SSerguei Katkov br i1 %tmp108, label %bb101, label %bb109 16232754aa3SSerguei Katkov 16332754aa3SSerguei Katkovbb109: ; preds = %bb114, %bb106 16432754aa3SSerguei Katkov %tmp110 = phi i64 [ %tmp115, %bb114 ], [ 0, %bb106 ] 16532754aa3SSerguei Katkov %tmp111 = phi i32 [ %tmp112, %bb114 ], [ %tmp104, %bb106 ] 16632754aa3SSerguei Katkov %tmp112 = add i32 %tmp111, 1 16732754aa3SSerguei Katkov %tmp113 = icmp ult i32 %tmp111, %tmp20 16832754aa3SSerguei Katkov br i1 %tmp113, label %bb114, label %bb56 16932754aa3SSerguei Katkov 17032754aa3SSerguei Katkovbb114: ; preds = %bb109 17132754aa3SSerguei Katkov %tmp115 = add nuw nsw i64 %tmp110, 1 17232754aa3SSerguei Katkov %tmp116 = icmp ult i64 %tmp115, %tmp24 17332754aa3SSerguei Katkov br i1 %tmp116, label %bb109, label %bb117 17432754aa3SSerguei Katkov 17532754aa3SSerguei Katkovbb117: ; preds = %bb114 17632754aa3SSerguei Katkov %tmp118 = add i32 %tmp50, -8 17732754aa3SSerguei Katkov %tmp119 = icmp eq i32 %tmp118, 0 17832754aa3SSerguei Katkov br i1 %tmp119, label %bb27, label %bb48 17932754aa3SSerguei Katkov} 18032754aa3SSerguei Katkov 18132754aa3SSerguei Katkov!0 = !{i32 0, i32 2147483647} 182