xref: /llvm-project/clang/test/utils/update_cc_test_checks/check-globals.test (revision e6eda66cbc5ebf424b184506fc6bb27bee3d293f)
1RUN: rm -rf %t && mkdir %t
2
3# Check --check-globals all in normal mode and in --include-generated-funcs mode.
4
5RUN: cp %S/Inputs/check-globals.c %t/norm.c
6RUN: %update_cc_test_checks %t/norm.c --check-globals all
7RUN: FileCheck %s --input-file=%t/norm.c --match-full-lines -strict-whitespace \
8RUN:   -check-prefixes=BOTH,NRM
9
10RUN: cp %S/Inputs/check-globals.c %t/igf.c
11RUN: %update_cc_test_checks %t/igf.c --check-globals all --include-generated-funcs
12RUN: FileCheck %s --input-file=%t/igf.c --match-full-lines -strict-whitespace \
13RUN:   -check-prefixes=BOTH,IGF
14
15# Check that repeating doesn't change it, such as duplicating '//.' occurrences.
16
17RUN: cp %t/norm.c %t/norm-again.c
18RUN: %update_cc_test_checks %t/norm-again.c --check-globals all
19RUN: diff -u %t/norm.c %t/norm-again.c
20RUN: rm %t/norm-again.c
21
22RUN: cp %t/igf.c %t/igf-again.c
23RUN: %update_cc_test_checks %t/igf-again.c --check-globals all \
24RUN:     --include-generated-funcs
25RUN: diff -u %t/igf.c %t/igf-again.c
26RUN: rm %t/igf-again.c
27
28# Check that the generated directives actually work correctly.  For example,
29# they're not in the wrong order.
30
31RUN: cp %S/Inputs/lit.cfg.example %t/lit.cfg
32# Show lit failures while avoiding confusing FileCheck input dump nesting.
33RUN: %lit %t
34# Lit was successful.  Sanity-check the results with deterministic test order.
35RUN: rm %t/.lit_test_times.txt
36RUN: %lit %t 2>&1 | FileCheck -check-prefix=LIT-RUN %s
37
38END.
39
40  BOTH-NOT:{{.}}
41       NRM:// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals
42       IGF:// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals --include-generated-funcs
43 BOTH-NEXT:// {{.*}}
44 BOTH-NEXT:// RUN: true
45 BOTH-NEXT:// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s
46BOTH-EMPTY:
47  IGF-NEXT:void foo(void) {
48  IGF-NEXT:  static int i, j;
49  IGF-NEXT:}
50  IGF-NEXT:void bar(void) {
51  IGF-NEXT:  static int i, j;
52  IGF-NEXT:}
53 BOTH-NEXT://.
54 BOTH-NEXT:// CHECK: @foo.i = internal global i32 0, align 4
55 BOTH-NEXT:// CHECK: @foo.j = internal global i32 0, align 4
56 BOTH-NEXT:// CHECK: @bar.i = internal global i32 0, align 4
57 BOTH-NEXT:// CHECK: @bar.j = internal global i32 0, align 4
58 BOTH-NEXT://.
59 BOTH-NEXT:// CHECK-LABEL: @foo(
60 BOTH-NEXT:// CHECK-NEXT:  entry:
61 BOTH-NEXT:// CHECK-NEXT:    ret void
62 BOTH-NEXT://
63  NRM-NEXT:void foo(void) {
64  NRM-NEXT:  static int i, j;
65  NRM-NEXT:}
66  IGF-NEXT://
67 BOTH-NEXT:// CHECK-LABEL: @bar(
68 BOTH-NEXT:// CHECK-NEXT:  entry:
69 BOTH-NEXT:// CHECK-NEXT:    ret void
70 BOTH-NEXT://
71  NRM-NEXT:void bar(void) {
72  NRM-NEXT:  static int i, j;
73  NRM-NEXT:}
74 BOTH-NEXT://.
75 BOTH-NEXT:// CHECK: attributes {{.*}}
76 BOTH-NEXT://.
77 BOTH-NEXT:// CHECK: {{\[\[META0:!\[0-9\]\+\]\]}} = {{.*}}
78 BOTH-NEXT:// CHECK: {{\[\[META1:!\[0-9\]\+\]\]}} = {{.*}}
79 BOTH-NEXT://.
80  BOTH-NOT:{{.}}
81
82LIT-RUN: Testing: 2 tests
83LIT-RUN: PASS: {{.*}} igf.c
84LIT-RUN: PASS: {{.*}} norm.c
85