; RUN: opt %loadPolly -pass-remarks-analysis="polly-scops" -polly-scops \ ; RUN: -polly-invariant-load-hoisting=true \ ; RUN: < %s 2>&1 | FileCheck %s ; ; CHECK: Low complexity assumption: { : false } ; ; The IR is a modified version of the following C: ; ; void f(int *A) { ; Begin: ; if (A[0] == 1 | A[1] == 1 | A[2] == 1 | A[3] == 1 | A[4] == 1 | A[5] == 1 | ; A[6] == 1 | A[7] == 1 | A[8] == 1 | A[9] == 1 | A[10] == 1 | A[11] == 1 | ; A[12] == 1 | A[13] == 1 | A[14] == 1 | A[15] == 1 | A[16] == 1 | ; A[17] == 1 | A[18] == 1 | A[19] == 1 | A[20] == 1 | A[21] == 1 | ; A[22] == 1 | A[23]) { ; A[-1]++; ; } else { ; A[-1]--; ; } ; End: ; return; ; } ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" define void @f(i32* %A) { entry: br label %Begin Begin: ; preds = %entry %tmp = load i32, i32* %A, align 4 %cmp = icmp eq i32 %tmp, 1 %arrayidx1 = getelementptr inbounds i32, i32* %A, i64 1 %tmp1 = load i32, i32* %arrayidx1, align 4 %cmp2 = icmp eq i32 %tmp1, 1 %or = or i1 %cmp, %cmp2 %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 2 %tmp2 = load i32, i32* %arrayidx4, align 4 %cmp5 = icmp eq i32 %tmp2, 1 %or7 = or i1 %or, %cmp5 %arrayidx8 = getelementptr inbounds i32, i32* %A, i64 3 %tmp3 = load i32, i32* %arrayidx8, align 4 %cmp9 = icmp eq i32 %tmp3, 1 %or11 = or i1 %or7, %cmp9 %arrayidx12 = getelementptr inbounds i32, i32* %A, i64 4 %tmp4 = load i32, i32* %arrayidx12, align 4 %cmp13 = icmp eq i32 %tmp4, 1 %or15 = or i1 %or11, %cmp13 %arrayidx16 = getelementptr inbounds i32, i32* %A, i64 5 %tmp5 = load i32, i32* %arrayidx16, align 4 %cmp17 = icmp eq i32 %tmp5, 1 %or19 = or i1 %or15, %cmp17 %arrayidx20 = getelementptr inbounds i32, i32* %A, i64 6 %tmp6 = load i32, i32* %arrayidx20, align 4 %cmp21 = icmp eq i32 %tmp6, 1 %or23 = or i1 %or19, %cmp21 %arrayidx24 = getelementptr inbounds i32, i32* %A, i64 7 %tmp7 = load i32, i32* %arrayidx24, align 4 %cmp25 = icmp eq i32 %tmp7, 1 %or27 = or i1 %or23, %cmp25 %arrayidx28 = getelementptr inbounds i32, i32* %A, i64 8 %tmp8 = load i32, i32* %arrayidx28, align 4 %cmp29 = icmp eq i32 %tmp8, 1 %or31 = or i1 %or27, %cmp29 %arrayidx32 = getelementptr inbounds i32, i32* %A, i64 9 %tmp9 = load i32, i32* %arrayidx32, align 4 %cmp33 = icmp eq i32 %tmp9, 1 %or35 = or i1 %or31, %cmp33 %arrayidx36 = getelementptr inbounds i32, i32* %A, i64 10 %tmp10 = load i32, i32* %arrayidx36, align 4 %cmp37 = icmp eq i32 %tmp10, 1 %or39 = or i1 %or35, %cmp37 %arrayidx40 = getelementptr inbounds i32, i32* %A, i64 11 %tmp11 = load i32, i32* %arrayidx40, align 4 %cmp41 = icmp eq i32 %tmp11, 1 %or43 = or i1 %or39, %cmp41 %arrayidx44 = getelementptr inbounds i32, i32* %A, i64 12 %tmp12 = load i32, i32* %arrayidx44, align 4 %cmp45 = icmp eq i32 %tmp12, 1 %or47 = or i1 %or43, %cmp45 %arrayidx48 = getelementptr inbounds i32, i32* %A, i64 13 %tmp13 = load i32, i32* %arrayidx48, align 4 %cmp49 = icmp eq i32 %tmp13, 1 %or51 = or i1 %or47, %cmp49 %arrayidx52 = getelementptr inbounds i32, i32* %A, i64 14 %tmp14 = load i32, i32* %arrayidx52, align 4 %cmp53 = icmp eq i32 %tmp14, 1 %or55 = or i1 %or51, %cmp53 %arrayidx56 = getelementptr inbounds i32, i32* %A, i64 15 %tmp15 = load i32, i32* %arrayidx56, align 4 %cmp57 = icmp eq i32 %tmp15, 1 %or59 = or i1 %or55, %cmp57 %arrayidx60 = getelementptr inbounds i32, i32* %A, i64 16 %tmp16 = load i32, i32* %arrayidx60, align 4 %cmp61 = icmp eq i32 %tmp16, 1 %or63 = or i1 %or59, %cmp61 %arrayidx64 = getelementptr inbounds i32, i32* %A, i64 17 %tmp17 = load i32, i32* %arrayidx64, align 4 %cmp65 = icmp eq i32 %tmp17, 1 %or67 = or i1 %or63, %cmp65 %arrayidx68 = getelementptr inbounds i32, i32* %A, i64 18 %tmp18 = load i32, i32* %arrayidx68, align 4 %cmp69 = icmp eq i32 %tmp18, 1 %or71 = or i1 %or67, %cmp69 %arrayidx72 = getelementptr inbounds i32, i32* %A, i64 19 %tmp19 = load i32, i32* %arrayidx72, align 4 %cmp73 = icmp eq i32 %tmp19, 1 %or75 = or i1 %or71, %cmp73 %arrayidx76 = getelementptr inbounds i32, i32* %A, i64 20 %tmp20 = load i32, i32* %arrayidx76, align 4 %cmp77 = icmp eq i32 %tmp20, 1 %or79 = or i1 %or75, %cmp77 %arrayidx80 = getelementptr inbounds i32, i32* %A, i64 21 %tmp21 = load i32, i32* %arrayidx80, align 4 %cmp81 = icmp eq i32 %tmp21, 1 %or83 = or i1 %or79, %cmp81 %arrayidx84 = getelementptr inbounds i32, i32* %A, i64 22 %tmp22 = load i32, i32* %arrayidx84, align 4 %cmp85 = icmp eq i32 %tmp22, 1 %or87 = or i1 %or83, %cmp85 %arrayidx88 = getelementptr inbounds i32, i32* %A, i64 23 %tmp23 = load i32, i32* %arrayidx88, align 4 %cmp88 = icmp eq i32 %tmp23, 1 %or89 = or i1 %or87, %cmp88 br i1 %or89, label %if.else, label %if.then if.then: ; preds = %Begin %arrayidx90 = getelementptr inbounds i32, i32* %A, i64 -1 %tmp24 = load i32, i32* %arrayidx90, align 4 %inc = add nsw i32 %tmp24, 1 store i32 %inc, i32* %arrayidx90, align 4 br label %if.end if.else: ; preds = %Begin %arrayidx91 = getelementptr inbounds i32, i32* %A, i64 -1 %tmp25 = load i32, i32* %arrayidx91, align 4 %dec = add nsw i32 %tmp25, -1 store i32 %dec, i32* %arrayidx91, align 4 br label %if.end if.end: ; preds = %if.else, %if.then br label %End End: ; preds = %if.end ret void }