| RUN: rm -rf %t && mkdir %t |
| |
| # Check --check-globals in normal mode and in --include-generated-funcs mode. |
| |
| RUN: cp %S/Inputs/check-globals.c %t/norm.c |
| RUN: %update_cc_test_checks %t/norm.c --check-globals |
| RUN: FileCheck %s --input-file=%t/norm.c --match-full-lines -strict-whitespace \ |
| RUN: -check-prefixes=BOTH,NRM |
| |
| RUN: cp %S/Inputs/check-globals.c %t/igf.c |
| RUN: %update_cc_test_checks %t/igf.c --check-globals --include-generated-funcs |
| RUN: FileCheck %s --input-file=%t/igf.c --match-full-lines -strict-whitespace \ |
| RUN: -check-prefixes=BOTH,IGF |
| |
| # Check that repeating doesn't change it, such as duplicating '//.' occurrences. |
| |
| RUN: cp %t/norm.c %t/norm-again.c |
| RUN: %update_cc_test_checks %t/norm-again.c --check-globals |
| RUN: diff -u %t/norm.c %t/norm-again.c |
| RUN: rm %t/norm-again.c |
| |
| RUN: cp %t/igf.c %t/igf-again.c |
| RUN: %update_cc_test_checks %t/igf-again.c --check-globals \ |
| RUN: --include-generated-funcs |
| RUN: diff -u %t/igf.c %t/igf-again.c |
| RUN: rm %t/igf-again.c |
| |
| # Check that the generated directives actually work correctly. For example, |
| # they're not in the wrong order. |
| |
| RUN: cp %S/Inputs/lit.cfg.example %t/lit.cfg |
| # Show lit failures while avoiding confusing FileCheck input dump nesting. |
| RUN: %lit %t |
| # Lit was successful. Sanity-check the results with deterministic test order. |
| RUN: rm %t/.lit_test_times.txt |
| RUN: %lit %t 2>&1 | FileCheck -check-prefix=LIT-RUN %s |
| |
| END. |
| |
| BOTH-NOT:{{.}} |
| NRM:// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals |
| IGF:// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals --include-generated-funcs |
| BOTH-NEXT:// {{.*}} |
| BOTH-NEXT:// RUN: true |
| BOTH-NEXT:// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -o - %s | FileCheck %s |
| BOTH-EMPTY: |
| IGF-NEXT:void foo() { |
| IGF-NEXT: static int i, j; |
| IGF-NEXT:} |
| IGF-NEXT:void bar() { |
| IGF-NEXT: static int i, j; |
| IGF-NEXT:} |
| BOTH-NEXT://. |
| BOTH-NEXT:// CHECK: @foo.i = internal global i32 0, align 4 |
| BOTH-NEXT:// CHECK: @foo.j = internal global i32 0, align 4 |
| BOTH-NEXT:// CHECK: @bar.i = internal global i32 0, align 4 |
| BOTH-NEXT:// CHECK: @bar.j = internal global i32 0, align 4 |
| BOTH-NEXT://. |
| BOTH-NEXT:// CHECK-LABEL: @foo( |
| BOTH-NEXT:// CHECK-NEXT: entry: |
| BOTH-NEXT:// CHECK-NEXT: ret void |
| BOTH-NEXT:// |
| NRM-NEXT:void foo() { |
| NRM-NEXT: static int i, j; |
| NRM-NEXT:} |
| IGF-NEXT:// |
| BOTH-NEXT:// CHECK-LABEL: @bar( |
| BOTH-NEXT:// CHECK-NEXT: entry: |
| BOTH-NEXT:// CHECK-NEXT: ret void |
| BOTH-NEXT:// |
| NRM-NEXT:void bar() { |
| NRM-NEXT: static int i, j; |
| NRM-NEXT:} |
| BOTH-NEXT://. |
| BOTH-NEXT:// CHECK: attributes {{.*}} |
| BOTH-NEXT://. |
| BOTH-NEXT:// CHECK: !0 = {{.*}} |
| BOTH-NEXT:// CHECK: !1 = {{.*}} |
| BOTH-NEXT://. |
| BOTH-NOT:{{.}} |
| |
| LIT-RUN: Testing: 2 tests |
| LIT-RUN: PASS: {{.*}} igf.c |
| LIT-RUN: PASS: {{.*}} norm.c |