[flang] Fix length handling in character kind implicit conversion (#74586)
[llvm-project.git] / polly / test / CodeGen / stack-overflow-in-load-hoisting.ll
blob02dfe96e3e9169a07907a89b44940031042f9a17
1 ; RUN: opt %loadPolly -verify-dom-info -polly-codegen -S < %s \
2 ; RUN: -polly-invariant-load-hoisting=true | FileCheck %s
4 ; This caused an infinite recursion during invariant load hoisting at some
5 ; point. Check it does not and we add a "false" runtime check.
7 ; CHECK:       polly.preload.begin:
8 ; CHECK-NEXT:    br i1 false, label %polly.start, label %for.body.14.lr.ph
10 target datalayout = "e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128"
12 %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573 = type { ptr, ptr, i32, i32, i32, i32, i32, [4 x i32], [4 x i32], double, %struct.AVRational.0.22.858.1188.1276.1298.1567 }
13 %struct.AVClass.10.32.868.1198.1286.1308.1566 = type { ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, ptr }
14 %struct.AVOption.7.29.865.1195.1283.1305.1563 = type { ptr, ptr, i32, i32, %union.anon.6.28.864.1194.1282.1304.1562, double, double, i32, ptr }
15 %union.anon.6.28.864.1194.1282.1304.1562 = type { i64 }
16 %struct.AVOptionRanges.9.31.867.1197.1285.1307.1565 = type { ptr, i32, i32 }
17 %struct.AVOptionRange.8.30.866.1196.1284.1306.1564 = type { ptr, double, double, double, double, i32 }
18 %struct.AVFrame.5.27.863.1193.1281.1303.1572 = type { [8 x ptr], [8 x i32], ptr, i32, i32, i32, i32, i32, i32, %struct.AVRational.0.22.858.1188.1276.1298.1567, i64, i64, i64, i32, i32, i32, ptr, [8 x i64], i32, i32, i32, i32, i64, i32, i64, [8 x ptr], ptr, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i64, i64, i64, ptr, i32, i32, i32, ptr, i32, i32, ptr }
19 %struct.AVFrameSideData.4.26.862.1192.1280.1302.1571 = type { i32, ptr, i32, ptr, ptr }
20 %struct.AVDictionary.3.25.861.1191.1279.1301.1570 = type opaque
21 %struct.AVBufferRef.2.24.860.1190.1278.1300.1569 = type { ptr, ptr, i32 }
22 %struct.AVBuffer.1.23.859.1189.1277.1299.1568 = type opaque
23 %struct.AVRational.0.22.858.1188.1276.1298.1567 = type { i32, i32 }
25 ; Function Attrs: nounwind ssp
26 define void @fade(ptr %s) #0 {
27 entry:
28   br label %for.cond.12.preheader.lr.ph
30 for.cond.12.preheader.lr.ph:                      ; preds = %entry
31   %outpicref = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 1
32   %arrayidx2 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 8, i32 0
33   %tobool = icmp eq i32 0, 0
34   %arrayidx4 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 8, i32 1
35   %tmp = load i32, ptr %arrayidx4, align 4
36   %tobool5 = icmp eq i32 %tmp, 0
37   %h = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 3
38   %tmp1 = load i32, ptr %h, align 4
39   %cmp.48 = icmp sgt i32 %tmp1, 0
40   %tmp2 = load ptr, ptr %outpicref, align 4
41   %tmp3 = load ptr, ptr %tmp2, align 4
42   br label %for.body.14.lr.ph
44 for.body.14.lr.ph:                                ; preds = %for.end, %for.cond.12.preheader.lr.ph
45   %d.050 = phi ptr [ %tmp3, %for.cond.12.preheader.lr.ph ], [ undef, %for.end ]
46   %w = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 2
47   %tmp4 = load i32, ptr %w, align 4
48   %cmp13.46 = icmp sgt i32 %tmp4, 0
49   br label %for.body.14
51 for.body.14:                                      ; preds = %for.body.14, %for.body.14.lr.ph
52   store i8 undef, ptr %d.050, align 1
53   %arrayidx54 = getelementptr inbounds %struct.AudioVectorScopeContext.21.43.879.1209.1297.1319.1573, ptr %s, i32 0, i32 8, i32 2
54   %tmp5 = load i32, ptr %arrayidx54, align 4
55   %add92 = add nuw nsw i32 0, 4
56   %tmp6 = load i32, ptr %w, align 4
57   %mul = shl nsw i32 %tmp6, 2
58   %cmp13 = icmp slt i32 %add92, %mul
59   br i1 %cmp13, label %for.body.14, label %for.end
61 for.end:                                          ; preds = %for.body.14
62   %inc = add nuw nsw i32 0, 1
63   %tmp7 = load i32, ptr %h, align 4
64   %cmp = icmp slt i32 %inc, %tmp7
65   br i1 %cmp, label %for.body.14.lr.ph, label %if.end.loopexit
67 if.end.loopexit:                                  ; preds = %for.end
68   br label %if.end
70 if.end:                                           ; preds = %if.end.loopexit
71   ret void