For Loop Conversion
[lldb.git] / clang-tools-extra / test / loop-convert / loop-convert-negative-multi-end-call.cpp
1 // RUN: rm -rf %t.cpp
2 // RUN: grep -Ev "//\s*[A-Z-]+:" %s > %t.cpp
3 // RUN: loop-convert -A0 . %t.cpp -- -I %S/Inputs \
4 // RUN:         && FileCheck -input-file=%t.cpp %s
5
6 #include "structures.h"
7
8 // Single FileCheck line to make sure that no loops are converted.
9 // CHECK-NOT: for ({{.*[^:]:[^:].*}})
10
11 S s;
12 T t;
13 U u;
14
15 void multipleEnd() {
16   for (S::iterator i = s.begin(); i != s.end(); ++i)
17     MutableVal k = *i;
18
19   for (T::iterator i = t.begin(); i != t.end(); ++i)
20     int k = *i;
21
22   for (U::iterator i = u.begin(); i != u.end(); ++i)
23     Val k = *i;
24 }
25
26 void f(X);
27 void f(S);
28 void f(T);
29
30 void complexContainer() {
31   X x;
32   for (S::iterator i = x.s.begin(), e = x.s.end(); i != e; ++i) {
33     f(x);
34     MutableVal k = *i;
35   }
36
37   for (T::iterator i = x.t.begin(), e = x.t.end(); i != e; ++i) {
38     f(x);
39     int k = *i;
40   }
41
42   for (S::iterator i = x.s.begin(), e = x.s.end(); i != e; ++i) {
43     f(x.s);
44     MutableVal k = *i;
45   }
46
47   for (T::iterator i = x.t.begin(), e = x.t.end(); i != e; ++i) {
48     f(x.t);
49     int k = *i;
50   }
51
52   for (S::iterator i = x.getS().begin(), e = x.getS().end(); i != e; ++i) {
53     f(x.getS());
54     MutableVal k = *i;
55   }
56
57   X exes[5];
58   int index = 0;
59
60   for (S::iterator i = exes[index].getS().begin(),
61        e = exes[index].getS().end(); i != e; ++i) {
62     index++;
63     MutableVal k = *i;
64   }
65 }