mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 07:31:28 +00:00
e6eda66cbc
Recommits the changes from https://reviews.llvm.org/D148216. Explicitly named globals are now matched literally, instead of emitting a capture group for the name. This resolves #70047. Metadata and annotations, on the other hand, are captured and matched against by default, since their identifiers are not stable. The reasons for revert (#63746) have been fixed: The first issue, that of duplicated checkers, has already been resolved in #70050. This PR resolves the second issue listed in #63746, regarding the order of named and unnamed globals. This is fixed by recording the index of substrings containing global values, and sorting the checks according to that index before emitting them. This results in global value checks being emitted in the order they were seen instead of being grouped separately.
85 lines
2.9 KiB
Plaintext
85 lines
2.9 KiB
Plaintext
RUN: rm -rf %t && mkdir %t
|
|
|
|
# Check --check-globals all 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 all
|
|
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 all --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 all
|
|
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 all \
|
|
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(void) {
|
|
IGF-NEXT: static int i, j;
|
|
IGF-NEXT:}
|
|
IGF-NEXT:void bar(void) {
|
|
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(void) {
|
|
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(void) {
|
|
NRM-NEXT: static int i, j;
|
|
NRM-NEXT:}
|
|
BOTH-NEXT://.
|
|
BOTH-NEXT:// CHECK: attributes {{.*}}
|
|
BOTH-NEXT://.
|
|
BOTH-NEXT:// CHECK: {{\[\[META0:!\[0-9\]\+\]\]}} = {{.*}}
|
|
BOTH-NEXT:// CHECK: {{\[\[META1:!\[0-9\]\+\]\]}} = {{.*}}
|
|
BOTH-NEXT://.
|
|
BOTH-NOT:{{.}}
|
|
|
|
LIT-RUN: Testing: 2 tests
|
|
LIT-RUN: PASS: {{.*}} igf.c
|
|
LIT-RUN: PASS: {{.*}} norm.c
|