[all-commits] [llvm/llvm-project] 08776d: [libc++/libc++abi] Properly delimit lit substitutions

Louis Dionne via All-commits all-commits at lists.llvm.org
Fri Mar 27 07:27:46 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 08776defa583676ac5c19451c6fb4fc184ee16ab
      https://github.com/llvm/llvm-project/commit/08776defa583676ac5c19451c6fb4fc184ee16ab
  Author: Louis Dionne <ldionne at apple.com>
  Date:   2020-03-27 (Fri, 27 Mar 2020)

  Changed paths:
    M libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
    M libcxx/test/libcxx/containers/sequences/vector/exception_safety_exceptions_disabled.sh.cpp
    M libcxx/test/libcxx/depr/depr.c.headers/math_h.sh.cpp
    M libcxx/test/libcxx/double_include.sh.cpp
    M libcxx/test/libcxx/experimental/language.support/support.coroutines/dialect_support.sh.cpp
    M libcxx/test/libcxx/experimental/language.support/support.coroutines/version.sh.cpp
    M libcxx/test/libcxx/include_as_c.sh.cpp
    M libcxx/test/libcxx/input.output/filesystems/class.directory_entry/directory_entry.mods/last_write_time.sh.cpp
    M libcxx/test/libcxx/input.output/filesystems/convert_file_time.sh.cpp
    M libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp
    M libcxx/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp
    M libcxx/test/libcxx/min_max_macros.sh.cpp
    M libcxx/test/libcxx/modules/cinttypes_exports.sh.cpp
    M libcxx/test/libcxx/modules/clocale_exports.sh.cpp
    M libcxx/test/libcxx/modules/cstdint_exports.sh.cpp
    M libcxx/test/libcxx/modules/inttypes_h_exports.sh.cpp
    M libcxx/test/libcxx/modules/stdint_h_exports.sh.cpp
    M libcxx/test/libcxx/modules/stds_include.sh.cpp
    M libcxx/test/libcxx/no_assert_include.sh.cpp
    M libcxx/test/libcxx/numerics/c.math/fdelayed-template-parsing.sh.cpp
    M libcxx/test/libcxx/selftest/exec.sh.cpp
    M libcxx/test/libcxx/selftest/not_test.sh.cpp
    M libcxx/test/libcxx/selftest/test.sh.cpp
    M libcxx/test/libcxx/strings/basic.string/PR42676.sh.cpp
    M libcxx/test/libcxx/utilities/function.objects/abi_bug_cxx03_cxx11_example.sh.cpp
    M libcxx/test/libcxx/utilities/meta/stress_tests/stress_test_is_same.sh.cpp
    M libcxx/test/libcxx/utilities/meta/stress_tests/stress_test_metafunctions.sh.cpp
    M libcxx/test/libcxx/utilities/meta/stress_tests/stress_test_variant_overloads_impl.sh.cpp
    M libcxx/test/pretty_printers/gdb_pretty_printer_test.sh.cpp
    M libcxx/test/std/containers/associative/map/PR28469_undefined_behavior_segfault.sh.cpp
    M libcxx/test/std/depr/depr.c.headers/stdint_h.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_size.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_size_align.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_size_align_nothrow.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_size_nothrow.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_size_align.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_size_align_nothrow.sh.cpp
    M libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp
    M libcxx/test/std/thread/thread.condition/thread.condition.condvarany/wait_terminates.sh.cpp
    M libcxx/utils/libcxx/test/config.py
    M libcxxabi/test/incomplete_type.sh.cpp
    M libcxxabi/test/native/arm-linux-eabi/ttype-encoding-00.pass.sh.s
    M libcxxabi/test/native/arm-linux-eabi/ttype-encoding-90.pass.sh.s

  Log Message:
  -----------
  [libc++/libc++abi] Properly delimit lit substitutions

lit is not very clever when it performs substitution on RUN lines. It
simply looks for a match anywhere in the line (without tokenization)
and replaces it by the expansion. This means that a RUN line containing
e.g. `-verify-ignore-unexpected=note` wouod be expanded to
`-verify-ignore-unexpected=<substitution for not>e`, which is
surprising and nonsensical.

It also means that something like `%compile_module` could be expanded
to `<substitution-for-%compile>_module` or to the correct substitution,
depending on the order in which substitutions are evaluated by lit.

To avoid such problems, it is a good habit to delimit custom substitutions
with some token. This commit does that for all substitutions used in the
libc++ and libc++abi test suites.




More information about the All-commits mailing list