[JITLink][arm64] Support arm64e JIT'd code (initially enabled for MachO only).
[llvm-project.git] / polly / test / ForwardOpTree / noforward_from_region.ll
blobbd5864c25f5435eb5bd1ad4a496209cd1f19a1a3
1 ; RUN: opt %loadNPMPolly '-passes=print<polly-optree>' -disable-output < %s | FileCheck %s -match-full-lines
3 ; Ensure we do not move instructions from region statements in case the
4 ; instruction to move loads from an array which is also written to from
5 ; within the region. This is necessary as complex region statements may prevent
6 ; us from detecting possible memory conflicts.
8 ; for (int j = 0; j < n; j += 1) {
9 ; bodyA:
10 ;   double val = A[0];
11 ;   if (cond)
13 ; bodyA_true:
14 ;     A[0] = 42;
16 ; bodyB:
17 ;     A[0] = val;
18 ; }
20 define void @func(i32 %n, ptr noalias nonnull %A) {
21 entry:
22   br label %for
24 for:
25   %j = phi i32 [0, %entry], [%j.inc, %inc]
26   %j.cmp = icmp slt i32 %j, %n
27   br i1 %j.cmp, label %bodyA, label %exit
29     bodyA:
30       %val = load double, ptr %A
31       %cond = fcmp oeq double 21.0, 21.0
32       br i1 %cond, label %bodyA_true, label %bodyB
34     bodyA_true:
35       store double 42.0, ptr %A
36       br label %bodyB
38     bodyB:
39       store double %val, ptr %A
40       br label %bodyB_exit
42     bodyB_exit:
43       br label %inc
45 inc:
46   %j.inc = add nuw nsw i32 %j, 1
47   br label %for
49 exit:
50   br label %return
52 return:
53   ret void
56 ; CHECK: ForwardOpTree executed, but did not modify anything