[llvm] 523896f - Bring back the tests for update_cc_tests_checks.py

Alex Richardson via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 30 06:58:38 PST 2020


Author: Alex Richardson
Date: 2020-01-30T14:58:25Z
New Revision: 523896f64a4c4b586a5fbcf676181826d2c0fbd0

URL: https://github.com/llvm/llvm-project/commit/523896f64a4c4b586a5fbcf676181826d2c0fbd0
DIFF: https://github.com/llvm/llvm-project/commit/523896f64a4c4b586a5fbcf676181826d2c0fbd0.diff

LOG: Bring back the tests for update_cc_tests_checks.py

The tests were removed in 287307a0c60b68099d5f9dd22ac1db2a42593533 to
avoid a dependency on python3. update_cc_tests_checks.py also works with
python2 so restore the tests without the python3 dependency.

Added: 
    llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c
    llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.expected
    llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.funcsig.expected
    llvm/test/tools/UpdateTestChecks/update_cc_test_checks/lit.local.cfg
    llvm/test/tools/UpdateTestChecks/update_cc_test_checks/mangled_names.test

Modified: 
    llvm/test/tools/UpdateTestChecks/lit.local.cfg

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/UpdateTestChecks/lit.local.cfg b/llvm/test/tools/UpdateTestChecks/lit.local.cfg
index c72935f0a77f..74164e808e47 100644
--- a/llvm/test/tools/UpdateTestChecks/lit.local.cfg
+++ b/llvm/test/tools/UpdateTestChecks/lit.local.cfg
@@ -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)

diff  --git a/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c
new file mode 100644
index 000000000000..01e42a35e78e
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c
@@ -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;
+}

diff  --git a/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.expected b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.expected
new file mode 100644
index 000000000000..d6ba7ae09b62
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.expected
@@ -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;
+}

diff  --git a/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.funcsig.expected b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.funcsig.expected
new file mode 100644
index 000000000000..ef6340340b10
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/Inputs/mangled_names.c.funcsig.expected
@@ -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;
+}

diff  --git a/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/lit.local.cfg b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/lit.local.cfg
new file mode 100644
index 000000000000..99346daabcb0
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/lit.local.cfg
@@ -0,0 +1,3 @@
+# These tests require clang.
+if 'clang-binary' not in config.available_features:
+    config.unsupported = True

diff  --git a/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/mangled_names.test b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/mangled_names.test
new file mode 100644
index 000000000000..4d2b66f38100
--- /dev/null
+++ b/llvm/test/tools/UpdateTestChecks/update_cc_test_checks/mangled_names.test
@@ -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


        


More information about the llvm-commits mailing list