[flang] Fix length handling in character kind implicit conversion (#74586)
[llvm-project.git] / polly / test / CodeGen / non-affine-region-implicit-store.ll
blobe89197e24852c994c0d257e5581e99ca1f3abcbb
1 ; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
3 ; llvm.org/PR25438
4 ; After loop versioning, a dominance check of a non-affine subregion's exit node
5 ; causes the dominance check to always fail any block in the scop. The
6 ; subregion's exit block has become polly_merge_new_and_old, which also receives
7 ; the control flow of the generated code. This would cause that any value for
8 ; implicit stores is assumed to be not from the scop.
10 ; This checks that the stored value is indeed from the generated code.
12 ; CHECK-LABEL: polly.stmt.do.body.entry:
13 ; CHECK:        a.phiops.reload = load i32, ptr %a.phiops
15 ; CHECK-LABEL: polly.stmt.polly.merge_new_and_old.exit:
16 ; CHECK:         store i32 %polly.a, ptr %a.s2a
18 define void @func() {
19 entry:
20   br label %while.body
22 while.body:
23   br label %do.body
25 do.body:
26   %a = phi i32 [ undef, %while.body ], [ %b, %end_b ]
27   %cond = or i1 undef, undef
28   br i1 %cond, label %end_a, label %if_a
30 if_a:
31   br label %end_a
33 end_a:
34   br i1 undef, label %if_b, label %end_b
36 if_b:
37   br label %end_b
39 end_b:
40   %b = phi i32 [ undef, %if_b ], [ %a, %end_a ]
41   br i1 false, label %do.body, label %do.end
43 do.end:
44   br label %return
46 return:
47   ret void