[SandboxIR] Avoid repeated hash lookups (NFC) (#125337)
[llvm-project.git] / polly / test / DeLICM / reject_storeinsubregion.ll
blobc987156b51cd17881e0a668c9258110b1320c9bd
1 ; RUN: opt %loadNPMPolly '-passes=print<polly-delicm>' -pass-remarks-missed=polly-delicm -disable-output < %s 2>&1 | FileCheck %s
3 ;    void func(double *A) {
4 ;      for (int j = 0; j < 2; j += 1) { /* outer */
5 ;        double phi = 0.0;
6 ;        for (int i = 0; i < 4; i += 1) /* reduction */
7 ;          phi += 4.2;
8 ;          if (phi > 42.0)
9 ;            (void)A[j];
10 ;          else
11 ;            A[j] = 0.0;
12 ;        A[j] = phi;
13 ;      }
14 ;    }
16 define void @func(ptr noalias nonnull %A) {
17 entry:
18   br label %outer.preheader
20 outer.preheader:
21   br label %outer.for
23 outer.for:
24   %j = phi i32 [0, %outer.preheader], [%j.inc, %outer.inc]
25   %j.cmp = icmp slt i32 %j, 2
26   br i1 %j.cmp, label %reduction.preheader, label %outer.exit
29     reduction.preheader:
30       br label %reduction.for
32     reduction.for:
33       %i = phi i32 [0, %reduction.preheader], [%i.inc, %reduction.inc]
34       %phi = phi double [0.0, %reduction.preheader], [%add, %reduction.inc]
35       %i.cmp = icmp slt i32 %i, 4
36       br i1 %i.cmp, label %body, label %reduction.exit
40         body:
41           %add = fadd double %phi, 4.2
42           %A_idxp = getelementptr inbounds double, ptr %A, i32 %j
43           %add.cmp = fcmp ogt double %add, 42.0
44           br i1 %add.cmp , label %body_true, label %body_false
46         body_true:
47           %dummy = load double, ptr %A_idxp
48           br label %reduction.inc
50         body_false:
51           store double 0.0, ptr %A_idxp
52           br label %reduction.inc
56     reduction.inc:
57       %i.inc = add nuw nsw i32 %i, 1
58       br label %reduction.for
60     reduction.exit:
61       %A_idx = getelementptr inbounds double, ptr %A, i32 %j
62       store double %phi, ptr %A_idx
63       br label %outer.inc
67 outer.inc:
68   %j.inc = add nuw nsw i32 %j, 1
69   br label %outer.for
71 outer.exit:
72   br label %return
74 return:
75   ret void
79 ; CHECK: store is in a non-affine subregion