forked from OSchip/llvm-project
Bring back the tests for update_cc_tests_checks.py
The tests were removed in 287307a0c6
to
avoid a dependency on python3. update_cc_tests_checks.py also works with
python2 so restore the tests without the python3 dependency.
This commit is contained in:
parent
9de1241bb2
commit
523896f64a
|
@ -10,12 +10,13 @@ except ImportError:
|
|||
from pipes import quote as shell_quote
|
||||
|
||||
|
||||
def add_update_script_substition(name, extra_args=''):
|
||||
script_path = os.path.join(config.llvm_src_root, 'utils', name + '.py')
|
||||
def add_update_script_substition(name, python_exe=config.python_executable,
|
||||
extra_args=''):
|
||||
assert name.startswith('%')
|
||||
script_path = os.path.join(config.llvm_src_root, 'utils', name[1:] + '.py')
|
||||
assert os.path.isfile(script_path)
|
||||
config.substitutions.append(
|
||||
('%' + name, "'%s' %s %s" % (
|
||||
config.python_executable, script_path, extra_args)))
|
||||
(name, "'%s' %s %s" % (python_exe, script_path, extra_args)))
|
||||
|
||||
|
||||
config.test_format = lit.formats.ShTest(execute_external=False)
|
||||
|
@ -25,19 +26,27 @@ llc_path = os.path.join(config.llvm_tools_dir, 'llc')
|
|||
if os.path.isfile(llc_path):
|
||||
config.available_features.add('llc-binary')
|
||||
llc_arg = '--llc-binary ' + shell_quote(llc_path)
|
||||
add_update_script_substition('update_llc_test_checks', extra_args=llc_arg)
|
||||
add_update_script_substition('update_mir_test_checks', extra_args=llc_arg)
|
||||
add_update_script_substition('%update_llc_test_checks', extra_args=llc_arg)
|
||||
add_update_script_substition('%update_mir_test_checks', extra_args=llc_arg)
|
||||
|
||||
opt_path = os.path.join(config.llvm_tools_dir, 'opt')
|
||||
if os.path.isfile(opt_path):
|
||||
config.available_features.add('opt-binary')
|
||||
opt_arg = '--opt-binary ' + shell_quote(opt_path)
|
||||
add_update_script_substition('update_test_checks', extra_args=opt_arg)
|
||||
add_update_script_substition('update_analyze_test_checks',
|
||||
add_update_script_substition('%update_test_checks', extra_args=opt_arg)
|
||||
add_update_script_substition('%update_analyze_test_checks',
|
||||
extra_args=opt_arg)
|
||||
|
||||
llvm_mca_path = os.path.join(config.llvm_tools_dir, 'llvm-mca')
|
||||
if os.path.isfile(llvm_mca_path):
|
||||
config.available_features.add('llvm-mca-binary')
|
||||
mca_arg = '--llvm-mca-binary ' + shell_quote(llvm_mca_path)
|
||||
add_update_script_substition('update_test_checks', extra_args=mca_arg)
|
||||
add_update_script_substition('%update_test_checks', extra_args=mca_arg)
|
||||
|
||||
clang_path = os.path.join(config.llvm_tools_dir, 'clang')
|
||||
if os.path.isfile(clang_path):
|
||||
config.available_features.add('clang-binary')
|
||||
extra_args = '--clang ' + shell_quote(clang_path)
|
||||
if os.path.isfile(opt_path):
|
||||
extra_args += ' --opt ' + shell_quote(opt_path)
|
||||
add_update_script_substition('%update_cc_test_checks', extra_args=extra_args)
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// Example input for update_cc_test_checks
|
||||
// RUN: %clang_cc1 -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
long test(long a, int b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
// A function with a mangled name
|
||||
__attribute__((overloadable)) long test(long a, int b, int c) {
|
||||
return a + b + c;
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||
// Example input for update_cc_test_checks
|
||||
// RUN: %clang_cc1 -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: @test(
|
||||
// CHECK-NEXT: entry:
|
||||
// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: store i32 [[B:%.*]], i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP1]] to i64
|
||||
// CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[TMP0]], [[CONV]]
|
||||
// CHECK-NEXT: ret i64 [[ADD]]
|
||||
//
|
||||
long test(long a, int b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
// A function with a mangled name
|
||||
// CHECK-LABEL: @_Z4testlii(
|
||||
// CHECK-NEXT: entry:
|
||||
// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: store i32 [[B:%.*]], i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: store i32 [[C:%.*]], i32* [[C_ADDR]], align 4
|
||||
// CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP1]] to i64
|
||||
// CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[TMP0]], [[CONV]]
|
||||
// CHECK-NEXT: [[TMP2:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK-NEXT: [[CONV1:%.*]] = sext i32 [[TMP2]] to i64
|
||||
// CHECK-NEXT: [[ADD2:%.*]] = add nsw i64 [[ADD]], [[CONV1]]
|
||||
// CHECK-NEXT: ret i64 [[ADD2]]
|
||||
//
|
||||
__attribute__((overloadable)) long test(long a, int b, int c) {
|
||||
return a + b + c;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
|
||||
// Example input for update_cc_test_checks
|
||||
// RUN: %clang_cc1 -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: define {{[^@]+}}@test
|
||||
// CHECK-SAME: (i64 [[A:%.*]], i32 [[B:%.*]]) #0
|
||||
// CHECK-NEXT: entry:
|
||||
// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: store i32 [[B:%.*]], i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP1]] to i64
|
||||
// CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[TMP0]], [[CONV]]
|
||||
// CHECK-NEXT: ret i64 [[ADD]]
|
||||
//
|
||||
long test(long a, int b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
// A function with a mangled name
|
||||
// CHECK-LABEL: define {{[^@]+}}@_Z4testlii
|
||||
// CHECK-SAME: (i64 [[A:%.*]], i32 [[B:%.*]], i32 [[C:%.*]]) #0
|
||||
// CHECK-NEXT: entry:
|
||||
// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
|
||||
// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4
|
||||
// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: store i32 [[B:%.*]], i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: store i32 [[C:%.*]], i32* [[C_ADDR]], align 4
|
||||
// CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* [[A_ADDR]], align 8
|
||||
// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[B_ADDR]], align 4
|
||||
// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP1]] to i64
|
||||
// CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[TMP0]], [[CONV]]
|
||||
// CHECK-NEXT: [[TMP2:%.*]] = load i32, i32* [[C_ADDR]], align 4
|
||||
// CHECK-NEXT: [[CONV1:%.*]] = sext i32 [[TMP2]] to i64
|
||||
// CHECK-NEXT: [[ADD2:%.*]] = add nsw i64 [[ADD]], [[CONV1]]
|
||||
// CHECK-NEXT: ret i64 [[ADD2]]
|
||||
//
|
||||
__attribute__((overloadable)) long test(long a, int b, int c) {
|
||||
return a + b + c;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
# These tests require clang.
|
||||
if 'clang-binary' not in config.available_features:
|
||||
config.unsupported = True
|
|
@ -0,0 +1,18 @@
|
|||
## Basic test checking that update_cc_test_checks.py works as expected for
|
||||
## functions with mangled names
|
||||
|
||||
# %update_cc_test_checks is only set if python3 is on the path.
|
||||
# FIXME: Is this the best approach? See discussion on D70660.
|
||||
# REQUIRES: python3
|
||||
|
||||
# RUN: cp -f %S/Inputs/mangled_names.c %t.c && %update_cc_test_checks -v %t.c
|
||||
# RUN: diff -u %t.c %S/Inputs/mangled_names.c.expected
|
||||
## Check that running the script again does not change the result:
|
||||
# RUN: %update_cc_test_checks -v %t.c
|
||||
# RUN: diff -u %t.c %S/Inputs/mangled_names.c.expected
|
||||
## Also try the --function-signature flag
|
||||
# RUN: %update_cc_test_checks %t.c --function-signature
|
||||
# RUN: diff -u %t.c %S/Inputs/mangled_names.c.funcsig.expected
|
||||
## Verify that running without the --function-signature flag removes the -SAME: lines:
|
||||
# RUN: %update_cc_test_checks %t.c
|
||||
# RUN: diff -u %t.c %S/Inputs/mangled_names.c.expected
|
Loading…
Reference in New Issue