summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/test/cpp11-migrate/LoopConvert/naming.cpp
blob: f232af1fa44b275ff232f3e9593eac2e07c35ef1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
// RUN: cpp11-migrate -loop-convert %t.cpp -- -I %S/Inputs
// RUN: FileCheck -input-file=%t.cpp %s

#include "structures.h"

const int N = 10;
int nums[N];
int sum = 0;

Val Arr[N];
Val &func(Val &);

void aliasing() {
  // The extra blank braces are left as a placeholder for after the variable
  // declaration is deleted.
  for (int i = 0; i < N; ++i) {
    Val &t = Arr[i]; { }
    int y = t.x;
  }
  // CHECK: for (auto & t : Arr)
  // CHECK-NEXT: { }
  // CHECK-NEXT: int y = t.x;

  for (int i = 0; i < N; ++i) {
    Val &t = Arr[i];
    int y = t.x;
    int z = Arr[i].x + t.x;
  }
  // CHECK: for (auto & [[VAR:[a-z_]+]] : Arr)
  // CHECK-NEXT: Val &t = [[VAR]];
  // CHECK-NEXT: int y = t.x;
  // CHECK-NEXT: int z = [[VAR]].x + t.x;

  for (int i = 0; i < N; ++i) {
    Val t = Arr[i];
    int y = t.x;
    int z = Arr[i].x + t.x;
  }
  // CHECK: for (auto & [[VAR:[a-z_]+]] : Arr)
  // CHECK-NEXT: Val t = [[VAR]];
  // CHECK-NEXT: int y = t.x;
  // CHECK-NEXT: int z = [[VAR]].x + t.x;

  for (int i = 0; i < N; ++i) {
    Val &t = func(Arr[i]);
    int y = t.x;
  }
  // CHECK: for (auto & [[VAR:[a-z_]+]] : Arr)
  // CHECK-NEXT: Val &t = func([[VAR]]);
  // CHECK-NEXT: int y = t.x;
}

void sameNames() {
  int num = 0;
  for (int i = 0; i < N; ++i) {
    printf("Fibonacci number is %d\n", nums[i]);
    sum += nums[i] + 2 + num;
    (void) nums[i];
  }
  // CHECK: int num = 0;
  // CHECK-NEXT: for (auto & [[VAR:[a-z_]+]] : nums)
  // CHECK-NEXT: printf("Fibonacci number is %d\n", [[VAR]]);
  // CHECK-NEXT: sum += [[VAR]] + 2 + num;
  // CHECK-NOT: (void) num;
  // CHECK: }
}
OpenPOWER on IntegriCloud