For Loop Conversion
[lldb.git] / clang-tools-extra / test / loop-convert / loop-convert-confidence.cpp
1 // RUN: rm -rf %t.cpp
2 // RUN: grep -Ev "//\s*[A-Z-]+:" %s > %t.cpp
3 // RUN: loop-convert . %t.cpp -- -I %S/Inputs \
4 // RUN:         && FileCheck -input-file=%t.cpp %s
5 // RUN: loop-convert . %t.cpp -A2 -- -I %S/Inputs \
6 // RUN:         && FileCheck -check-prefix=RISKY -input-file=%t.cpp %s
7
8 #include "structures.h"
9
10 void f() {
11   const int N = 5;
12   const int M = 7;
13   int (*pArr)[N];
14   int Arr[N][M];
15   int sum = 0;
16
17   for (int i = 0; i < M; ++i) {
18     sum += Arr[0][i];
19   }
20   // CHECK: for (int i = 0; i < M; ++i) {
21   // CHECK-NEXT: sum += Arr[0][i];
22   // CHECK-NEXT: }
23   // RISKY: for (auto & [[VAR:[a-z_]+]] : Arr[0]) {
24   // RISKY-NEXT: sum += [[VAR]];
25   // RISKY-NEXT: }
26
27   for (int i = 0; i < N; ++i) {
28     sum += (*pArr)[i];
29   }
30   // RISKY: for (auto & [[VAR:[a-z_]+]] : *pArr) {
31   // RISKY-NEXT: sum += [[VAR]];
32   // RISKY-NEXT: }
33   // CHECK: for (int i = 0; i < N; ++i) {
34   // CHECK-NEXT: sum += (*pArr)[i];
35   // CHECK-NEXT: }
36 }