llvm-toolchain-integration-test-suite/0000775000175000017500000000000014773454057017127 5ustar dokodokollvm-toolchain-integration-test-suite/LICENSE.txt0000664000175000017500000002613614665635536020765 0ustar dokodoko Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. llvm-toolchain-integration-test-suite/.github/0000775000175000017500000000000014665635536020472 5ustar dokodokollvm-toolchain-integration-test-suite/.github/workflows/0000775000175000017500000000000014773454057022524 5ustar dokodokollvm-toolchain-integration-test-suite/.github/workflows/CI.yml0000664000175000017500000001202714773454057023544 0ustar dokodokoname: Build with different version on: push: pull_request: schedule: - cron: "0 2 * * *" jobs: build: runs-on: ${{ matrix.os }} if: github.repository == 'opencollab/llvm-toolchain-integration-test-suite' strategy: fail-fast: false matrix: os: [ubuntu-20.04] version: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] steps: - uses: actions/checkout@v2 - name: Set Ubuntu codename (Bionic) if: ${{ matrix.os == 'ubuntu-18.04'}} run: echo "UBUNTU_CODENAME=bionic" >> $GITHUB_ENV - name: Set Ubuntu codename (Focal) if: ${{ matrix.os == 'ubuntu-20.04'}} run: echo "UBUNTU_CODENAME=focal" >> $GITHUB_ENV - name: Install Dependencies run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - if test ${{ matrix.version }} == 20; then sudo apt-add-repository "deb http://apt.llvm.org/${{ env.UBUNTU_CODENAME }}/ llvm-toolchain-${{ env.UBUNTU_CODENAME }} main" else sudo apt-add-repository "deb http://apt.llvm.org/${{ env.UBUNTU_CODENAME }}/ llvm-toolchain-${{ env.UBUNTU_CODENAME }}-${{ matrix.version }} main" fi if test ${{ matrix.version }} -ge 14 -a ${{ env.UBUNTU_CODENAME }} == "bionic"; then # Recent versions of llvm need a compiler with C++ 20 support. Bionic doesn't have this out of the box. # It requires a more recent version of libstdc++ sudo add-apt-repository ppa:ubuntu-toolchain-r/test fi sudo apt-get update sudo apt-get install -y clang-${{ matrix.version }} clangd-${{ matrix.version }} clang-tidy-${{ matrix.version }} clang-format-${{ matrix.version }} clang-tools-${{ matrix.version }} llvm-${{ matrix.version }}-dev lld-${{ matrix.version }} lldb-${{ matrix.version }} llvm-${{ matrix.version }}-tools libomp-${{ matrix.version }}-dev libc++-${{ matrix.version }}-dev libc++abi-${{ matrix.version }}-dev libclang-common-${{ matrix.version }}-dev libclang-${{ matrix.version }}-dev libclang-cpp${{ matrix.version }}-dev if test ${{ matrix.version }} -gt 11; then sudo apt-get install -y libunwind-${{ matrix.version }}-dev fi # C++ backend for mlir only appeared with LLVM 14 if test ${{ matrix.version }} -gt 13; then sudo apt-get install -y mlir-${{ matrix.version }}-tools libmlir-${{ matrix.version }}-dev fi # Exists only after LLVM 15 if test ${{ matrix.version }} -gt 14; then sudo apt-get install -y libpolly-${{ matrix.version }}-dev fi - name: Run the testsuite shell: bash run: | # temporary workaround # The path to analyze-cc needs to be set, it will be fixed in # future upload of apt.llvm.org export PATH=$PATH:/usr/share/clang/scan-build-py-${{ matrix.version }}/bin/:/usr/lib/llvm-${{ matrix.version }}/libexec mkdir build && cd build LIBUNWIND_ENABLED=ON STATIC_LIBCXX_ENABLED=ON if test ${{ matrix.version }} -lt 12; then # Libunwind has been packaged only from 12 LIBUNWIND_ENABLED=OFF # libc++.a did not link libc++abi.a on old versions STATIC_LIBCXX_ENABLED=OFF fi cmake -DLIT=/usr/lib/llvm-${{ matrix.version }}/build/utils/lit/lit.py \ -DCLANG_BINARY=/usr/bin/clang-${{ matrix.version }} \ -DCLANGXX_BINARY=/usr/bin/clang++-${{ matrix.version }} \ -DCLANG_TIDY_BINARY=/usr/bin/clang-tidy-${{ matrix.version }} \ -DCLANG_FORMAT_BINARY=/usr/bin/clang-format-${{ matrix.version }} \ -DCLANG_FORMAT_DIFF_BINARY=/usr/bin/clang-format-diff-${{ matrix.version }} \ -DCLANGD_BINARY=/usr/bin/clangd-${{ matrix.version }} \ -DLLD_BINARY=/usr/bin/lld-${{ matrix.version }} \ -DLLDB_BINARY=/usr/bin/lldb-${{ matrix.version }} \ -DLLVMCONFIG_BINARY=/usr/bin/llvm-config-${{ matrix.version }} \ -DLLVMOBJDUMP_BINARY=/usr/bin/llvm-objdump-${{ matrix.version }} \ -DOPT_BINARY=/usr/bin/opt-${{ matrix.version }} \ -DSCANBUILD=/usr/bin/scan-build-${{ matrix.version }} \ -DSCANBUILDPY=/usr/bin/scan-build-py-${{ matrix.version }} \ -DCLANG_TIDY_BINARY=/usr/bin/clang-tidy-${{ matrix.version }} \ -DSCANVIEW=/usr/bin/scan-view-${{ matrix.version }} \ -DLLVMNM=/usr/bin/llvm-nm-${{ matrix.version }} \ -DLLC=/usr/bin/llc-${{ matrix.version }} \ -DLLI=/usr/bin/lli-${{ matrix.version }} \ -DOPT=/usr/bin/opt-${{ matrix.version }} \ -DMLIRTRANSLATE=/usr/bin/mlir-translate-${{ matrix.version }} \ -DLLVMPROFDATA=/usr/bin/llvm-profdata-${{ matrix.version }} \ -DENABLE_COMPILER_RT=ON \ -DENABLE_LIBCXX=ON \ -DENABLE_STATIC_LIBCXX=$STATIC_LIBCXX_ENABLED \ -DENABLE_LIBUNWIND=$LIBUNWIND_ENABLED \ ../ # debug the output cat tests/lit.site.cfg make check llvm-toolchain-integration-test-suite/.github/workflows/fedora.yml0000664000175000017500000000174014773454057024511 0ustar dokodokoname: Build on fedora on: push: pull_request: jobs: build: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: fedora-version: [40, 41, rawhide] container: image: "fedora:${{matrix.fedora-version}}" # These options are required to be able to run lldb inside the container options: "--cap-add=SYS_PTRACE --security-opt seccomp=unconfined" steps: - uses: actions/checkout@v2 - name: Install Dependencies run: | sudo dnf install -y llvm-devel clang-devel cmake make python3-lit \ lld lldb clang-analyzer clang-tools-extra gcc gcc-c++ \ libcxx-devel compiler-rt libstdc++-devel \ glibc-static libcxx-static libstdc++-static mlir mlir-devel \ llvm-libunwind llvm-libunwind-devel binutils-gold - name: Run the testsuite run: | mkdir build && cd build cmake .. cmake --build . --target check -v llvm-toolchain-integration-test-suite/.github/workflows/archlinux.yml0000664000175000017500000000125414665635536025251 0ustar dokodokoname: Build on Arch Linux on: push: pull_request: jobs: build: runs-on: ubuntu-20.04 strategy: fail-fast: false container: image: "archlinux" # These options are required to be able to run lldb inside the container options: "--cap-add=SYS_PTRACE --security-opt seccomp=unconfined" steps: - uses: actions/checkout@v2 - name: Install Dependencies run: pacman -Syu --noconfirm llvm clang cmake make lld lldb gcc libc++ openmp - name: Run the testsuite run: | mkdir build && cd build cmake .. -DENABLE_LIBUNWIND=OFF -DENABLE_STATIC_LIBCXX=OFF cmake --build . --target check -v llvm-toolchain-integration-test-suite/README.rst0000664000175000017500000000432214665635536020622 0ustar dokodokoLLVM Toolchain Integration Test Suite ##################################### An agglomeration of integration tests for the `LLVM Toolchain `_. Unlike the various existing llvm testing suites, this is meant to be used in an installed environment to detect packaging issues. This is an initiative started by Debian/Ubuntu and Fedora maintainers to agregate the testing effort. Hopefully, this project will be also a forcing function to bring more consistency in the LLVM toolchain packaging. Requirements ------------ The `lit `_ tool is used to run the tests and `cmake `_ is used for the configuration step. Usage ----- From source directory: .. code-block:: sh > mkdir _build && cd _build > cmake .. > make check Sensible configuration variables -------------------------------- - ``LIT``: path to the lit program - ``CLANG_BINARY``: path to the clang binary to check - ``CLANGXX_BINARY``: path to the clang++ binary to check - ``CLANG_TIDY_BINARY``: path to the clang tidy binary to check - ``LLD_BINARY``: path to the lld binary to check - ``LLDB_BINARY``: path to the lldb binary to check - ``ENABLE_COMPILER_RT``: ON (the default) if we assume compiler-rt is available - ``ENABLE_LIBCXX``: ON (the default) if we assume libc++ is available - ``ENABLE_STATIC_LIBCXX``: ON (the default) if we assume libc++.a is available - ``ENABLE_LIBUNWIND``: ON (the default) if we assume libunwind is available - ``ENABLE_HWASAN``: Run hwasan tests. Autodetected based on the host system. - ``ENABLE_LIBOMP``: Run libomp tests. Autodetected based on the system. It can be manually forced via `-DENABLE_LIBOMP=` at cmake configure time Writing new tests ----------------- Just drop a new file under ``tests/``, using the lit format. Please use the following substitutions and requirements: Lit substitutions +++++++++++++++++ - ``%clang`` - ``%clangxx`` - ``%clang-tidy`` - ``%lldb`` - ``%lld`` - ``%scan-build`` - ``%scan-view`` - ``%scan-build-py`` requirements ++++++++++++ - clang - clangxx - clang-tidy - lldb - lld - scanbuild - scanbuild-py - scanview License ------- See LICENSE.txt llvm-toolchain-integration-test-suite/test_tagged_addr_abi_support.c0000664000175000017500000000062114665635536025170 0ustar dokodoko/* * This simple program checks if the kernel running the testsuite has support * for tagged address ABI, needed to test hardware assisted address sanitizer. * https://www.kernel.org/doc/html/next/arm64/tagged-address-abi.html * * The program returns 0 if the kernel supports tagged address ABI. */ #include int main(void) { return prctl(PR_GET_TAGGED_ADDR_CTRL, 0,0,0,0); } llvm-toolchain-integration-test-suite/tests/0000775000175000017500000000000014773454057020271 5ustar dokodokollvm-toolchain-integration-test-suite/tests/llvm_config_libs.cpp0000664000175000017500000000067614665635536024321 0ustar dokodoko// Test if llvm-config correctly finds headers and libs // RUN: %clangxx `%llvm-config --cxxflags --ldflags --libs` %s -o %t // RUN: %clangxx `%llvm-config --link-shared --cxxflags --ldflags --libs` %s -o %t // // Check that warnings are not exported // RUN: %llvm-config --cxxflags | grep -v " \-W" // // REQUIRES: clangxx, llvm-config #include int main(int argc, char** argv) { llvm::LLVMContext ctxt; return 0; } llvm-toolchain-integration-test-suite/tests/libc++_static_shared.cpp0000664000175000017500000000060614665635536024736 0ustar dokodoko// Test libc++ static library linking into a shared library. // See https://bugzilla.redhat.com/show_bug.cgi?id=2186531 // // RUN: %clangxx -c -o %t.o -fPIC %s // RUN: %clangxx -fuse-ld=lld -nostdlib++ -Wl,-Bstatic -lc++ -Wl,-Bdynamic -stdlib=libc++ -shared -o %t %t.o // // REQUIRES: clangxx, lld, static-libc++ #include extern void test_shared() { std::get_terminate(); } llvm-toolchain-integration-test-suite/tests/scanbuild_missing_delete.cpp0000664000175000017500000000060114665635536026014 0ustar dokodoko// Tests scan-view runs correctly, see https://bugzilla.redhat.com/show_bug.cgi?id=1647130 // REQUIRES: scan-build, scan-view // RUN: rm -rf %t.out && mkdir %t.out && cd %t.out && rm -rf * // RUN: %scan-build -o . %clangxx -c %s -o %t // RUN: %scan-view --no-browser * & WPID=$! && sleep 5 && kill $WPID int main(int argc, char *argv[]) { while (argc--) new int(); return 0; } llvm-toolchain-integration-test-suite/tests/plugins_newpm.txt0000664000175000017500000000234214773454057023722 0ustar dokodoko# Tests LLVM pass using new pass manager. Based on https://llvm.org/docs/WritingAnLLVMNewPMPass.html # RUN: rm -rf %t # RUN: mkdir -p %t/_build # RUN: cat %s > %t/CMakeLists.txt # RUN: cp %S/Inputs/llvm_newpm_pass.cpp %t # RUN: cd %t/_build # RUN: %cmake .. -DCMAKE_C_COMPILER=%cc -DCMAKE_CXX_COMPILER=%cxx -DLLVM_DIR=`%llvm-config --cmakedir` # RUN: %cmake --build . # RUN: %clang -emit-llvm -O3 -c %S/Inputs/foo.c -o llvm-ir.bc # RUN: %opt -load-pass-plugin=./HelloPass.so -disable-output ./llvm-ir.bc -passes=hellonewpm 2> %t.output # RUN: grep "Function name: foo" %t.output # REQUIRES: opt, clang cmake_minimum_required(VERSION 3.5.0) project(TestLLVMPass) find_package(LLVM REQUIRED CONFIG) list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}") include(AddLLVM) # Starting LLVM 16, std=c++17 is required if(LLVM_PACKAGE_VERSION VERSION_GREATER_EQUAL "16.0.0") set(CMAKE_CXX_STANDARD 17 CACHE STRING "") else() set(CMAKE_CXX_STANDARD 14 CACHE STRING "") endif() add_llvm_library(HelloPass MODULE llvm_newpm_pass.cpp) # Add LLVM headers filled from find_package target_include_directories(HelloPass PRIVATE ${LLVM_INCLUDE_DIRS} ) # LLVM's compile definitions target_compile_definitions(HelloPass PRIVATE ${LLVM_DEFINITIONS} ) llvm-toolchain-integration-test-suite/tests/test_asan_libc++.cpp0000664000175000017500000000054414773454057024100 0ustar dokodoko// Make sure that libc++ and asan work correctly // can be caused by -Bsymbolic-functions // https://github.com/llvm/llvm-project/issues/59432 // RUN: %clangxx -xc++ - -stdlib=libc++ -fsanitize=address %s -o %t // RUN: %t // REQUIRES: clang, compiler-rt, libc++ // #include int main() { #if CLANG_MAJOR > 18 std::logic_error(""); #endif } llvm-toolchain-integration-test-suite/tests/save-optimization-record.c0000664000175000017500000000171514665635536025402 0ustar dokodoko// Test the fsave-optimization-record option and tha tthe file isn't empty // Make sure that https://bugs.llvm.org/show_bug.cgi?id=51642 // doesn't happen again // // RUN: mkdir -p %t/test && cd %t/test // RUN: %clang -S -O2 -fsave-optimization-record -emit-llvm %s -o save-optimization-record.c.opt // RUN: test -s save-optimization-record.c.opt.yaml // REQUIRES: clang // marking it as failing util the bug is addressed #define N 1536 float A[N][N]; float B[N][N]; float C[N][N]; void init_array() { int i, j; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { A[i][j] = (1+(i*j)%1024)/2.0; B[i][j] = (1+(i*j)%1024)/2.0; } } } int main() { int i, j, k; double t_start, t_end; init_array(); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { C[i][j] = 0; for (k = 0; k < N; k++) C[i][j] = C[i][j] + A[i][k] * B[k][j]; } } return 0; } llvm-toolchain-integration-test-suite/tests/from_chars_libc++.cpp0000664000175000017500000000077014665635536024246 0ustar dokodoko// Test charconv integration, see https://bugzilla.redhat.com/show_bug.cgi?id=1657544 // But uses libc++ // REQUIRES: clang, libc++ // RUN: %clangxx -stdlib=libc++ %s -o %t // RUN: %t 100 | grep 100 #include #include #include using namespace std; int main(int argc, char **argv) { size_t r=0; const char *begin = argv[1]; const char *end = begin + strlen(begin); from_chars(begin, end, r); cout << r << '\n'; return 0; } llvm-toolchain-integration-test-suite/tests/clang_format.c0000664000175000017500000000031714665635536023075 0ustar dokodoko// Test clang-format availability // // RUN: %clang-format %s | grep -E '^#include ' // REQUIRES: clang-format #include int main() { puts("hello" "world") ; return 0; } llvm-toolchain-integration-test-suite/tests/hello.mlir0000664000175000017500000000060114773454057022256 0ustar dokodoko// REQUIRES: clang, mlir-translate, llvm-config // RUN: if `%llvm-config --version | grep -qE '^14\.'`; then sed 's/func.func/func/' %s; else cat %s; fi | %mlir-translate --mlir-to-cpp > %t.c // RUN: %clang %t.c -o %t // RUN: %t module { emitc.include <"stdint.h"> func.func @main() -> i32 { %ret = "emitc.constant"(){value = 0 : i32} : () -> i32 return %ret : i32 } } llvm-toolchain-integration-test-suite/tests/include_limits.c0000664000175000017500000000022314665635536023441 0ustar dokodoko// Test includes limits.h https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=913213 // // REQUIRES: clang // RUN: %clang -E %s #include llvm-toolchain-integration-test-suite/tests/code_coverage.cpp0000664000175000017500000000060414665635536023565 0ustar dokodoko// Test code coverage // // RUN: mkdir -p %t/test && cd %t/test // RUN: %clang --coverage %s -o foo // RUN: ./foo // RUN: test -f code_coverage.gcno -o -f foo-code_coverage.gcno // RUN: test -f code_coverage.gcda -o -f foo-code_coverage.gcda // REQUIRES: clang #include int main() { if (1==1) { printf("true"); } else { printf("false"); return 42; } return 0; } llvm-toolchain-integration-test-suite/tests/basic_lldb2.in0000664000175000017500000000002414665635536022760 0ustar dokodokob main r n p a quit llvm-toolchain-integration-test-suite/tests/basic_openmp.c0000664000175000017500000000046314665635536023102 0ustar dokodoko// Test OpenMP headers and lib detection // // RUN: %clang -fopenmp %s -o %t // RUN: %t | grep "Num Threads: 1" // REQUIRES: clang, libomp #include #include int main(int argc, char **argv) { int nthreads = omp_get_num_threads(); printf("Num Threads: %d\n", nthreads); return 0; } llvm-toolchain-integration-test-suite/tests/basic_lib++.cpp0000664000175000017500000000133014665635536023032 0ustar dokodoko// Test libc++ headers and lib detection // // RUN: %clangxx -stdlib=libc++ %s -o %t // RUN: %t // ldd %t 2>&1|grep -q libc++.so.1 // ldd %t 2>&1|grep -q libc++abi.so.1 // RUN: %clangxx -std=c++11 -stdlib=libc++ %s -o %t // RUN: %t // RUN: %clangxx -std=c++14 -stdlib=libc++ %s -o %t // RUN: %t // RUN: %clangxx -std=c++17 -stdlib=libc++ %s -o %t // RUN: %t // REQUIRES: clangxx, libc++ #include #include #include using namespace std; int main(void) { vector tab; tab.push_back("the"); tab.push_back("world"); tab.insert(tab.begin(), "Hello"); for(vector::iterator it=tab.begin(); it!=tab.end(); ++it) { cout << *it << " "; } return 0; } llvm-toolchain-integration-test-suite/tests/lit.site.cfg.in0000664000175000017500000000427614665635536023126 0ustar dokodokoimport os import lit config.name = 'LLVM regression suite' config.test_format = lit.formats.ShTest(True) config.suffixes = ['.ll', '.c', '.cpp', '.test', '.txt', '.s', '.mir', '.mlir'] config.test_source_root = os.path.join("@CMAKE_CURRENT_SOURCE_DIR@", "tests") config.excludes = ['Inputs'] config.available_features.add("@CMAKE_HOST_SYSTEM_PROCESSOR@") def enable_feature(name, option): if option.lower() in ('on', 1): config.available_features.add(name) def enable_program(name, binary): if os.path.exists(binary): config.available_features.add(name) config.substitutions.append(('%'+name, binary)) def enable_library(name, library): if os.path.exists(library): config.available_features.add(name) # The order matters, e.g. substitution for clang-format-diff # must appear before clang-format, because the latter is a prefix of the former. enable_program('cc', "@CMAKE_C_COMPILER@") enable_program('cxx', "@CMAKE_CXX_COMPILER@") enable_program('clang-tidy', "@CLANG_TIDY_BINARY@") enable_program('clang-format-diff', "@CLANG_FORMAT_DIFF_BINARY@") enable_program('clang-format', "@CLANG_FORMAT_BINARY@") enable_program('clangd', "@CLANGD_BINARY@") enable_program('clangxx', "@CLANGXX_BINARY@") enable_program('clang', "@CLANG_BINARY@") enable_program('llvm-nm', "@LLVMNM@") enable_program('llc', "@LLC@") enable_program('lli', "@LLI@") enable_program('opt', "@OPT@") enable_program('llvm-profdata', "@LLVMPROFDATA@") enable_program('llvm-config', "@LLVMCONFIG_BINARY@") enable_program('llvm-objdump', "@LLVMOBJDUMP_BINARY@") enable_program('lldb', "@LLDB_BINARY@") enable_program('lld', "@LLD_BINARY@") enable_program('scan-build-py', "@SCANBUILDPY@") enable_program('scan-build', "@SCANBUILD@") enable_program('scan-view', "@SCANVIEW@") enable_program('opt', "@OPT_BINARY@") enable_program('mlir-translate', "@MLIRTRANSLATE@") enable_library('libomp', "@LIBOMP@") config.substitutions.append(('%cmake', '@CMAKE_COMMAND@')) enable_feature("compiler-rt", "@ENABLE_COMPILER_RT@") enable_feature("libc++", "@ENABLE_LIBCXX@") enable_feature("static-libc++", "@ENABLE_STATIC_LIBCXX@") enable_feature("libunwind", "@ENABLE_LIBUNWIND@") enable_feature("support_hwasan", "@ENABLE_HWASAN@") llvm-toolchain-integration-test-suite/tests/unwind.cpp0000664000175000017500000000102014665635536022275 0ustar dokodoko// Test libunwind - only packaged from -12 // // REQUIRES: clang, libunwind, llvm-nm // NOTE: the extra -L flag is only required by Fedora // RUN: %clangxx %s -o %t.llvm -unwindlib=libunwind -rtlib=compiler-rt -L/usr/lib64/llvm-unwind // RUN: %llvm-nm %t.llvm | grep _Unwind_Resume // RUN: %t.llvm // XFAIL: s390x struct f { ~f() { }}; int foo(int n) { f _; if(n > 2) throw int(); return 0; } int main(int argc, char** argv) { try { return foo(argc); } catch(...) { return 0; } } llvm-toolchain-integration-test-suite/tests/basic_lldb.c0000664000175000017500000000025514665635536022520 0ustar dokodoko// RUN: %clang -g -o %t %s // RUN: %lldb -s %S/basic_lldb.in %t | grep "main at basic_lldb.c:" // REQUIRES: lldb, clang // XFAIL: ppc64 int main() { int a=0; return a; } llvm-toolchain-integration-test-suite/tests/rpass_inline.cpp0000664000175000017500000000071514665635536023471 0ustar dokodoko// Test a Rpass=inline (parse the output) // // RUN: %clangxx -O2 -Rpass=inline %s -c &> %t.log // RUN: grep -q -E "(inlined into main with|inlined into 'main' with|cost=always)" %t.log // REQUIRES: clangxx int foo(int x, int y) __attribute__((always_inline)); int foo(int x, int y) { return x + y; } int bar(int j) { return foo(j, j - 2); } int sum = 0; int main(int argc, const char *argv[]) { for (int i = 0; i < 30; i++) bar(argc); return sum; } llvm-toolchain-integration-test-suite/tests/partial-toolchain.cpp0000664000175000017500000000042014665635536024406 0ustar dokodoko// Tests all components of the toolchain // REQUIRES: clang, lld, libc++ // RUN: %clangxx -fuse-ld=lld -stdlib=libc++ %s -o %t // RUN: %t | grep "Hello World" #include int main(int argc, char **argv) { std::cout << "Hello World" << std::endl; return 0; } llvm-toolchain-integration-test-suite/tests/whole-toolchain.c0000664000175000017500000000054314665635536023536 0ustar dokodoko// Tests all components of the toolchain // REQUIRES: clang, lld, compiler-rt // RUN: %clang -fuse-ld=lld -rtlib=compiler-rt %s -o %t // RUN: %t | grep "Hello World" // s390x now runs but fails because it does not support compiler-rt builtins. // XFAIL: s390x #include int main(int argc, char **argv) { printf("Hello World\n"); return 0; } llvm-toolchain-integration-test-suite/tests/whole-toolchain.cpp0000664000175000017500000000107314665635536024075 0ustar dokodoko// Tests all components of the toolchain // REQUIRES: clang, lld, compiler-rt, libc++ // // NOTE: Adding -lgcc_eh here is required to provide unwinding information. An // alternative would be to force usage of LLVM unwinder when building compiler-rt. // RUN: %clangxx -fuse-ld=lld -rtlib=compiler-rt -stdlib=libc++ -lgcc_eh %s -o %t // RUN: %t | grep "Hello World" // s390x now runs but fails because it does not support compiler-rt builtins. // XFAIL: s390x #include int main(int argc, char **argv) { std::cout << "Hello World" << std::endl; return 0; } llvm-toolchain-integration-test-suite/tests/basic_lib++2.cpp0000664000175000017500000000061514665635536023121 0ustar dokodoko// Test a libc++ issues reported https://bugs.launchpad.net/ubuntu/+source/libc++/+bug/1586215 // // RUN: %clangxx -stdlib=libc++ -Wall -Werror %s -o %t // RUN: %t // REQUIRES: clangxx, libc++ #include #include int main() { try { std::string x; char z = x.at(2); std::cout << z << std::endl; } catch (...) { } return 0; } llvm-toolchain-integration-test-suite/tests/openmp_tools.c0000664000175000017500000000217714665635536023165 0ustar dokodoko// Test OpenMP Tools support // RUN: %clang -fopenmp -DTOOLS %s -shared -o %t_Tools.so // RUN: %clang -fopenmp -UTOOLS %s -o %t // RUN: OMP_TOOL_LIBRARIES=%t_Tools.so %t | grep "INIT" // REQUIRES: clang, libomp #ifdef TOOLS // OpenMP Tools are only supported starting OpenMP 5 #if _OPENMP >= 201811 #include #include int ompt_initialize( ompt_function_lookup_t lookup, int initial_device_num, ompt_data_t *data) { puts("[INIT]"); return 1; } void ompt_finalize(ompt_data_t* data) { puts("[FINAL]"); } ompt_start_tool_result_t* ompt_start_tool( unsigned int omp_version, const char *runtime_version) { printf("[START] %s, OMP%u\n", runtime_version, omp_version); static ompt_start_tool_result_t ompt_start_tool_result = {&ompt_initialize, &ompt_finalize, {.ptr=NULL}}; return &ompt_start_tool_result; } #endif #else #include int main() { #pragma omp parallel #pragma omp single { // if we don't have support for ompt, default to an output that satisfies // the test check #if _OPENMP < 201811 puts("INIT"); #else puts("hello"); #endif } return 0; } #endif llvm-toolchain-integration-test-suite/tests/buildid.c0000664000175000017500000000066014665635536022056 0ustar dokodoko// Checks that we generate BuildID // // REQUIRES: clang, lld, llvm-objdump // RUN: %clang -fuse-ld=lld -flto -O2 %S/Inputs/foo.c %s -o %t // RUN: %t // RUN: %llvm-objdump -s %t|grep note.gnu.build-id // RUN: %clang -O2 %S/Inputs/foo.c %s -o %t // RUN: %t // RUN: %llvm-objdump -s %t|grep note.gnu.build-id // RUN: strip %t // RUN: %llvm-objdump -s %t|grep note.gnu.build-id int foo(void); int main() { foo(); return 0; } llvm-toolchain-integration-test-suite/tests/Inputs/0000775000175000017500000000000014665635536021556 5ustar dokodokollvm-toolchain-integration-test-suite/tests/Inputs/llvm_newpm_pass.cpp0000664000175000017500000000347614665635536025502 0ustar dokodoko//=== Example code from "Writing an LLVM Pass" ----------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements a simple LLVM Pass using the new pass manager, based on // the version described in docs/WritingAnLLVMNewPMPass.html // //===----------------------------------------------------------------------===// #include "llvm/IR/PassManager.h" #include "llvm/Passes/PassBuilder.h" #include "llvm/Passes/PassPlugin.h" #include "llvm/Support/raw_ostream.h" namespace llvm { class HelloWorldNewPMPass : public PassInfoMixin { public: PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); static bool isRequired() { return true; } }; PreservedAnalyses HelloWorldNewPMPass::run( Function &F, FunctionAnalysisManager &AM) { errs() << "Function name: " << F.getName() << "\n"; return PreservedAnalyses::all(); } // Documented in https://llvm.org/doxygen/PassPlugin_8h_source.html extern "C" ::llvm::PassPluginLibraryInfo LLVM_ATTRIBUTE_WEAK llvmGetPassPluginInfo() { return { LLVM_PLUGIN_API_VERSION, "HelloWorldNewPM", "v0.1", [](PassBuilder &PB) { PB.registerPipelineParsingCallback( [](StringRef Name, FunctionPassManager &FPM, ArrayRef) { if (Name == "hellonewpm") { FPM.addPass(HelloWorldNewPMPass()); return true; } return false; } ); } }; } } // namespace llvm llvm-toolchain-integration-test-suite/tests/Inputs/foo.c0000664000175000017500000000003514665635536022503 0ustar dokodokoint foo(void) { return 0; } llvm-toolchain-integration-test-suite/tests/Inputs/clangd.json0000664000175000017500000000170214665635536023701 0ustar dokodoko{ "jsonrpc": "2.0", "id": 0, "method": "initialize", "params": { "capabilities": { "textDocument": { "completion": { "completionItem": { "snippetSupport": true } } } }, "trace": "off" } } --- { "jsonrpc": "2.0", "method": "textDocument/didOpen", "params": { "textDocument": { "uri": "test:///main.cpp", "languageId": "cpp", "version": 1, "text": "int func_with_args(int a, int b);\nint main() {\nfunc_with\n}" } } } --- { "jsonrpc": "2.0", "id": 1, "method": "textDocument/completion", "params": { "textDocument": { "uri": "test:///main.cpp" }, "position": { "line": 2, "character": 7 } } } --- { "jsonrpc": "2.0", "id": 4, "method": "shutdown" } --- { "jsonrpc": "2.0", "method": "exit" } llvm-toolchain-integration-test-suite/tests/llvm-ir.c0000664000175000017500000000047714665635536022032 0ustar dokodoko// Test LLVM IR // RUN: %clang -S -emit-llvm %s -o %t.ll // RUN: %llc %t.ll && touch %t.s // RUN: %lli %t.ll | grep -q "lli foo" // RUN: %opt -S -O3 %t.ll -o %t.opt.ll // RUN: %lli %t.opt.ll | grep -q "lli foo" // REQUIRES: clang, llc, lli, opt #include int main() { printf("lli foo\n"); return 0; } llvm-toolchain-integration-test-suite/tests/test_tsan.c0000664000175000017500000000120214665635536022437 0ustar dokodoko// Test tsan with config variables // // REQUIRES: clang, llvm-nm, compiler-rt // RUN: %clang -o %t -fsanitize=thread -g -O1 %s // RUN: %llvm-nm %t | grep __tsan // RUN: env TSAN_OPTIONS="log_path=stdout:exitcode=0" %t 2>&1 > %t.out // RUN: grep -q "data race" %t.out // XFAIL: arm, i686, i386 #include #include int Global; void *Thread1(void *x) { Global++; return NULL; } void *Thread2(void *x) { Global--; return NULL; } int main() { pthread_t t[2]; pthread_create(&t[0], NULL, Thread1, NULL); pthread_create(&t[1], NULL, Thread2, NULL); pthread_join(t[0], NULL); pthread_join(t[1], NULL); } llvm-toolchain-integration-test-suite/tests/basic_lldb2.cpp0000664000175000017500000000033614665635536023142 0ustar dokodoko// RUN: %clangxx -g -o %t %s // RUN: %lldb -s %S/basic_lldb2.in %t | grep "stop reason = step over" // REQUIRES: lldb, clangxx // XFAIL: ppc64 #include int main (void) { std::vector a; a.push_back (0); } llvm-toolchain-integration-test-suite/tests/test_ubsan.c0000664000175000017500000000054314665635536022611 0ustar dokodoko// Test ubsan with config variables // // REQUIRES: clang, llvm-nm, compiler-rt // RUN: %clang -o %t -fsanitize=undefined -g -O1 %s // RUN: env UBSAN_OPTIONS="log_path=stdout:exitcode=0" %t 2>&1 > %t.out // RUN: grep "cannot be represented in type" %t.out // XFAIL: arm int main(int argc, char **argv) { int k = 0x7fffffff; k += argc; return 0; } llvm-toolchain-integration-test-suite/tests/test_hwasan.c0000664000175000017500000000070014665635536022755 0ustar dokodoko// Test hwasan use after free -- aarch64 only. // // REQUIRES: clang, compiler-rt, support_hwasan // RUN: %clang -o %t -fsanitize=hwaddress -g %s // RUN: env HWASAN_OPTIONS="log_path=stdout:exitcode=0" %t 2>&1 > %t.out // RUN: grep -q "HWAddressSanitizer: tag-mismatch" %t.out // RUN: grep -q "Cause: use-after-free" %t.out #include int main() { int *p = malloc(sizeof(int)); free(p); // The memory is leaked here. return *p; } llvm-toolchain-integration-test-suite/tests/plugins.cpp0000664000175000017500000000412714665635536022465 0ustar dokodoko// RUN: %cxx `%llvm-config --cxxflags` -fPIC -shared %s -o Hello.so // RUN: %opt -load ./Hello.so -help | grep "Hello World Pass" // REQUIRES: opt, llvm-config //===- Hello.cpp - Example code from "Writing an LLVM Pass" ---------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements two versions of the LLVM "Hello World" pass described // in docs/WritingAnLLVMPass.html // //===----------------------------------------------------------------------===// #include "llvm/ADT/Statistic.h" #include "llvm/IR/Function.h" #include "llvm/Pass.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; #define DEBUG_TYPE "hello" STATISTIC(HelloCounter, "Counts number of functions greeted"); namespace { // Hello - The first implementation, without getAnalysisUsage. struct Hello : public FunctionPass { static char ID; // Pass identification, replacement for typeid Hello() : FunctionPass(ID) {} bool runOnFunction(Function &F) override { ++HelloCounter; errs() << "Hello: "; errs().write_escaped(F.getName()) << '\n'; return false; } }; } char Hello::ID = 0; static RegisterPass X("hello", "Hello World Pass"); namespace { // Hello2 - The second implementation with getAnalysisUsage implemented. struct Hello2 : public FunctionPass { static char ID; // Pass identification, replacement for typeid Hello2() : FunctionPass(ID) {} bool runOnFunction(Function &F) override { ++HelloCounter; errs() << "Hello: "; errs().write_escaped(F.getName()) << '\n'; return false; } // We don't modify the program, so we preserve all analyses. void getAnalysisUsage(AnalysisUsage &AU) const override { AU.setPreservesAll(); } }; } char Hello2::ID = 0; static RegisterPass Y("hello2", "Hello World Pass (with getAnalysisUsage implemented)"); llvm-toolchain-integration-test-suite/tests/lto_and_gold.c0000664000175000017500000000057314665635536023072 0ustar dokodoko// Test LTO support within ld.gold // REQUIRES: clang // RUN: %clang -c -flto %s -DLIB -o %t-obj.o // RUN: %clang -c -flto %s -ULIB -o %t-main.o // RUN: %clang -fuse-ld=gold -flto %t-obj.o %t-main.o -o %t // RUN: %t | grep "hello lita" #ifdef LIB #include void greet() { puts("hello lita"); } #else extern void greet(); int main() { greet(); return 0; } #endif llvm-toolchain-integration-test-suite/tests/scanbuild_py.cpp0000664000175000017500000000022414665635536023452 0ustar dokodoko// RUN: %clang -fsyntax-only %s int bad_guy(int * i) { *i = 9; return *i; } void bad_guy_test() { int * ptr = 0; bad_guy(ptr); } llvm-toolchain-integration-test-suite/tests/atomic_fetch.c0000664000175000017500000000032714665635536023067 0ustar dokodoko// Test atomic_init() https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903709 // // REQUIRES: clang // RUN: %clang -c %s #include void increment(atomic_size_t *arg) { atomic_fetch_add(arg, 1); } llvm-toolchain-integration-test-suite/tests/code_profiling.cpp0000664000175000017500000000064014665635536023763 0ustar dokodoko// Test code coverage // // RUN: %clang -fprofile-instr-generate %s -o foo // RUN: LLVM_PROFILE_FILE="foo.profraw" ./foo // RUN: %llvm-profdata merge -output=foo.profdata foo.profraw // RUN: %clang -fprofile-instr-use=foo.profdata %s -o foo // RUN: ./foo // REQUIRES: clang, llvm-profdata #include int main() { if (1==1) { printf("true"); } else { printf("false"); return 42; } return 0; } llvm-toolchain-integration-test-suite/tests/format_diff.c0000664000175000017500000000053214665635536022720 0ustar dokodoko// Make sure clang-format-diff works as expected // // REQUIRES: clang-format-diff, clang // RUN: %clang -E -Wp,-P %s -DV0 > %t.0.c // RUN: %clang -E -Wp,-P %s -DV1 > %t.1.c // RUN: diff -u %t.0.c %t.1.c || true > %t.patch // RUN: %clang-format-diff -i < %t.patch #if defined(V0) int main() { } #elif defined(V1) int main() { return 0; } #endif llvm-toolchain-integration-test-suite/tests/warning_conversion.c0000664000175000017500000000037314665635536024355 0ustar dokodoko// Test warning conversion https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914201 // // REQUIRES: clang // RUN: %clang -Wconversion -Werror %s #include int main(void) { double f = 2.0; if (isnan(f)) return 1; return 0; } llvm-toolchain-integration-test-suite/tests/test_asan_lc.c0000664000175000017500000000040014665635536023071 0ustar dokodoko// Test asan with lc https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=876973 // // REQUIRES: clang // RUN: %clang -fsanitize=address %s -o %t -lc // RUN: %t #include int main(int argc, char **argv) { printf("Hello world!\n"); return 0; } llvm-toolchain-integration-test-suite/tests/test_clangd.txt0000664000175000017500000000030114665635536023316 0ustar dokodoko# Test clangd # REQUIRES: clangd # RUN: %clangd -lit-test -pch-storage=memory < %S/Inputs/clangd.json &> %s.log # RUN: grep -q '"insertText": "func_with_args(${1:int a}, ${2:int b})",' %s.log llvm-toolchain-integration-test-suite/tests/minimal_mlir_cmake.txt0000664000175000017500000000070314665635536024646 0ustar dokodoko# Test minimal cmake MLIR project # REQUIRES: mlir-translate # RUN: rm -rf %t # RUN: mkdir -p %t/_build # RUN: cat %s > %t/CMakeLists.txt # RUN: cd %t/_build && %cmake .. -DMLIR_DIR=`%llvm-config --libdir`/cmake/mlir cmake_minimum_required(VERSION 3.13.4) project(standalone-dialect LANGUAGES CXX C) set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON) set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to") find_package(MLIR REQUIRED CONFIG) llvm-toolchain-integration-test-suite/tests/lto_and_cfi.c0000664000175000017500000000040114665635536022674 0ustar dokodoko// Test compatibility between lto and CFI, see https://bugzilla.redhat.com/show_bug.cgi?id=1794936 // RUN: %clang -flto -fsanitize=cfi -fvisibility=hidden %s -o %t // REQUIRES: clang, compiler-rt // XFAIL: s390x, ppc64le, ppc64 int main() { return 0; } llvm-toolchain-integration-test-suite/tests/lto_and_lld.c0000664000175000017500000000057314665635536022720 0ustar dokodoko// Test LTO support within lld // REQUIRES: clang, lld // RUN: %clang -c -flto %s -DLIB -o %t-obj.o // RUN: %clang -c -flto %s -ULIB -o %t-main.o // RUN: %clang -fuse-ld=lld -flto %t-obj.o %t-main.o -o %t // RUN: %t | grep "hello lita" #ifdef LIB #include void greet() { puts("hello lita"); } #else extern void greet(); int main() { greet(); return 0; } #endif llvm-toolchain-integration-test-suite/tests/minimal_llvm_cmake.txt0000664000175000017500000000031414773454057024650 0ustar dokodoko# Test minimal cmake LLVM project # RUN: rm -rf %t # RUN: mkdir -p %t/_build # RUN: cat %s > %t/CMakeLists.txt # RUN: cd %t/_build && %cmake .. cmake_minimum_required(VERSION 3.5.0) find_package(LLVM) llvm-toolchain-integration-test-suite/tests/openmp_headers.c0000664000175000017500000000042414665635536023431 0ustar dokodoko// Test OpenMP headers install // // RUN: %clang -fopenmp -E %s -o %t // REQUIRES: clang, libomp #include #if _OPENMP >= 201811 #include // Still not fixed upstream #if 0 #define CLIENT_TOOL_LIBRARIES_VAR "SAMPLE" #include #endif #endif llvm-toolchain-integration-test-suite/tests/basic_clang_tidy.cpp0000664000175000017500000000041414665635536024255 0ustar dokodoko// Test check tidy check // Verify that a checker finds something // // RUN: %clang-tidy -checks='modernize-concat-nested-namespaces' %s -extra-arg=-std=c++17 | grep "nested namespaces can" // REQUIRES: clang-tidy namespace mozilla { namespace dom { void foo(); } } llvm-toolchain-integration-test-suite/tests/gold.c0000664000175000017500000000025714665635536021371 0ustar dokodoko// Test gold support // REQUIRES: clang // RUN: %clang -fuse-ld=gold %s -o %t // RUN: %t #include int main() { puts("I like to std::move(it)"); return 0; } llvm-toolchain-integration-test-suite/tests/from_chars.cpp0000664000175000017500000000072114665635536023123 0ustar dokodoko// Test charconv integration, see https://bugzilla.redhat.com/show_bug.cgi?id=1657544 // // REQUIRES: clang // RUN: %clangxx %s -o %t // RUN: %t 100 | grep 100 #include #include #include using namespace std; int main(int argc, char **argv) { size_t r=0; const char *begin = argv[1]; const char *end = begin + strlen(begin); from_chars(begin, end, r); cout << r << '\n'; return 0; } llvm-toolchain-integration-test-suite/tests/libc++_link_static.cpp0000664000175000017500000000071414665635536024425 0ustar dokodoko// Test lib(std)c++ static // https://bugs.llvm.org/show_bug.cgi?id=43604 // // Check static linking with libstdc++ // RUN: %clangxx -o %t %s -fPIC -pie -static-libstdc++ // RUN: %t // RUN: ldd %t 2>&1|grep -v libstdc++ // // Check static linking with libc++ // RUN: %clangxx -o %t -fPIC %s -pie -stdlib=libc++ -static-libstdc++ -pthread // // REQUIRES: clangxx, static-libc++ #include int main () { std::cout << "Hello World!" << std::endl; } llvm-toolchain-integration-test-suite/tests/test_leaksan.c0000664000175000017500000000051214665635536023113 0ustar dokodoko// Test asan use after free // // REQUIRES: clang // RUN: %clang -o %t -fsanitize=address -g %s // RUN: env ASAN_OPTIONS="log_path=stdout:exitcode=0" %t 2>&1 > %t.out // RUN: grep -q "detected memory leaks" %t.out #include void *p; int main() { p = malloc(7); p = 0; // The memory is leaked here. return 0; } llvm-toolchain-integration-test-suite/tests/lto_and_cross_dso_cfi.c0000664000175000017500000000136514665635536024764 0ustar dokodoko// Test compatibility between lto and CFI with cross -dso enabled // RUN: rm -rf %t.dir // RUN: mkdir %t.dir // RUN: %clang -UMAIN -flto -fsanitize=cfi -fsanitize-cfi-cross-dso -fvisibility=default -fuse-ld=lld %s -shared -o %t.dir/liblocalcrossdso.so // RUN: %clang -DMAIN -flto -fsanitize=cfi -fsanitize-cfi-cross-dso -fvisibility=default -fuse-ld=lld %s -o %t -L%t.dir -llocalcrossdso // RUN: LD_LIBRARY_PATH=%t.dir %t // RUN: rm -f liblocalcrossdso.so // REQUIRES: clang, compiler-rt, lld // XFAIL: s390x, ppc64le, ppc64 #ifdef MAIN #include extern int greet(void(*greeter)(void)); void greeter(void) { puts("hello"); } int main() { return greet(greeter); } #else int greet(void(*greeter)(void)) { greeter(); return 0; } #endif llvm-toolchain-integration-test-suite/tests/thinlto.c0000664000175000017500000000026114665635536022120 0ustar dokodoko// verify that thinlto is available // REQUIRES: clang // RUN: %clang -flto=thin -O2 %S/Inputs/foo.c %s -o %t // RUN: %t int foo(void); int main() { foo(); return 0; } llvm-toolchain-integration-test-suite/tests/libclang_cpp.cpp0000664000175000017500000000262114665635536023416 0ustar dokodoko// Test the link against libclang-cppXX // // REQUIRES: llvm-config // RUN: %cxx -DCLANG_MAJOR=`%llvm-config --version | cut -d . -f 1` -v %s -o %t `%llvm-config --cxxflags --ldflags --libs` -lclang-cpp // RUN: ldd %t 2>&1 > %t.lddoutput // RUN: grep -q libclang-cpp %t.lddoutput #include "clang/Tooling/CommonOptionsParser.h" #include "llvm/Support/CommandLine.h" using namespace clang::tooling; using clang::tooling::CommonOptionsParser; // Apply a custom category to all command-line options so that they are the // only ones displayed. static llvm::cl::OptionCategory MyToolCategory("my-tool options"); int main(int argc, const char **argv) { // CommonOptionsParser constructor will parse arguments and create a // CompilationDatabase. In case of error it will terminate the program. #if CLANG_MAJOR < 13 clang::tooling::CommonOptionsParser OptionsParser(argc, argv, MyToolCategory); #else auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory); if (!ExpectedParser) { // Fail gracefully for unsupported options. llvm::errs() << ExpectedParser.takeError(); return 1; } CommonOptionsParser& OptionsParser = ExpectedParser.get(); #endif // Use OptionsParser.getCompilations() and OptionsParser.getSourcePathList() // to retrieve CompilationDatabase and the list of input file paths. } llvm-toolchain-integration-test-suite/tests/basic_lldb.in0000664000175000017500000000002314665635536022675 0ustar dokodokob main run bt quit llvm-toolchain-integration-test-suite/tests/basic_debuginfo.c0000664000175000017500000000137214665635536023546 0ustar dokodoko// Test that debuginfo produced by clang is compatible with basic dwarf tool // from https://rosettacode.org/wiki/Guess_the_number#C // RUN: %clang -g3 -gdwarf-4 %s -o %t && objdump -g --dwarf-check %t | grep -E 'DWARF Version:\s*4' // REQUIRES: clang #include #include #include int main(void) { srand(time(NULL)); int n = 1 + (rand() % 10); puts("I'm thinking of a number between 1 and 10."); puts("Try to guess it:"); int g; while (1) { if (scanf("%d", &g) != 1) { /* ignore one char, in case user gave a non-number */ char c; scanf("%c", &c); continue; } if (g == n) { puts("Correct!"); return 0; } puts("That's not my number. Try another guess:"); } } llvm-toolchain-integration-test-suite/tests/scanbuild_py_makefile.txt0000664000175000017500000000065614665635536025355 0ustar dokodoko# Test scan-build-py # It seems that scan-build python isn't able to analyze clang raw call # So, creating a Makefile to allow the test # REQUIRES: scan-build-py # RUN: rm -rf %t # RUN: mkdir -p %t # RUN: cp %S/scanbuild_py.cpp %t # RUN: cd %t && %scan-build-py make -f %s|grep "to examine bug reports" # RUN: cd %t && %scan-build-py --intercept-first make -f %s && test -f compile_commands.json all: $(CC) -c scanbuild_py.cpp llvm-toolchain-integration-test-suite/tests/test_asan_heap.c0000664000175000017500000000057114665635536023421 0ustar dokodoko// Test asan use after free // // REQUIRES: clang, compiler-rt // RUN: %clang -o %t -fsanitize=address -O1 -fno-omit-frame-pointer -g %s // RUN: env ASAN_OPTIONS="log_path=stdout:exitcode=0" %t 2>&1 > %t.out // RUN: grep -q "heap-use-after-free" %t.out // XFAIL: arm #include int main() { char *x = (char*)malloc(10 * sizeof(char*)); free(x); return x[5]; } llvm-toolchain-integration-test-suite/.git/0000775000175000017500000000000014773457203017764 5ustar dokodokollvm-toolchain-integration-test-suite/.git/info/0000775000175000017500000000000014665635536020726 5ustar dokodokollvm-toolchain-integration-test-suite/.git/info/exclude0000664000175000017500000000036014665635536022301 0ustar dokodoko# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ llvm-toolchain-integration-test-suite/.git/objects/0000775000175000017500000000000014773457203021415 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/16/0000775000175000017500000000000014773454057021647 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/16/0b39a7409a7a1499c0a439fcf848159e8f98f50000444000175000017500000000133014773454057026672 0ustar dokodokox}To6ggFv.J"Ԗ=IIB*I;v@޻who~:tlv;vzoSNZ N 0-y߹X 5v7G<mTo;lna菁^( Иmz1kCC&r%Vz"(BfC`W4rl1_ 9 <0"0@ijĦ8#8ЧQe"Id64 De?VѦ$K:T;k;D(Wo$(UJ&w$Jterpm @j)|u0\D5XZ KۼZз4I:k܏iUe{t(ڃL![itKӛYΖ?඾Nr 9JID?m{΋ WP<{!q/tW i3g 1'`3jӴ"divj] N~\T<,8is ثu@MZH`+u$(Nzvq*˪EMఊf7<\$-pM)-AHibR?FEYbo^rllvm-toolchain-integration-test-suite/.git/objects/61/0000775000175000017500000000000014773454057021647 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/61/772a6358a2f6e37a4ffe259ddba0d0c63d341b0000444000175000017500000000006414773454057027131 0ustar dokodokox+)JMU06c01촜b7̳=uq߽OϮ~iLllvm-toolchain-integration-test-suite/.git/objects/info/0000775000175000017500000000000014665635536022357 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/02/0000775000175000017500000000000014773454057021642 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/02/b511a9a424c9f41a9d4f6aeb35dbed93f9b2f10000444000175000017500000000342314773454057027272 0ustar dokodokoxmy\e *LRKBjÒcAZB_Z{Egggّٙqg8DxyC\9CHTN0ZP!5^\;w2  +qEМJYs֬ru \!IQ457r867ӣv41Iv v?}x~k/=%8.#$Hi_WMז<dy+#x1.?VVYf4BI|꦳6ɷzzS"`;#:p%bMm=ӚuC^8zG!T"Ly$^Z/+wƬ?޵F$#_PuRʑT 5=gIB 9ιn1k?[Vz>3[08 `l;~s%vܫ+=fDRR! mzBdHƹM5wU?i2U1.𢡊k&m\^$?2S RoIzލ|{uꇁc礪 `J:Ю5#ޡrp[*H9`KI}6a2 T̓h}h=G⺖(K܌柖slg!o aҿEL"ù\۾ctwm#3b}: [;omuHTwOuN=YNK46;kĵm4yh?g`]g>uE7˿*^~!׮f}_VpX D^قS "J-+Xsq*kXbaFeU1}-/ݶkάxԙ0VI`RHY"B;GAG!ӍU/s CbMUIP7_DN?2l5$y]+8RAH;V0!0l?݁e #3Dyٞ#4e3s(\IoxdG47fJFBx/m<}I+a3YXVTKUW'zrʽհ@'1g/64L驲uu< _Txhɋ |*Vf |hm `2&|p9NgG?7x3gj:90Xc2eI59f%Šs6ٷ]5Xoltllvm-toolchain-integration-test-suite/.git/objects/d5/0000775000175000017500000000000014773454057021731 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/d5/52264e85dc02fc437bf140b23fb0fed364e7ed0000444000175000017500000000061314773454057027211 0ustar dokodokox=Oo {S̽Y(Tgl vo~fM}* Vj;*ʴ];8V*ٲ$ D]3VbVD%יƊot;29&xL!$~#<ñ>%)|#Ȯꛚ -R w_ |[<˼Oa;䭶Ug!= ̸,O@ !SMF //?^Lp xq/awE1eO rɚ3س?) 탋i5[m,u(6D;@>qP .JF(7IW)m{36S;gep$?.:~Qo¯\K8 llvm-toolchain-integration-test-suite/.git/objects/44/0000775000175000017500000000000014773454057021650 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/44/110adaa4c18f70bebfa92dbd4a62c749d092ce0000444000175000017500000000036114773454057027334 0ustar dokodokox+)JMU021f01̒$rEWS{{c&҆f&& ξ٩>%z%% /6֙|sY)Ir}*}<]]ʮf̳tt.a1PeA.zE% ךH(n.rdɞ2ԔĔĤ҂djwi:lAXUp_g6vMdllvm-toolchain-integration-test-suite/.git/objects/cb/0000775000175000017500000000000014773454057022005 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/cb/16a575dd953441181992c8528459219fc729b10000444000175000017500000000310214773454057026436 0ustar dokodokoxX{o6;h4:.gqPeIMX#ز-90`(Z{P^$rc#]j S0&CbekX"dr*='>Wi )-HL_>4Blk jJysQ$r3mcL6<Á('E3^)BWesަ!˩քb^EL\SY DUQ?W%и8Ly"dUu|ƱH YB G " JIO9*Х%TsP|Ϋa`T|Ɯa 񤡚Tڢ ghלN4Hv"#'%4{MKa'A(l;I¤I!Ҭbh2*1aR̝< cO#&wXǕiQ&,KT&*U"X/V1w86Tg % x;)I0s]Bx03a4[VfYBIĘ*,A9g38$vP2uGQM5LiKEFQ C&w}vUHx'IDʃ%9:d4&8*lԜDPMGAR㸀!G,\[B nGǃy^xhߚđScˑ>ᖙ~gǸqs0ܦ_)0j#^?~z.NwAgFiׇ1v[7H\0 ScbÓf1.La"ȼRRmFQuˤM _-F^ij H,8Js2`{nBDL$THb^vmڭ^cOXոPFPDY)r3v۟jÅu~c\"lg%vekkq-4],l Ðub6xH @ְ{Q^9HM /.p,,c̗Ơyګ\U牸%TNHYT%$'UnÆQ 1sryAsiQx\ΊLB͆}ݿ Ƹd'"K OP#SHuF71MsDY,_4õV[.:kíbΪT3_2Ns:(u´%Q'+^'llvm-toolchain-integration-test-suite/.git/objects/5b/0000775000175000017500000000000014773454057021727 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/5b/32b2335ecf62068afb795212deac7857cbf8bc0000444000175000017500000000016514773454057027222 0ustar dokodokox+)JMU044f040031Qpԫa(JnRw)O;̷xug[U6UXWZV9o֔sQ&܈ڵ.i.TaZjJ~Q"X]G?ON8|Ql?F0Kllvm-toolchain-integration-test-suite/.git/objects/ba/0000775000175000017500000000000014773454057022003 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/ba/2b1a3349e5664a38dc55de9afaf8620ab42b4f0000444000175000017500000000146714773454057027276 0ustar dokodokoxmҢHSݘf+DVA{?=1cFfd^k⹿P@ /2d3Rb S2 )O%4˜)w2- AaF)\" =3YH&\\_S.a_yIY M `GEdbzS P_ۯhJ}PXW%kႳ~Cw >L$Y$O̶\:iC$i$O:Ob#/VƓ3H+!W? mM]djԽc{jbknGQ>.NB?X/$=$4w1ʮ`Rj'T01ڠp7PZb[pwV߅{+h2a_J+s/> Ϧ iU--lxzg< wmUbԛ{f>%{8=m9t@"l1L%,gJ2.ϹVo6{ <4랒Fr#DÛ;%2*9>))+.K<[OŇ1 eHj>LaK\?;4W_faF>DOYR(CjEx&1YFUT{s C5+Y"g{vmm!@򙡝.n4Q?aTq0c.RY};L`ܴ'j :O->?mdk>u\մb?y OqQUAHiJZvZ c UL!9`(;Q]Qsllvm-toolchain-integration-test-suite/.git/objects/10/0000775000175000017500000000000014773454057021641 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/10/361502ca70e958d92c10221f4580cb7d64baaa0000444000175000017500000000162214773454057026665 0ustar dokodokoxmٮFEWGmue06T16o:JH}9Ҋۺ*6t&RJ5^8xYS"jDeE#Bw@bA5*ɲĒD2H#1/! R%RD%ʪr"ŜK JqKj_(׶KPdQ9?h|p|kڎ>{} >>OG7}@b!@褟&57݀t*P.}1yGuf3=ĀKe8xpKfwz㰣|)&\)8^1O]bhiz$ܣ-ʾgllvm-toolchain-integration-test-suite/.git/objects/72/0000775000175000017500000000000014773454057021651 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/72/638227447766c30ea3aad726e6b4bfcd2335fc0000444000175000017500000000303614773454057027001 0ustar dokodokoxX{o68h.j#pt6D٬eR3/O!BHm"Uޜ,ϲ sUpit_T?[Vjp<_pMxt>vԟ 8l]'Q;l >w;pٺQ'|qZ# \*EС1#Qv.FR!fad Kr˙P4sz_A-  2Y \E`5⬄B2%{8 gM{#lxFo%DV5)Â"4O K/2 6dwݚRKKtp/ Q /T1 "4Nir&Ykc1q,eC*s3rC JKBH'I5p*H(0Z0O?>^c0xP-`*ٲ IsW .[fu~D"f/صi)$E I &M "G mz=]Q"!Lʹc|x|Bd%`+VUiďJwX&*%U"XoVp8¶pW % x;)I0s͐_ Bx0WDl4[VfY֠{ǤJb ̜O3"*t;(8#SV&rF C&g+7v ;*y+9IDʃ9:d4&8{*lԜDPMGAR㸀!C,B[A nGǃᖙVgǸqs4ܦwXDϞd9A; lh^L}D/x$"LԠ$r?'Sk2 PJ(jb ]||7 ˪OO)?ANߝ4Lh *I ˎϢ Vo_as)i !ZLΧr9p>׽xМTٲw븽n5)Ve6EÆa:}P~5h=w.;#iȷn,E^"7e*"6ly;Fܷ돲K/L37 #퍫S4UtU4oGJf"OZ!vSej™섘$ gpYaoYyC4VRcqăMfy$1dvP:zc?qLxmцwkDE0 mz3Hy#t I7 ƥᮽUӟA΅8Im9xJZPc+V'2y ϚYy7¯ܻ°[(p nz5c o(uyBܣypou*;i[j]-E]Xؑ0L;2Ab=CS(p[8/ٹgg/L2MRۇo.ef4̓aʴ/.嫃[Ċ*[!^DU=?f6[x#pBw}# ȁ4iևm݄dUƽێ_FjB'jr\.9ԲtRD4]<ӆk_oƟ?:Ġ_xX^? fYR5UFDžOKPёf mP ~PQzrllvm-toolchain-integration-test-suite/.git/objects/a0/0000775000175000017500000000000014773454057021721 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/a0/f88d02bc3f55290d42edf3f361cbe1af9f152f0000444000175000017500000000341714773454057027276 0ustar dokodokoxmy\g ]Z b9]喆l `]#r8LL),-RPAP9VWk݀X@bT\ $`N[EYmm!K*]Vyy\; $(<$cWܠKӽF-̰Ӹ^`@I)bMst;sѾC|(z90ˋQB $1*Ӎ[ϤlqL/su6ASap5O1zkCX؉mO?2QچͶXͯ{Z@ƛ%wg~z$67 Cًx߸|u;V_d'\ :J_9ٚ#OYQ9Cf(`ҏ p1&ގY?~0zڅFHW" %'`H,%}yzm$%F!JB)uMDءMk>Z/굙S HV/-Ž.U#=c 8Ba{3k[P@!2XhSҟeoyZ Z˦[$wʥ;N@Y]T pUYtvgP \:_ qʃ19o,E[*惥7ꃑ7cƂcr.X ۈ9KLGe53N(1,b1N{_FG,}J>>#F;iOC?0;},O9AwOWzfYcA}%RЈKb%ގ K`}I;&o=bĹwcYF4 ):ʦxxkuv䐓!)KA0) +;Pr.2 @b҇Hx>~%#d.9!J_GOW\8\;Iyvas$m CA.k..0^Q6,!Qum&i#-b«o[?~WՍ:$Ca1{NmS*&! Vg[p#n]z'ӡ'4)a9HmgK h2hV5լ+`kr}k]{6H4&U߆ [k}~Ypi#6?,m~_lw[NB)c &"(B53 ND2Vi D` V$FqT`f6x_\^f@ij4R×:rקV (B0j3{;wu!v<ptՍ{B>os-39_ol3&-g>=)鵟V>9YF~MQ,915l?eɚ#3$?ܖ/s~q̜8 '-Ƥuk6b{3%c^$ka5wݮ[œL!ҹu ɪcjR9hp2IÅ?ZC/#9Lzѵm&퍀>@+J夦Y;tz8BTܐr%"=z^љ0*cW [3>1|bЊ~lW%ɜۮ ;n۾llvm-toolchain-integration-test-suite/.git/objects/pack/0000775000175000017500000000000014665635536022342 5ustar dokodoko././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootllvm-toolchain-integration-test-suite/.git/objects/pack/pack-71eff96bac89219ba04229df4f752866ea806fe9.idxllvm-toolchain-integration-test-suite/.git/objects/pack/pack-71eff96bac89219ba04229df4f752866ea806fe0000444000175000017500000005046014665635536030605 0ustar dokodokotOc  #')++02269=@DEHKMOQY]^`dhoqsuuz  $&*./02369=?ADHLORSTWYZ\^bfhilorvxz{}~ !%)*.//168;?BCHLNPRSUWYZ\]^abcgjnru}| K*yav j12w&%Dž lfRO~@p>W#JOrZii^),cG!͖$9{^ݯWM ؂FRM]Tkᤥ9Iw=(H-8qaU(ne5AMx:ŋ[- $X3|)\U˅d4A,tc4.^tMn47kvjγIɣ]?=5*!eȁqQ&Jә H;X b!b C+<"@9$ _P*A87m:{]~}:AGҎ7 -K/pP΃2>G7YqPjNMLqi ,2 j/Ywj;OX2 Ob!Mc_/J8v/(jQake#5 edo6#XCBlBsʘV O#"=) OhZk20tE!-:[aVAݧ6eV}{hG*QI]4emH7sʬcvjʈir >شvkJ(wRcmLB5P dVZp֯(VN՝Z!hgG ;syt }XrQ晔 ;~uF4ao 3MEjM$ YLIeJӟuJ!QA@Sk$O̟*4,!ޜ&ӜQdNWm "C.o:sf "IagK~j-"I+ ̥'"|}Y;a$t}tP"i |#cQJ辇æ"-wNTĊ7 `"z)_atSa"!X~Rzn#4&rC<#UJj5#f(@BcGօrx'#X7y#d&6ZȊK喼n$Aw)qs&l% 7FrjIF3`\%fZN9Ws$&eHP40 c& vL0XE}<&"CHOe: 6&BPYLْ cC('! vyzqrJ='_*p*P/RQ'z$B c8B' $41ƭ&(s( Lc3#Lv" h(NDZO;V muZw"([޸PDҺ* m(yY\vo5]:wb(7t+32)2Pk[x&I\C)Hk2` ~\{J*1l! &D40=*6.pvZ@!X+A-KP oOAiu+;i}jd-R*3L_aUo^K-<TD9t-&ffxDm&-H]B>C8>-u>>Bbzv"7F.p[p'tlMJi38.ỵz5#.Xt_݉7(HmUd{.]= Z"wX~.Q@Ώ'iel.4HpFաI2\N/g&-n/;k⅕d/VYA; {/pzi*3m$"0u:hl}9Hi]0:A2L?`'!o0%КX)670 w]CkfP:r0h]eݕd+X1D}u­V2)Gx:G26c[ڃ52%ջMj?S4M]忞|զ%q44_E-dl4Yz齠T9P.4Wh]:DI UG4Xmg9$ONd\5>5`2ȶ+5Ä˺ PsU5@k "@ǏFye6@8[^^֏῟ \7\p8K1+$lL 69<ܵ:͚ @8{9tTpIVzn9έf2 %Pz%,:eu͘Wd4޸:uB ;K+4Xe:_Gd>4 r<mje[n<Y)c/8N[= 6T ?_JQ= rl )Rm=>ۛ((_J==ݶ rRbH_Z=vPO/ #{_i0FnMp>33QnT>R!ED&b-~ڃ?"dzgL$8 ~?nݸvd'?9yzYO%K@s Ĵs@!͕m&@ճH;jMI@dmَTwB b~N]m^BFbDY}Om'zC\ӋFdZau|CDBpx>F'cD@$kʏtsYwP]D?OA-j E N4 ̉xFoJE)f3HBS Ub?ƀ+fEjdtP:]At)+EZ>rggQJ LF)CթB8U5%KFvSe\Z\A-qдF%`w zPLOaF2b+;3-% FY&.dnMdq^F`j!W̭cW lxF;?&F:R:cFNk2fzEFۙ2_%,P@G/,ع"GHi/RJ6ہ1H7Þ) QЗXM Hg5|"a>y(HgXY̒ (6Z H^h^@j-I2.B7Q5 ]i P8I#XAATmLxI?`R3iY*cIJ"5&@uI3"xJt~ [HPfJկ81"O%`ZJp NUGUKSog;4n^ K]Bn`K֒IKB-ZX;?6V:kVKҍC y ּ LK]g4kzL ?!6PNR6dLkwSݻg0LsAx)3-M]ֶE/ƥjMDIBQ:+pqo4MEK}L_ 9/7M1ҁDˊ+ 2N{1-2*-$Eu(OOI6`᝽/PgO[pXE(Kۛi{ٲO鶗W@SOԝ8PPKR1h|EenPj-I5|!t?ˍIIPpI,o~\Qom n9e̸Q:RN8[]R߯PvB]p;ݣRĵXcfC=k1T! ‰6ȧ9HXTVT:VS hGrTWyKQeɯcdT]skfHWzz y7Ta_ŭ>[֤ UTeoa[Ҝ%UFUe`UAB<6KF؆NU47{PV225飸%[FuEӑVeXz[V׸n;$V׬5ߠE^WeJಿa5#us:W d?(|WAs_FJ9WІ.;Xa+, uY3d,AbHej6Y5dZ4p,_,~·^{(*GHiq_Td\m=_(-]A#:/OA_zGQk.sa,:H5` A- /C3QuT`vnO9ќ`V5V V'f@Gf[R6f65>{0NIGD= ʙf|`{iC< g)Ds$ů5rxa˜͕g2!v)TI ..$ngh=QrUQAwHciTRv"Yة۫jAh# Nfj޽Smx}*nEUkB]FPԞқk v,Իf5՟ d(ڝ)k/Q>Bty4 hkMeMi)|$=+U {kșTWh*t"/[lyCi5_JI:UlgBWLʿ׬!`m ?)9CV77+m;NYS[mu3"$mWÇ 1tyr< M<uk$\0+Oh,$u=op-uS"1ֈ~zvu.:_,-׾ lėGnv ˻i*b6MJv`8}e+w^A?c)&0wV?HҸ“ܢ^xZIh`̴nx{;Y1x>"N֍@Wyt%aU`?c\myyDX (y&ū HK2y N7K:^ouzNR|К5zl\7r}_}U=`$l%SNr~ : Yu*7aW՛fPvo5v*Bl=.Xz>ꧢЕTo&Bo LbL! mDUmmJUw 8v&CJYAӑmhJ.R|ݻvf;N_0*RpYTׁ6\_ l6Y)|RtDQrGO0inSU6][;2j}lE˳z*z>x@kjBUF*zc˪2fùwzJHkğկm`a޻V:RoS B ( XbjU?y-ZQk. CfUmMk_C鎺;UV9j~4E o٩8Dy8Bp3:D2=]}w*Č*r]I/"PWqȊ u~ u$_lX\cf'ydiBΑ+vغ-*@:;4}:T/Z xYEqw4k+>`Q?rً# wl&EF ޳7PnM92.ԩ RR+r /;vh%~P#FQ^ꑺnuQ/|SI;@y릑 4#҃aXRf^3U@;D:h/=O=oHeb'iZVi [}]+l df٘w&?|3ky/_3CB _y×u6_9ϳ)`*o1i9^fq{If?0LL 8^kMziLV}DٜcqW e%ϜdS[/b-|8~mew[e$oPǜyU0{5ʒ&j]"|Ŵ+鴪Z7h ]* A>v/U p!꜠on9"%][[9E '=ջk<ӝޣ<қ!G;D(>1sǞOA5/|US p& YC3֜2eTRQc}|(I퉥ϟ'YRfFUk2`)T^rVzQ~:;tiϪ\S ;ҠڈK 9k*4R;\VNŒ,X}LSbwxS|,]ԁ\CnіEgw%&tI0$S^&WsУRYʕ,|&H-Va&Nh aLjJxAؽܣ݆:vJ2덛xÌ F;Fbv. k,ߦqD!+Τ6SC#khdէK*tc͡(hilW\_8J_ qh8۪ 8QNڏ2o*7cn@v-,^W3_ӵ#&Q"{W" -zD,U^աHc-h9Mki0NGF 4 5r;|ځvf[چׄOqA 1.Jќ窂FUb+GV}nЬrc]LkJĖ`.-q+U-0|CBtw͂ܗvֿpAZ߯ > } ƾUÝyubֱCaqyeDukKxd\떡 PlS`/+A'!l=,3{Lֱ5>)=β E73 B2(woǂ5u"߳pe ]/qMxߤOYN$p;fxNA&:jLC'"q0Âz u]sy*iL'xpFtHKiJ" Lt젵( f.HqPU#Ӏsӵo*o 9ԓg$G۰\;>GwmduE3E?( 2Chݶ,!71AQ-Pl= 4V/"'ٲѾ]cuȰA1,r.c Ŭ-@t]gv4u{Uƿy.NI(ԩiJ450tzsӄR21njkN9T/.Oٞ8NY SۡT5]J1910iYɝC/4qi Iw=ԵM|b3伌}_Y%kĎ5dI*ìzV̖m=`14C~2in1|<#C.Ƒ6 olL7j΢QZQ;\ΨlOwGvxAEƏ6ۨ?d;5SPW%*Fa!Qe)i::`1dOob+Q1_1fYYtvV-QmnJ}s; 5$ʄ,k]3KwӁk5=I[ OaI Dҧ<2"g<blYy,1 0uj^ ~:2IK`ŏH S6gNfA;&C(O:_il豀~u CX̶Dy7Y彪$l< jghh[xWDYƬwT[RVZXd" #kv{ kz: 5Qbu$rYIZt&wh P\=P=`zuOb0QC$ XXSrP_ѽM[  ً"$Cw e,P !(v Wߤ;yW]BT& =)iyUBZi aYno"r!(0yg$Ȳkd]z܀yJigOtSt"?'H}h]KȯI,^`[4Ͼ .$r, ɐq2}~Û !?#}$Ӗ7s9x%wM_f[`gi\Tv4<ҵPKU'*5璚/c9xu4=wvC=A=)9!A󃯘ۡ.qV Vq\f uen{76i*0qd䂩6;trW뛎j+:5H.*2%9 9i?CXA3Wb\"b k*Ǽ!#_Ъ/\ז%R"B_+,!dσvV"mLEYtFHzd]($6N=) á)i رESQCJ;d 0@m敺S :Xߕ?{{mKsqP9I+i2}\X6meP= S%ݣ)()|tp9=ԉBA3TW~" /g@0"t(9ɂN÷9XDy LC!Q%!@ F+%>~/;孖L#XbvC"gd \iF-fSFoXh~}TpX/&eݣ|<54=qP%$AZפ䒡m=q횮̮/6eB?}_׉F !b}s┊Q1˼)?E˟h/+u/<XXYUd4p2rQs?.w|$2<IDAx,9{@x[ȩo_?V)OZZ"gX>Yp∆\-V=qa$p!N4s_ D>|HoA92D|m޳[; {Ӽ3JN[xDޣݷV \/ m%>mSM񢿁A 3O%9/}r,-)C6+" - JIl(^SPU@70eU#F3-ǺKɼg m̢U[dGO'm} n_eE P?.5:h;4zhT|/"W5VQbkUqӗ\Խr.Q} ܗQwapJy!:h8Dw}`2Rŗ~m W[|%lD/x(4 0|%jx}Fqew4褫 $%e~{JJGU'$9ڸ}Bc /vɂd~[j" ֑;Kvێ.׉ i 6I>TWV328M2K#i<OW,AH3ݤ, dp;eb́DDhsDr%_rcFZ6y;4pvRxŽ=8ZΓR[7jWGcSJOjXH3W/юHl>'>ENWUu@%Eq Bb6W7O0d.q1{_DrM\^t8Ixm g ilV|7mD#6zCp$s؅| &y)8ypRJ`.pLKcL8l03TiaUD.ekg B+%1;0560^  Dip~01@]~鍁>nJq]Ҩ Q#DIB]S$p)'AitRzQsL*M#(HF:6S =ƈZ#!`(#l@_ c y:O;E%1OoҖB}ڦE3̡$GXGs3+gr%Qmn˗0.2ptDJś+/Ġԟj6eϤ@_\*鄰4fM@ *Z4b4rWW(Y^=JwATi4Lh/ZD/ұ^PeD->fp^FP}-O4#陨30^έsr>Imڜ&568O޳O4$}A^ew¶BXAQ jі=}JS097b1Zēzi/;0 .r[ Y  =6e:U!Ѻ / uս/3%SKoj']f/קWK3y~%[~MzeS15#Y*S\4~E#u jMD@[#ͼ%5`gBs]`~3}pp]jOOfZ-!gZ}rtk+sN\5( SiU-r[tgQ9VecG< VZ/79;D]b}0\ͷ#o}H$>0h`L\ޚ_&1Zr27ߩK1 Xi.Sz#r:Zbr>fBj_." 96\̽ЮCwVvEhQV ~P*z&$Zs`_q,o_+bw+E"eA~AԈgCTDdiQ'] ]lͧ/Pc;DP]~۫}bЊfwNk9ОpyDwj>o)Ve֕2<kՇYydeW:=>Q1dpH#l#ʀWE3HP*Y{u xi@rO[7R~\}I]B0pbʮj}sɻyTbXk {`I\tH0iҏ&%/=YA rXXFkX;_Ӧs3ъi  oϺ\trQ^%6@뤼| {>~zJ?s&j>plF4 ὠ b]oϸNCU-NO6@%Bn@ku@=b, {d <JLv~WȆ5֝AlL_U̚.:4<1ݝ,>hN@ޱF#^d75}a<^$kPM?fcc eǰa O2Z$xj"~ x7y$8jz.!NJrGlԸ9q}H) :d{]9mg@$ =tN_3Fi;փ63XP;3 cϪ'-TwGJeD#'2hX/E( |\fgNǔd6xa|Qwщt0{õ=V{p<*YRA`sMՅlWXxߔf~ʺ>rprO*5 b] ;}CkvҼ5TZt-i&@u3Ӎ&^؋e1I, fy[|.CV(5FTR ˠFP}3r:yh "2q ?f=в2 VXu3*`OwQ c$P̷~~+KBI{ Ur;̍(mK$gk'uS8+4x^G*2dgZI$u*&Ӹ,Ku5)C9.O ^+YY r3)!]T. \J~P o 'x%Ș.8//'!z amZQe]>ݨ; *pb)i U}zHEH[F)QF|ӥRKqnB<"θc R/aY%.&#"RΑ͡kR3Z)9xw8b>4 Ӻ gh"Dݭg.!}Dy! KsbsJ( C_ !5}>]Q|/JGj(ƭ>ڐV1'Z;n+-$-t~p(9&V!Ozٿl]`G a%:rm}$:͢yt!(Dc4$y2h<q5@0y)I$@ YO],|'r@O5*2~Շ_cN&uzCXx gTNq3P~cK|^ ~ #ȄI,r2mAw-e 3Bo`?>KЉjk]a*R0|ߠ()_( 2VQN {^+j ެbX6zP jOb,pPE+* em K`|e|f RWV>qNbT8 1#ܫ'['cm-*^A^  Hξ^ TfY'(]1Coosg_t^0:Fi)υT!$.))*/ Ao 9gxp-Lb3j~.qk!B)Ou(fo2W#P0+.۷3$Cn././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootllvm-toolchain-integration-test-suite/.git/objects/pack/pack-71eff96bac89219ba04229df4f752866ea806fe9.revllvm-toolchain-integration-test-suite/.git/objects/pack/pack-71eff96bac89219ba04229df4f752866ea806fe0000444000175000017500000000546414665635536030611 0ustar dokodokoRIDX 8y'vy- iep@1#9oa6#8= mH /2f(o;uNPTGFO2zB@lpFK]i7`g{<Ke 8V-Sr`P[;*"~GS3)\,uCIll*#^$on?f0M1h+(WN]B ?9zHYdRD[ZNz9xV;nv>X3Ct1!SbY&JxYh I"m J U WEUiGEk!W5A>LQ}?_:AT/.*3jOw|M'E0%&+XFHs 5=D_b</| hs"Q[7vdMgX$qZy)&DmwK%0gCI..r^~`LL6{cQ6\R  b7A}aq-qVJj2jkR ,tru+=>k:4P <xn(,s4~a)c] ZB_4|}ftcU5$^'de@Ow!\pT {:%qk!B)Ou(fo) #=m w././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootllvm-toolchain-integration-test-suite/.git/objects/pack/pack-71eff96bac89219ba04229df4f752866ea806fe9.packllvm-toolchain-integration-test-suite/.git/objects/pack/pack-71eff96bac89219ba04229df4f752866ea806fe0000444000175000017500000035774014665635536030620 0ustar dokodokoPACKx31̒$Nx*q?=̛ } LL}S}2KJ*JŞN[4}?P>ή~`e\3ÊMYxX반u WG_Wso_vK|xb`t7kXm*I-./ILOOMOLI)OLʌ/.-(/*KfH}>֏z/vq K 꿸T&21d=uƟ{CfExU[K@W"ⓩ >T(h^!d!]v7"w7Q<̜ΙslxQ+.$WHXXVRp0ݛhj-RA~*,Ub[ %x-׋M!oow읱M¥ii}GAjKLS@5e}]%&5w6BL++J[FY}TP2SsٜXra)lxʹiBBNfR~nI+>c(x]j@E~%UM+m)FhJw"M20hW-dBl己VQTIJEW*ͣj{y QVm+J=hwȭέcX)h'}tP*hNsf2M؅q4= d{` [7(FcaYV"QT' G;Q{&oxkdncޠȜ2Y1"n9xq}im3\NXoazfLHٴW5ExQ3K2J.~>;=o޺^9O=WAZی9WV,[R6iAyxTێ8 }WX4{PKfLf;}evȒ+ɹ:sCɣKb% X;5@S_qi@ֵ 5@ 衲 !K~ XMXW?dD#6)yAw<_rcIT@Aj@QΚn%,X˚DEUP`\ |7+iygBGK$4$jta-!#oH϶Ūzߧ: m֜ԞXU)b8Cǖ:O)0 :p)Au!KhpT"[3Wef5+U&:;\|7!TT<k| =vP뛈i꽗58 \PREn?"IHGz2͚`wJ-e&ѝ+,B!Iw$p OB "&_aŽayILs^?-f -ȹ2ckq/G.CP4y!PqC'1Q*.~6Kۨ9*XN@U9mXM4 `r#r  :VyA s?>LghPm n6{u\:`NJΔ⤍ #&!ok0~֖i{7 D`%DԢgNs1n7G,on4Z_GҌ>nn+03Gu9vS DYЂIF#^/g4 gjWxC d+Vn'p`G+<NT: $O"qh"@Zivß*T;l8d!d^X&*nKPe As/`*Q.w[E){"y\mj?EMXQ5:Hp#b|X[ݻ|YPU>]㠵{^[L~(y~fNatPx;b=䒷j:!I3mv`t),X0ŠJ(4Vadzj_q8f~X-ԗu֩mB檠`{9=Խ"=:U:u+pE C.l(ND˾ ܸISEE=됺*2p0t 5J! $g*P 5^k}y7x|yB0_qiAA~QI|FybqbƨxF ڙ5xmK@څM*PDކy.* 믏I*9u!㢠}}r. Xp@FK$?kcЧT z 9[!tg3F晃`b%Цx.fNW +-9Xr&;/jr~.-l в z9jZϺ/UW^gĘ-><(jl0zTq M=Hw%۷s(d,le/xȚ; oFzQ5-FfrTP\P] m;9[S"n&z{˼JfbC`.<}PↀВ+(iѱn+(ȟ8'0䓓5xmn@yzRXVjB8=xYb짯ݪMFH3h(8&%/|L"pѨd@]y hbp}D6q]0+0%1xA[# E? 4;z_J/Z>O_:euu:s+mA"r+j]ռdo6CU0!A68\ƤL;p(kaI3~9:6ldn½.='t[W|7w(&kg|cSkةmGGr:MtUFH) @Q-+J4w4_^)*ց{3 V3xmɒ0D|rtY*I{l` dnf`<_SzFS C1-534lAXd *R`"i0f4Ӱ($TU3P=M_RU#,6qfь"#CL@H!r(ZNj 8TH[|K9-I܊+ L]ں. VRiǷ I]ޗ9xqw:^ %[reۇvpq w\{kMR޶T*fmh<9hؓvزϧcDXNSntny)7>|]C5㦧[֡ no2//2uz4_\na\f"W]_InWiuSf#FlWkР ^=3S`R?! O ȇ=$_}y̜^#F}unl4L[(S|.r:YU@y! mVz']QۑIe3HgUB6 U4,xmr0D|d*Clcߐ,K~235OoFs"fA13XLgn1 ">Y9fa3+/6v(̨((3%c }| 5ڧN?Ķʲ隦iq14_Fq:hyڷSk4fRsvE\loS/G x}YwêP3w^<,$`R_Tn?1ljtu;}:OEx蛐FBcsGYm$N?T ,wnQ%>}ҟMTZu?(N3埳ioLH*Qh?i&m~a',xmK@[vSȢ~}:JJYbU TD)F2q '("V%% !JH8RSU@(SUFFiL` y!k:0̵<t}3qp`B *–BtB54ʵf#~\ZfGM؝N(=[?[}#'`J@}NmbcW,)xU.~t.UًSXU_^L 'axn[0+ eךiLḟw?JN_3q`-ݎ |`$Bգd7Nk|K:s!-?.*;yŇ̎|Z]-\מGNBfNryW1a<_I ,s>o jhjt/%3H/CùowgKp+hߵ߯`& xt>]v4 8n_'׷Qb\4#~wۋ>*DH=52NSX}F!KE4}2*W1~Y-Rg)1<*7IȦ~q$' Nө;d @JG/Icd1( %8} "I$s2 ɔ0QnS7q܍I8#;v-Eh^Fe[6fL)!8ĥq:8KWcZ5LS\,YQ:pvMS)DHP_*;0`(%WZBZ&4W #˨#"0Z@(<>^c.0xP0|YJdFſаT`1&F.-! x31̒$2b>XwPI LL}S}2KJ*J:_;N斻|q`iT_+X5̰by/s2:,s,Uma5ǗQח7IPOgG{f Hdg[denXB̞wyvAFW=c2q:=}־)L*  }3yp~^E b bJc{t}'?vgw:K .=`SK9.=o0Lcyw~`W 4e'&@$.ϑKaY@U e\yDGMMt%5xɎ@H-咄̘#exo @5 ~ORRZT  H1p>$ AUPuX+a UH]A** "Bɡ%dH> $% 5-i ,۟QsH?i,^z5' L 5~O gDX2I5:.XO`L]sߌ:8p2M6M|5zDYr\Mi4.Ӂw):U\R}cyC"FXb{jF[n6]ӽ3l5|am)ęٺ7qu0stVrh*푤Ja,!1Ra5}+bz:eT^66<)yt%lzhX+#Ip(zZvu$DsׂY@jrW\80 :p$BӤk6;ic/fj#YtU7ݢ?ƍ gdx 2U" |d_8+{m&Bdq!ao;h=AiBh?CibqXQ<_ 6,xmRɎ0+,*lViB  !f@l|}V;Ez{g 暂T9gHR"TӢ,邦#MըLrVw0*4K1JXBҥ4!B13оڎ3貜O,=/(* ~BWE8 8v:v>ur/]է/OZsa$[h.8ff93 :D\I)ۘ={ *,BJ^UJ:??dL-RdGcD#Ƹ% y*N,h&=zGy@&$8 ƭPr3v.g>/ *-⭝3!{f w?Lnln,ܫNj1#Ws&MHU3WzLߜ^FCB[7m3QN9;[rsi'yGe䫐*{)GvnȷNlf lͿ^ Du F~&? 7@4xmO0| K=Vڪ$d!!ɥc bL6OlW+7O#R3Ut!zNmi¶EYag$ngj@MEa`ThLE䌙HFH mKϩ#B,C& ûl`+(N\ O#:|? ؉;@PP!]r)1_O}sQrYZٗ/[M][Bgu(eLgMEe9K q4:؇|Rwh]GW@ =[?'uxasߢٯW2nj>[sJN@10)2t( Vr$}N28%} gn{~z>N.␒6LήW]N.>ҧUK{n'lwO,5-fq8$X桷x9!D9(4%y<zs}$<C(֒xl 3&lzTe.ci*'TcA'[Lt-IEIVIsd7 Ot_ #ϛ]{0?lǕ3xmRˎP'Kssx 8;K<_uMRUTuO;SϚo-acaLA4/jS'3We/M7;_ڇ =W'"@M8ҳ'7}i'o zG hGD<<^Q hsBM uQf Z1n=+$!Q_65/F6xmIs@ʑfJRZmf6aGrS֯1 cYRjVꩤZbӔRYPI &B{ [DPR4*0QS?^4Ђ%Ԍ{P"1]$!o{^3C%τ7ma(a DI$u] [ oM۳̊! Ze^q7 .Lܦ6BUggyjMy!SW'X|ANQȧ>a܊R2ţ3+wRi< *c'\vܶnV,qBk|>I&ହA"ENX{}WE`Hkko>lr^IԄNi󓽠%qw!?ů;'[G% -EEqǣH-W>OwLX>c }E| H%y2<={nYUYWY6:y^we#/ + cQ%`%/ƓxMj0@N1ѿ n,F18&7\ bt:c#j(׈ c6>MRmBYGd'γeECn{}Ӡ6Np˃7wF9/KڢmVz_E={O:{k^:ɺ72?&Po2xmIo@heB4^1^nf33)O*Uk*!nrfb l秚f&ոeZRJ `1:9"bQjAUbB(SŚsU 9"O!"NuaٌaC3bfSͱ@xOn*|_TgQ%4#dTMUVdlQl&-oyQ2$93M-)Z&Ϲñx Bo8zWe}Y4ݙy<+qRy,DX[8 &p+`^\woO(e1*mkb",3W&Il V*LF:z&l\ZcO+%,Q?qxmz&f%K ڏV"g]q`kð6;{R=~2K0GQ?#Fxlͺ.U&~IV\o폥MׇeM k*ft { vBOCfg?pHtİ]SSm6 /EPi *qi @QiJ^JҰ ~6́A^tO`~V+xmKs@Sy3T%[Q`(0#*c_n-}骮K"z B PLhBiТ6H k"H PK@Byz_':7J<WBq'֗?l T()$v9=j<7Zּӣͬlˡ.?rV^؋>"&0Nض흳U0/'4m;}0Kɗ3&lm7%X06³SΩ{ ̕pHш36/ޱwl~gi1pԼ qizS!GN!jY]YE0@q-z8'Βn.uY1K0q)G>*wyiEm%1g(M# 0˼+cj{~>W Ş} +O :ν"pԳŦEgݰY7=^w11[EĄ PaoJؿ4xmK0 K]FSƑ:UCͰ3&0c_L.?}GwqQĈe61( 0M b2Ʃ&`A+ 4"R2;,nAb&$)!8ql'Z1Dv8adFbFQhϏ6Rp'i++h_)Mr\}E6Ǻe!4]Re.%`yU-hÇ_Y.])|˚3y^0 7`7ہC8۸S P纞{oJ~-kamK[ӷU9[NS@{ 6랓Mvo7:gZ^d>^M_O[\Htw?$l+cޔ~Gp5Q \{b0|f̊x.E\Q5,XӰH}ac8e6q&F-7C9RCbSwAa%#en{0r .21 k>/aeLjY6 [41A<պ|](WYؑ-Uu-fԢU,׍)k*2 s {N|C0QnhEjq2e'* %y.+E9~V-+I3e^W\txAn ;{ 0`,EU|`,6lׇ~9tfc&'ˬm^SH i4'됌zb*}-˜W(Ep d/[}:.O,pۋisQ>=?-ڝ|h:QD:By?PQJ.֎~MQ3xmMo@zZvc;!- ^ ^>lm՞͌^if%\3F:B3,f0Ӱ6Ҩ@#@M6ġtt(Ķ RA ?mi]{&a8D%tfCS8[ 6z 9Xp&G~2^riABM#Ky,S+yW~Vb؏ŷ[Ua4L& w˂?\ \{tݵŁ1Wu1r×:L+csqPl4UGxjz/?)Wx+l.FԼ7Pq&n}{^u]xiܮb%TEN ~Ii{yT%c/75 Xqih7mۍMْVѸ͘';|Qv$)K.+>!Ŷ@)?ѶI *me}{whH #@K{8U͓6xmRˎ@#h9slɂ{6600x~}rVԭRs@ qAlPO')7pA=ǂ:cP,pK(1 88QBG3׀3`[χf8'f3Bw)" qt ,$ ՍwJrs&{zY滐ix`QQץR\y=?!y[ N:ԞƟ5 Q^/`g_\x&tI,6A6Yfr(vf?k\m&;ͽD)D2oi؏)9$<%;K{H1!dIeH(J┩,jCYd$(;U ڮagIӃxI|/YUL@]nTV KƻSO_lY<ϴ]/w"  5i0vVJ=go4 <˝>w@GlqKo[}hKoxb|Xvה]1AűQfC+x] NP,&xdɖ'b;]U8ǁzc VkM"V^*E >LwU-mҕ\,A?2) svRB9> W(~k.4˵m϶_O:hg[˷rI۴%t7lVyz oͥgl=X.}r%3;~oLX&c4쳿OHUJZ9&Ӕoؔ!-&9K*3A1;J^xxj sb5Rh)zH0 #L٠3̅RlT:1E 'r8ǠPmNyoqkn}u:$c, - )& 2/a^ "XHV+%ǦN(MEv\,tA$i1BeVa,CVakf꽑`7d` ك`K#oۮiay7 WIp5)xZ1|z'?kU[ua oi5{؋!$͒8 c^d#߹G>;+~@u;l,i'7:ʸh!o]X>8t7/c''W|}~&4w@m$vw@O^%V7VI,(A xc;˵Lg7[ds1χ׆y\$pmlf[=,"oߍzv6[ײ7Yy;Mbkaf[6>vϗ>6 88Ugkiz%Ǵ.X9i0U` i2Is,j?2D3*w PYej_>Ѳ|z ."cs>oAxW#qWpmnxyM3{umgS>:u*wS xq(r͡8ņx\/Ky/֣ti؀8+V̲S*ׅ;MN8:!@/ݣB /X)8 "yQ,HHE /)/#B|BO,, !5xmKs@tUf*(mLPic7ww\%XC3Ml@Fgs>.|p߲ tIvQgB  MbCHhs?!>2am7L}a iU`{:(Qقx ]'0=\7\00LЈ8KR-!Y]_R-)sua4M`5]m2]&5[0Q\)maqt-[T& -I7G%[j W $)ʕIeZ|S.f:=e)nV~i лR̝IHwnAP/?.N&CV۪4fdzʏg ѹ,v- F7UIn UR48~ȸطW٧\dep]vIOI?*5Pp,W}9*cޟ'`u7mY{}?4/Ǒgh1bZd@V>^|B8Q URdzֵ IR<P ~R1@ ~ Wx5j W$|'0zwL& Rz/7@Fsfy"ɨn΄֜34]J3uMTke'ٿj兣7p;F\>ֶKeo.|#E$Rݶw4y-32~Ӹ(>Ć#?P ]5! E*3 ~WSx5j O$\J讛nL*3z?@zva 7 !I< 7IӦQY&W^Y4ٻlu񝞨@#Kp xM*3d|!E$8bk(*:<8nqڙo >{ƈ\Jn smL)sxwQx5Mj0yVyQDcR: s& }mgrxZ [C&xM1O,ވ&}1h"F&3đh0VRKJ w\Bm\Q3o.'18PdEYUjwmq_/-gÎք8y'D_ȖVYOP`Rx5N <ٛB[1 Koo8YL&dj&p%ϋcQ)>knVVJj%*H!Jh#HKIjQ0V7r Ϻ _Af7,iy{> LICUN*JdH1q\4 )aDU4ATa@eѨ aD "Ǧ5MPz86d$V!M{Dd]'Д9]ֲ X,nGnjp\.EȺG3PPeaLy3ZUYt#{JkttԳ% {mS۲ej[{iUnY궞[ˉDHׁ(gS$psA~.yC;ĜKX̅ҥI}˯pJ3x_(/}֚ŷm5f^|ő5#aXG;` 6ͧ$2}JX%rκ8ػ؛V5|0-Pkyܹ}8EhH S^ /]E , K >g,ڇ1ʋ u۵fm%ׯG*\skb3>MMS MU[X}noscD@u2 ֿe eʊ2L Ma ^ <xHNx5Kn09 7RTeumZu%ᯣ8-Qx H lG9g9LwDp#xF2Ve(as]8#P[}!nҐIlVJӇ`!9?[k(TQV5aw\+ 뉽toq5a/ZȍJ)DP@x T?rr-HQ&Rև` pqjw3^ŐΆr8rëGM`GR aT$^e:ШuX>|xL7J~x:˵ m?kb^M| M(xq ʜ⒢TԔR퐛_k`hfblhhfdi6MΓx5AN0D>ŗXV:PL 7Oǀpmi=c) tҞi4b 8="zP~t:8#s.ظ^0p_\gZIC}"3 m(_cJL;Hc(`?-h *mbkucϱou}[xM+}Ly!2H+}F;>Q* Lf-xmI@+*@Vͤ-:c5, >&\RyǷJ! D͵4DHs!(դRhhǠhZ!+$3"@j\!ei!#fT4UDžlХ0=iM~(A^F*H8d}֌⚭>w@Oeͪ)}z=S9%K8=}>ΣnʎŒR q qy=g -YTFuN=JGYeF+*nHuZNy,w>n]RKɖ*"'嗵l:g'm׮k,tW hhHAm!b{Is9Vl-KL3jkrE}5[h0mx_Tkv/6 3DtF2S4cFi[t^Jfޫ 猯]~K^OWstlTfn8usr=4G^H{-IRcO <u aVѬ" NH:XpJ}'FxEMj0 >vY88vhtC\=}=B'.3 8qrJ+? uH0z7I 5Xs윑JZ9 1 \˙B{ƒ2\MбKy}.Q}l^f80:öaeܥn-Qg 5I;,oI?#*VF<F 3O^V eP@]!jm9 {+,7Af; ^뺏=)R-;ɯ%yU/xmK0ܩY[3[GE("2~/ 8F:ؠB  3P3L@5)4æԦ5PHYLCՄE c@*(GA)Ey g`(kx,Dž!4c # +H|`xm.^T7-/d9kw "]3tr&$yؐءG kQŜnvz$xXM#m {?}$e$۷ zD'r\aɱJ.R5S==FG3Fn"4y_Ȟ_wkxNv$Q9l@ ,8q:Fv:}QDe[D1ޣ4=V.[d%>h!K@q' Ҥ?,mqQdƨcr16؜v5NsoFv/ګGKPI(VڗP:h\& gZMo9IRж>ѿ˥˴j^H>lT6R#.:Yn5(7wRRjXXgvy0= 0;*́)\;ʾ\!ʰXfAΝUw,Gwʏ}2n;s£B%8+;ΦR3Սr}s.ۍοXtYE3[`Ma <0ĪAVea@:HQ@HD$#e4Dy1W_xc;4a[qjQznqb^nAbfNN XH/45$?ϡ$5'59?W7($1=/U/NDA&aJmݞ.xmQɎPOUԁ<@2 pcy,Sx$!_?i^`Y-Y2e.RCi!"2$ IԐbP u"<B&J9DCt&uA4x_@YvO=~5$2 sClۜhhת!== |U7-xtC} P:(FQY-a(S[{&.JLϱ}D~GOg(9vҔE,V;h@Y2z*МdV<e l|9mX86q"ƽ+9XoFtv٧ [mR+:z ?IQܻKNf1tţ~Iaư8l( UBuO+IbQ>7M4\ªvRQKz\{ʠMZW|Vdmo14R 2L͑KEN8pLvr xP>]QMRAiin (fy1I uFQWx]Kn @}dTU}w=IUo_Q7²gX]kn ˪ʃy!ɦ*aV^)g'PZ)i$HP1GL[*;~B |i{sLe\M M`tPhPYl;~Ѹ7+B>>hFhW.AHɦ -T _45 k oĒ|s{y!7\/Ӵxkv웧?i%}qfIT6p ΂efULk,xmr@E|EͣJ$qCѠIr{J!PMD5A h0EJ#ddʹsUhqOhF HS=u0)#jKփ\Ot=#xB _d]1uEV  I$!cMSqN{VSte=mx9 ?̊{n p̶,۱ۖbR77ˊ]2`ȏ`c6kM 5wIxNde37\kui 1[t~yú/vJ*M^56_̊:m'1>(+N&U4nI(,^B|+tһ<(JgNr(.*z{gZ:QHGɴSԝ2~ hlѪh= wI}yYJ20?{/)7[qnߧD DIwŕbemq|8Xx&cuf,6&Dt=o0ׂٚx%j0D 틍,]*]H @U @DURH>ML VH %i4 aJ7䯭eF{hw7uzedmiCyEUF9m#%^dMSΌ"> ;rֻeo44V_U'ojMxmMj!Fm 9@vsRD5']V<`/DtW&g3&db]i*[TkґDV"1 :{p+s0r<8j>^@JxB(b߶2'W=o^jFOj G,-Gc/ S\xK @D9E/ yLD;QdH&)$ b`ZQ%'2al;u,s36DkxEv\=`0ZH@s(?`(2xmI@H-hd& x`LFDyu(驪TCQEo&""N 04 jT{don јÜav ^OWfKsՀWUq'd?4b?S'|j($}%)2*qZr1hAM[[Eb2p5r R %cR%x5Kj0D:E>,! ZR1hA}@jzT+iY8;ذI܈b8DfrBVIV^ϫY2_,P[#^?GxҋRp>Gk(TQv s|E~!3z}ןNZ㺰G8F#1mGZ"~eFSC1xmK@T?tU6IY 4*I 0CQ욦iQڼ_gR٤r_ݳ!©+FD$VY$⮈BXƢ }֒fHT/1RTLJFq碨*Fy5aJkSQ2r֧&<=+R MYc>0?98U:5M74}ʮO馕iچ}Gzw4`xzcQ7M"B;;%f"}k»'48b(o3q9@'(@=xqjIP=PE Xgݥ!U6#I~MpӍYytĉ<Ǎ=%+*ezO;] {n9O!m;Iϻ[C]؇ϤWJ*꛺.؇;rjfmu|t~$%@ <-je@رZ><́gMÏ~nc_{H2'  4߾N3H<"qj|EihBeR<:a8JZ%:hfnQ%pƕ=R WoSZHF8!ΒwzRB@<4JŬv`;UhTw ssF7&&L]e\ϟt$}En(hOԂɃ ~gR)ۃG b$a/HeK#@MqEm@DJV78On>'ݍ9%Dbcɓ1N0x5j0E/JD(e>~K2Qb0_K].E+av"<σXb;Lj\)LE8מDn+>}+J8j}BI? ʹAfu?N;UV:P4yM ˉT|HM(d8z7^kJ1իMϵ)!&K]lrVxE1k0].FIr{.YO(@}B/ 8oH;+$FE68#YU.L$kSM`"g稥?'A{^+|;^>9_Dʸ1Dt*"[+4 J6J9a<ҸZ.3i)<QqB|B*Sΐ2m^wx"~>[Cx5]j F]!AG#rз.:&c.:iR=sIV%&w>ΰH-xbVڤS.BАPYwƕzɗe8*V97Y';JpLU6+ K럸Lw E`t{_q-44ʂ=!R=am_,vd}:xSx=KN0>(ۿ9;:v'q"1 xSɠXk<.hLv %e8RaE{R ʬNlN./U/j\IQ|ihٱG^%xmOJ+%xTeа=g_4ne>ʍ)SK%ƭH׿̶ 'z>ƒ$ȵ?zVx5Mj EyI/jQ: ޤB&B{G4R0*ux9~EΫձW ''ef7*zg)imRLKԙXW!ߨ? KXh{*-oB b9WІla!q`c+nYPCx5Kj0:Edd Bd< s835v/}za{OGw g5,o>}`9Bx31AWNMţs^z-MF R/ț9x-J0}/-iڴ p'/''ZLHO}z8F2,m0u?¶n2z4A>@Gbi\4>va9}EY3ꓶ>hI oj I.H}Cм眷FtIUuAV_d|u.6Iv{exBpWUXx-j0>EIRtwV/7-} ʀ6cDuPhHQ4I;/1 F9+cDќAKJ/S;_Ho7FBf`7^JyToEݕTXfdqJO!UoS[Н_"-cGZKhqe+SÛxmJ0E}oC~4W $7C;¸supmcМ - =X7h>`3rwእ /8ei>Da&Juq]> :#՝?qJ/IZrF:zJ.</OzJmyu6CyTPg{PxMj0D{}AmY#\*]@ }qGޛ)8pǓ qvpw#3`ZCV\']˓Ğ>z?8a T8mt h=,).|"}f-i_83u֪R 2}~A|VAWamǫIS =4H΍OxMMj0N}qPJ]z1VBzBW|>2K\RBjF켏BZS T>I{ FEѧ,D&U:p{q]yjp[,zrV;W,Nú9eݷ޹3qS=އ׋HpS*u>і1MxEJ0Fy'Y,p^6tHo}z#>8|p#L*84ek,>IK:KNd Q ]#獕CM҅|y05k5Q{޾x?Ĥ.7׊lICbtfA#>:0^r7{ۦn'nz"hiO{5 uRG%GsA9V9 z5Ê{7cT=SI<[YATwϛ[*ע+fv0b‰cS 0_7AS5xmRKo@#?ԃ[YyGTbl08haX,xwחTU|3fdhc-UDvnb(52+QK d `ٖ 4Utul*JM[,KruՔ%؊f`y1 gX @zSP YSEWTЗUY 6wf_ "6:HESpR/Ixe0 U2% w3q\qbo7T,ztXpr4 g:D"^"6$mGfiiT0a&aRj~^; l#pySǴ,zrΔ:VZY9^\W!8nʜa`ā c,%}S儿| _2׽F>Ykچ%ȣ+OV_hr.ꙑ>ǭ\e!F[Ͱ]͜# ]:'/T$B,urRΣ+\-XkJM==X}_q}穫{ ܓJ;oLz${ D7!(1ln2w+߾jwIZQ6MF@w笼"e{H[-h6t  W|/J!} ,@{s4h}=yPÔy'Z _,xmɒ@D|E@LwaQ,͢,*(7@~[-_d%ۚRXPE$"$"TbF_)pU\Ӣ 1J "3o365ߌ(93eJtOYVmƗ1[:kM~%B$2jܩMZD2/rSd޲9d#]ބ y.>BkIHRM_?FbCQ6|B!n6viVa[|+XC{OO=vi~|fu'>{ }3̟&.)iSjA_P o"۽x340031QHIKO*c` C{uZJk B%3x~_ܐ 8MuZ=;gC祖$%0H)01[xFx31촜bs9fq)?a9xdJx+ x31촜b]Үܺsgf{W%$ex340031QpԫaNoBzN 3HKM/J:i9vSKO_VplxɸQ3K2JTos=j 7?QJ"2ێ=M sqwٴUϮ~z ؕLxɸqR]7o.3>շCv+},; 'xɸqH_};Ï>eP}rAxɸqR]ZӶUyZ !RxɸqR]ZӶUyZ !yxɸqRaE ,55^Wq @ xɸqRMMmG_ dvS 'HxɸqRdghK5x31촜b] N+>w| (x340031QpԫaNoBzN 3HKM/J`)[JI0xɸQ3K2J騚#Skqg'*M>̤x31촜bCn8a+~yx340031Qpԫa RՐ+_pC!DEZjJ~Q"Xֿ}OU XM4A^xɸQ3K2J̼P|JLMvLTAEx31촜bsl?,ȸ̨x340031QpԫaxU(#`Ag71HKM/J`)[JIw&/xɸqR)*fb~;7;n\s w x31̒$gFo(_9#<ڿ5bobvOfqI^IE CF= u.^Ǚt2}믮֒ ?Qi:QФx31촜b$RI:[/g˫ͨx340031Qpԫa`~*7TH5cCԔD?u{ɳ fo1xɸqR΋UE`/__kg= WYx+GV}n]xɸqR>rl*-+9@ +xɸqR,ӂ}*sIa^͗S *SxɸqR>&};)̽e K{xɸQ3K2J:]iw9Zw&*5y041SO`w/hwx31촜bS|wuMx340031Qpԫa*4ߴL"ޙjQ_V5޳./y|v!_u5ڼ1x31촜b-,_/)jJA'x340031QpԫaZb+8~>޾!DEZjJ~Q"XxҺYم|'x31촜b9VT=5I2ÊOb/x340031QpԫaZb+8~>޾ġ Tx31촜b;e}mn6<+#x340031Qpԫa0aX=-h坯uS =x31촜b-[#ͷ}<*ױo2s*ux340031Qpԫah\1__1UmXT&0Ex340031Qpԫa{$(l5O/X*w }x31촜bwl>-?B/G9: x340031QpԫamZ5a-,6d x31촜bӱ^{_?g<9y 9x340031Qpԫa)['|\t{,%k; x31̒$YfkL#y140031QpMN,.)+(aXؾDO-Z^=tv v+Vl2uNƺ\|C:0h|J"Vk.Z,T.dgvXI*BN?#ܜԻak IBx31촜b< [gwMmiX x340031QpԫaHkn{!hqmE| x340031QHIKO*c` C{uZJk  x31̒$%SI$]smUD71;'Xa LUoq0V=~E9/kfX0XlKR" x340031Qpԫa5k74=ߴ^_ x31̒$&y/:kSR {ff&& ξ٩>%z%% 3M۳HUM?Ii\tv v+Vl2uNƺ\|C:0h|J"Vk.Z,T.dgvXI*B)MWx;//5$6"Häx31촜b]O,#Bu,ox340031QpԫașZ霹{Kvx;V x31촜bǟX\q{^[aQ鋇-Ix340031QpԫaИ^o>d?g9F6.' Ťx31촜bOR/\{g6 x340031Qpԫaxy)5f?fl]r,_x31촜bgϴ)_W +Ȣx340031Qpԫa311xxՍnS.O  xRi(fYF6&F8d6;0/g߬c&ϥ٩ \us Z5xVicJ}o'Xk1x[$vKtslY&rM) x%Xls{Y&NTP0YUtc,f ]ix?oV7ɏ&簫J"xwoC*$$''&fTNes^f ZiM(.*g];' <8Ci&^|2!s݋kW]wkrk(D|J2T'¡44bK-36b3ʬ;U T;nR6J xw*-"=mPƿs4)RƽEǿ!/cL<.b ?zɁzGx&h6v?߽$$zψ/eX!^/xURQo0|ϯ֐)MJcLKAld;E&Ъy}s,:9*ZJck8 { S59Yn;Jcz9*[4mmF[rq-hMZ;5$syߕw4n04!tWtֳȲ^@CmSs_dԪc7bERM'YN1CNH*I6aہ3KSg N i6oO sTCl6_ (\ ޴KeoX‡j_xu̍ÙX˾ x50>ECq,b"`#BşEuxT,;gH}6 2n^C$Z|ŀz( G2=qT%źFV*O@: n,̩Y6 8WK闧g` X4LZ7-?n,x;xqB=BBAAĺk%xNn0 +ޥHvqqe@|@iLɖ&Uߗ2$nHXl?g>QChQJM(nvs4v ꡜ;_:uڿQ c$^ffn,{ȏW;U>qTGE(CƼz8T.IiyvzU`5q썞.ƶL+cq / q͕x 0yR4鵂'{zFBk,iAXXvfRUsVŝ׋ZtkT2!6|@W<?61_#lBȤGo2C7} ^W?IF$m,ge$P=/c'Y9xtiT;Ē .}}P?+ļtݴݔ̴4L‰&RN*xmNn0+F"JBƁKRqj+:k)٠>6&yha>-jIF:<,\EcQa}wTUZ7#ζγ͘Sd6Bt. hwJj%%FZEQb4fT| ܞbDž޴u 4UrC5M/0޹mRpqfQ8&/4$־cBh#~1l lx= 0Q7:6mB.Β! DW-.~Ѩz0&OBe@䢥 q2BN<4jy#)F^~"bBmTd_BjTjW F^g򾇥w}ͪR8ĻxU?o0wD2uХRSeeĒ16,)߽T]; xȡN'72 PtͲzˡ+B n-P; >q;.dgUoUz;[{%t1{ZxH҄O' 5m•RmKSCmH/Iͥ^zQ@?>L$<#3}6$uh!q,FwvNԑ}dqx]K0+^'ËMƘ8R$mòd4d+80W>C)^uPr޲Y2's+P:_6VjMUP[Ŭ{W=REMPV24gc&S.v;DME?MFVR :0#1U⳨ WϿF,fۅ+EIeNx$m=뎟g%A JԚ XWl9 R;,3j?OKfiƽPT4dEc"x|ybƌz %E)؋KK2u'W3F lWx|yB$hox|yBb‰$&B<6x;|yB>k‰'ݙ'LVe\ze %$x;|y7#d*q?x;̼[__!$D!'3i% 'n4r2a"@__PZQSl51Gb"Bk`gkBrNb^zE& S"=}&3e*gn xy/xr#vVxTN0}WD4NBbT⭸M؞t&}R5X}HsϹ$y<Ẍ́ )\2Uܘ$鬀xvRkU:Ͽ0g rR cOk|$8I,Se) z]Im@k@|X e[""Ak\׺in1f^yZcV( UIkƱMQy-=/ 1r xn3[+uO8(d .U΀AiJd[,yE }݆'f-} CCAfk~FBlY8= I8 -oAL|kTnh2B>3ϖaphLtWWGBյeM,ђE~jX%m 24Ek8lJdtc{,TC$y+@dO !{19 4%U+)<MU>}jMN?™g8 LH[EZK?IzVGJQ%$) B DC^tk91{@[k qFI/eP(.A%$E\$_"x{5{D{1 ]gG?x_G/ ՜\t]ݲԢ<=4Ä< 99y0q#9 L x{uk&њB̤ļt䂂kY j,x;µkBiX1xuO 0? iM[ϩKLg70vxao}XE%1}U;'nAY5ZAl ыB$/Z5I^o;X-LzM[O+8"otpa 22͙aZ3W^>#\j'.n攕A{(M%1Ƀ<-[`xMj0DbhC\J4P9JMP)ڡfgy1> BgM )y6u>eXv3+c5*RpTJmutiDOr@%7ko5Duy/xQ]k1|ׯXb v|@ݺ6 =pB<ʒI{tiZڷUQFoiEVȷ,{PN÷nP#H=S+Z,@ǚŽJӟd]\S&*GL8 64ʜcj4:zj~**Jl|U45@. *ëyu1[\^.O;y_v9:_  UiD?g|lG&v5ȚxEc 1\Dx҃wcq8$ht|Kã{kLK'!"7hN oFl&/q1d3&'jxzuƄLaxUn8+*Ȩ%>IolYol7-P eE $e;wHˈ=I&9),p &\ɒWv[ Vbb 81+xBĨ QX(V@w!^ho46eUZ0cƄ>z2·@ЕӇjl4tF @(!rYpurDiJ i .B0:ZYn( z ]tcc&q 爰14u7Hҫbz=&vkTDKW3 M>N(-/9!Jmxc#)C~+n2w\TQFmܥ;8M=.PI;҉䌐l-~5W\%NtnV^Z_ۦQڦmYRyQ YGAKwϳ)&BA0_|]DW.T+->ˀl{%94b(ط(ߵ\ rpɵOBzUkB;L<nUPK. {pAʖCN#!]ޙ8h w}h>4(Mz1G[ܗ?eRdW74|:d쬛HC #2!nIƨN}Fj %wk8 dφ/`8&poGAG V@Ԏ3|:~pRXBA3yw깴Ox.:B{?oK5yYm$(̒Z4ey@CMaU ܾ?nOpפ2Ev׹ uI?{ZK|!+6׵k" 5KZ[`)"sCW)sRVKHKYXu.:K@:JuﱆXS:YR-/qU\6nHܑ7䆣l$cozK툜ʊXD#Tիg' 4lu;bau`uֻmwr4 qvIN)r>~&S/{q&8ǹԼ> TP2!\wkv޸<dm#OWBJ,T84lM13Jpg =(vǒhBr`Dsz˲I%YUS% Dxs8dksDDokjfsF-YLL% xu @E~%0r\*sѦr=2"͌D^jݜ{<܄6HZuTʺ!IO{г`klbJlFO>/1~n*i1{c qcTuF08?iD˸ >T7xgjeXƕWP\```&fiE: y% E Z@XMj."L^ e` 5 IE #4ܢԒҢe,pZ΅ 24:̕ ݣDhα!lWˆ$:qO 65R*/+j\C+NanƪЄM`uM'Ԣx!a@n*gU4kgܲZ!ge[zD1<x=N0~QPPpAjIz%&=W&$lG;3;;_&ט,ZKIJ, vh:Kg H/ a9$bwM>a]*#}0_҇/"U>(–뵧4"yG$SI`O(o.ٍԍ)+c'#cR{ \ ifտX!P.ΔRbduH cƻ%xmn0EQ*LH u*$Z+"ĕi2*̽gmeQ rr,3,K/XN_ֳt5PPA@쭽:-6omN&[1@Tꠁ- JY_C:v?Ӡ~U:/T.ӗRx:WG!9? 3'Hd~I}}7GO+Ģ\L3 3 ila #j@xkb2q Txkb}2qFj13hJxMO]kP }8eP0tS {6۴ܦց,!'#Fƍb|j9 89:e j߷=ZnI8(rd e 20Z\D* ^fõo [N)L)<ˮ'4Wqy;_oz ݢCHZIKR]ɏ fvz5(7TMs% jŞ x/_(S:fA42yb;(Ђ?SGCx:gfmӶ xE 0DZFr$IA)w:IG \쑑΂$[^KiXErcrS!YrȺÓl$Y'<<]1Ďg>3K5JISSbww-9ZM%N?jC 7,ж@*:tQf{2`BGƾ2h8InAIʣ| ^0L`mҋw=R^q_AUڛ>xk`A___!JҠb&u`jxUAO0 OC`[U]$ 16qEr)q$/+lfXf8))G艠"N6D4m_ϻ[ 6K0R‡[,&ҢqT_ uV_/*TF1 %s YacBT %wK y2@׶NFEyL.Eϫ&1E<̏1W^UQxiwr~nAfNjnQD $[dUG  ,x51@EmQء6j L WSx!"`l{gܗa RM.J%J7yRpؖ̈́ɭTckDf%ڑaj Z!QlP q|a++ lf5Z\ПU|}Bx38` A- /C3QuTLYvjzeBTxɸqR̐AePb|yc }xɸQ3K2J܌ضLҶb幪=ޝ,bnه%s`mڽ.MxɸQ3K2J^۲\sh^DGUJ'#Rlx.*2%9 9i *xɸqRes\tqNMOU) Qx΢ӨHq×U}\zxɸqRjm}Ϭ/= Jm !xɸQ3K2JTos=j 7?QJ"n^c/kk xɸqR|fN9zn]Ɍ]X C'xɸQ3K2J>vԧ#.|6Qi:H.]xɸQ3K2Jخz($Wfs lxɸQ3K2J~-R}?U(mרJ+jxɸqRTx&b+1I x !b}g';x?"40000 .github$Ȳkd]z֑" !b}_ xɸQ3K2J Vu_¬_[ag;2QYmY˖ߠ"hUxɸQ3K2J<~nw`ҙG:';QYmY˖ߠJ3!xɸQ3K2J~ӻ{'s[Ηfv!E枵lI Iޭ᫭?84zmxɸQ3K2Je%z`t`WESlD3_K$RANx C+< ux !b}g'xɸqRߗ26(4б|dm  xɸqRيf6_.|(̪ЯmZ b 3xɸqR_[߽Êx}e c_xT͎0s=!"QJYr.-RMBF|?8} &Xp5'5eJ!cR0r aJp\KnRɺ"]ކ4a#mjxyK5}C8?~c -%'j |󶮸tZJR3Εs*19v6F)jۄ5G eU76h~jrN4닚іa,J`yyWgaZijٟ6YR\%TL6EG*j)<=&M |q|2-߱Z3L\+`y8H>oQ, z}ͦzGخ𽟃.Kyz@;G-jF3$]i']'i2r&R옽 -^V/K;-IFqx;Es›3Zu429g#d~ {Z[b`e%wk%M`Otr\٬|xٌC|{!0;@994~7xĽg;y\<<"mK2surKtS26?b`2gi-xʹiB+Jx31촜bg|]~n ֢x340031Qpԫaxhbͥ'y6S?MT( Zx%zSt$.Fy\Ws= ex51@EmQء6j L WKx#"m{gܗa RM.J%J7yRpؖ̈́ɭTck{v$fZBgVHi2&)6Gw_]Ig=u3[լI- ԗBxA 0@}N1{Q&31 x1j%ׅpZ`%4f搒dS $ՍZ Q a48ekd,އ'mlӺ:bumXst{yUpKG|D'wn)MǗYo׉j^ƻ@]BJqXpV97g*cRߜ;u':^7H[TjO^'WASҧg$*y]އEEw}??)=FGAIe8K}z5_QnxmKn =`__jO)?aSŌTL2a~Ar&uNv{9Jv'Zx.x}{C,{&ge['75> 3">1VH?'3I?',WNMNWWPSSRP ($g&gsPgx;ɽgC@HcP~iq~Rf~~“XLn`ewsq qD()-(OKI,I:xKk0ѯX\ vSzJ\/5{ dJ{%=T73 sxCcQ-qDM;$y/Ի%č Z1.0Xv("RLGU/æ*aYkAOձ> BCl$vonS%YpQ+.﬍m ze2Opɢ(=,vW( N)~LuZYJ΋9/.l x340031Q+)J,,֫aX´r{_7[E^n]oQ웘Y\RWRQ <)LNZ*-Qtv v+Vl2uNƺ\|C:0daZ(Vto(-d:0| .oNJ5n=rE29x_ѽM[  Ñ T x340031Q+)J,,֫ax5O`_qKR=yC2gTb+%.62N>/kfX%YM-i6K_Ms_ֳ!b5x`tGd Kquck2MH6}V䠵}_s`)]ņd'$7䊼giXYpxe[ȁڙ`(NٍlžD}(\Tss)ծr`_t6Vw@TUSiM{9Z!f?gݧ]w~$ȁy^yf>NQN <E| ۬l r3f M[@1}owtY]?}QxEKj0Vyqtҕc ]G@F|?5D A)tI9,"$ 轆6q!Zg^\ʚ!J|@,twl+N=}_}=P=. 5g7xA1 ƻoD_cS;G< oVڽ<+Oy[9 JxEAj0E:K,, B*zfd9Hri{:PÃ@SKH(ȣwVl@G1a|pZ=J ̚hHfإه8g"&2UhRorjTAKv%\k7xFkuu]*||Oi ^ҿ,Z._p] C^4393ГdlO{x;ɽk͛ٙ&a]xKRM**J**,,?F>xKRM**PH*,,?.!xM[O1W"6ыyAm!TUuV{eϲET}9͌q%$%xz@} 1jE@KuNVQ7FR¡N& XTk/ˢܭ޺F }c#JBOLx;s#`AT(}yP(S~+)4MNG$I6ַ%C2pvAƦoF{"ɭMRyO)3LVkBu:~2#rc[t2ܒF&#'oKܕ>W$uO9!pzAZ?ˁZ@?9fYb{sl~iGe E7zxy_|;:M#:x3=I2.B7Q5 ]i P8QYJ AyoWYD%|xǸq*^;qO8rC~xe]T xU0).5$0h1*4)-iƨn%.\n仏s\h0f ](-J$cQɂJ<C즟T/DJFO DP&8^jmY<anYGANəiζ}r8xxqzrf^rNiJMqIJf^D"` d\x9j~4E o xD'100644 .travis.ymlir >شvkJ(wR'9j~4E orNlox;ɽ{͛Y!Q.xmK@Jf3<I"`vUP<y~̮or6_Inrm*$*>"%!Xd)4eaA$AT $ZQT $ Z,hO% 'qd1Pϲw,1JEbڃ? QVuʢH`‹,:*~8#AWlDͰpkq=KRZLc4h=foLw-yx}}*+〵;3dy}d8Hg pdh9/+s @kx~Lw {[5|B!١<e ko?#* Gmޕ{auQbZOlYҒ[/$%HNIpPO|6u7ơ8TG `u)x q_W m-xmR˒@WLU.IYYy UE@DD 0 cmՏCwK (NG$(EIcS>i,<̀ SRpH8DD!01xLR =)A% kxOHN_}H9a@|%ykt|-T^/lY5y zn+GoXUu(nHeZO^Q4Y[|A\"RMNFmԨ5TUx&}&2h4<}n'tubkQ!=4;=m3*lyt֖BQ;j|Z0X~ &p]ߖq'NiT9tlj}b]ռ kG[N63#OӢmq#_&[ bJrGY";ӼM lgڊn aN60ǟf"U0帖ĈXm6p{s4!71L9n1~wfkVS%x1曍:?2B@:7Sy@(x[ z߂?-ݗ-xmr0E tӎ1/!I:ccz#BЯoNw3Ε1L+)CR"3Sl eHՉe):A VKeV6LEҌi:+ !R4 ;`pͨc7fSF4m.XW[vmf$لqN}7)J tXb+a'LeԐOB@4G˫A8<\Md2H_c3jSxT/k3U'pbvݽU `~a7X덝&ovoIz>&uVauLSli=e0yI 9@F)̠ 3muO_T ߞ߀1xm˒PE|ŭ$)7N"jk ~}:ݕYѩ]k=J9*I*%J,Ij&@M "K4p E1d6,NX9,$(# gU#zFhPA,⬁'!^TM$^EN8杨 JGNAݑ#yze]6ba9 NwĠ`Ćo:甛TRZ_޻zzn̮D./Z~U0h|+8ҪݩӔYU㡠!Geϟ4.~+ (=k/=:LJuL]d$Ys80tfb"dNMIJZg@(]8-QRG=_B$sNh<Q0fG*~"R:ϑj"#36hO\Nake4EE*8ʾTшdJ2(~35/9pwBw2s`ZaFHtɵX̣J@,x8y4燱іboi~)wp̹f51.NS_쓺Iu3~po8*U-xmRˎ@# u-V;4f 730 vB7mhْeQ@K"(Ǫ&HXVaQBj^RuU.(rEQ Jd"r,ҲTubJ\"P "E%x-QNB@TtM_j^X W\ږ0(psge3f2YQk1+>"!$[ώ&oSr_8"Ƃ[}%&t```σ_oa,xmRˎ@#*.00[!!gH دoڪѲ-K6)PL\$IR!#D( 5H*HsK"-@fE$43MqȪtӁG6'> J/ ȪlJ""sy׶5cv#oQ֬SC][AsAuu@jj#WJH;qgr1`l n9f܌7e\wɁyA5~mVh辣IKs8 @J9K2H?.=ί>)Hb6V *»Sqsv;s o}"&:L z1* ~iuLR7 ,P&דyhsѓ3 a5݇qcg?fdn>fֱi %4U8ZgK\s F(!*kȎ!/ {Nsݕ_/|Ǘ-xmn@-xmY0*UV]CjI\̀9rpB_lTz@ n&-jW.)GăEj4LUSU^(RX\.YXYcxˋG5i>_Ԓ2Y~},cQެF} H$$KtyIjs"#=V;Ƒ8x0ʾWaĮ9%\.b@r,YڇYL˓C6 'aKp` xͩcTU_eXO񀶁]Ȇn0q&{ט-m4ۛc"bH:ɷa RXZv$Sg}'86vCp[|u/ˮ7-v,v]w՝nȚeIo#&۟ܵ:WȎqp &xjkrsOH̎+uv'ߴ8Z^2&) VɀщOd]sMGX>]}:lmAV~:j?:s1F ϶ 2xmr@+ղg5«Wkߜ WHnüٷ<~c},/αmPh do3o| N aį/FcZu8wa8&8+l,,X1d/9=7W;Z=ȟBߘb})[Nҥk T:+^+ω1[DRjZ>+~q4m᭝0/ 4r;+~ 'uWxQn wNU*`1vrf(:Tr;IDĘ,äμb<=U &ay/M [ףRCdoܷ n'~eigaraf{G\+(PsxK @9`n|J^~ToݜmVEGA+ĠG1Z5lBkD^8e 載^hTO;t28ڼ^LUXkCʙN嶭Bavmypi`.5c^Tk7)/߉> OxM1}N8תaf/6MR_}VR"C _}HTJu:]:VM17T(BZ>OHYrB=7@8d]e'ߎz*D1E&{p9Y,̟ˎoC iKxMj0нO1?K #cp Mޡ۷x2EEJaH>Hm)rS` c_8g.qrqHAQG[qR)۾}}aף~6,wx||pЛq Tb+}~HBmU6/_ Onx;n {N}JQ$Z`l?C) t٬(WKftPPRyi,2,.\'`N,Jϖ)' uh'4 : n>fߝNʮޛEK xY$OJ9sf3^RpoP*߸Sx]Wnx̱ @ў)#Gg0(J18lK[p?.@q#iL0gFM 0;)Ł*KL~ >sSzʄ(L4vO^&;n|{}5J+=gR @\1ӟ!u %y/wK xA =`ԌRHq9[p۷xRm7㜜5):]0/.TPW 6|xwG[;v)b,T~Ld 鱉B|iZJOY}(<;xZ[s~rSi4i牱䆭CiDn&% . =dwVM5Iٳ E/˝u:^ qw}{ws-~]SW j.T;=rnk3' M#Z%;1Ie['dWtbtVTc_^>[i7X{!pKUAUB֌۝N>hxΔcX/cO+Mzw P  8s+lv[z!S@me#Ic$핐%I ZY/^Ao i ! RcWҴ$arxùxg,я71ɪG3/eFGqB_RWY*;w!#J N,`E+;U<׍+VN$ٹe \hЄvGI%/i;aA:d AFu`R+'3=6L\Z]^&Qy|x[<'$ְ[ )GZoUkM[p4IY3htqw3r!8#A^ ?Pv;Q|lpcl(?jkZ Q9|RoRyH\1=qtLH^cBRs g' NPn*-pc4 (KҘp#-1bZYdąn`x8[ dV9 X[BA[/eΰœⓋW#$Sc Wh7; $AP|#:Tp~*܊܅r8kiՃ&Wbi|66|y6yaX唃H!K4LouNՓ/ı0HVRT)h:Fj'2㤓 ND%"Ѩ'Ju"9S6/'\Q6 pHd6 ~J"KQMm7n;h#ZLjDe}5ie^f^˰H5腍l(uD>[_`FWPhd!R+K:"7@)AZV"r75wTXBJ v?V>f+kF/2DAfmprtTiǖȏx4`YC ʾo48U+lv8" ɭquNZMY[@(j_`)_DVOˎq-$obn.5?B c::e[VAn%L T"ƹd0)Y"(Ifb<2Aŗ5sgJ2%S/I 6}ԔAddITgu>Iy=@ ]'MTũezٔgTe Y V/s0#Pwa_fM[8"5P":LflȪ[w̤ս$ Gg~ UjlmDL;1 `D*虘80O[5Q*Ұ +s UƑF:ag|흹2b1]hSY<<ъӹJ$ΦyI۪IgD1&cةu|K͎ ^5@7:aRcK 88l]%;rmӚyEjf"Vׯ̀ ՗ vKR͍P_ad.1)X1D[(>C#S 7Ī|t{?3]B΁)wv#jL_5lqn N}:CC6ժFo; tr)~4jVQ+bӁړlȦ7_ ΔԟJ;jҶ]1 7yc`HKa>]Rušq?ˉs/q?[r=?,u07bu^ZX~_h~K'ф+U6&MDsRpM."{ `z\[z?]߽\|B~u^N~Y_so@6t@73NOB˝1<I䲝fjExPGʮT|ǠwՒ4c6Awa6Boy̗ZcsmhJЮ `ՙѹ-!Q ъ)Gkm&CW*QӹF:-l>ƌ6F]8WWXWϽG/no?ߠ iZz/o>%.(kiBB>F:Zr $;o)D_gh2!Nz..L@A.uԦ: @;vv7"zVp6/i?' (Nr@!c嶋hfqZݨ ݐM.r4F a|_PM<½kϤ!o9e/UBzG>HgO*.("#\0U׷ 0R d MH0Z'QmuhxEJ1Eke-DN lM&I3b2$o,(n OJPY{xyȭrclG*419';M1O6wՍv۷no -3>_m7ʘdsFQGT9 qIAXWN8}: Vأ |s)0Ɣ1}ԽkɲMjkyɴ}7Z?teӡjATWى**uGMsti"NX/էBNvrFG lr14 ]Qo2LVx4K__!(JA59'1/}biF6%)z/ie敤i(y+)iZs)()Xsrq* x340031Q+)J,,֫al_AL_&3GB9&fdT0~6[סʂ\]|]Kn~xq_SF;$u(-db6yly_!% I:xǸq*KNjp8=D& ObxǸq*M r83l6ڢK ( xǸq*+ (ŻW+n暦^ 2xǸq*cɷ#N(YN (xǸq*tb5/V:(ϮRCo xw|Էqr;i +xǸq*і9'^ݝle 6SxǸq*j J{^c\h2Dp8 "(xrc]LkJĖ`b;be x[}g z]W?G'xgOנ+?TԴҜM4TT܂̜"ݢbIJ̜ĤT.$}<#"%6,'3)Y[Ŝǘ0Ë7xKx3=EYtFHzQY[IGY} 1afjHBxǸqg#œ:8xL1#{\ exwk*LY'[lV;,[ x340031Q+)J,,֫a8؃ɥ'68N2)kQ웘Y\RWRQ`7fVgg):~PzT_+X5̰by/s2:,s,UYe&eK*XM51T '& 9{{/, H߮ x340031Q+)J,,֫a8؃ɥ'68N2)kQ웘Y\RWRQivù{$U Vv53d뜌u\* rutu+*.a` PxW JI31T ;{b]۶\1s[HJg:x8qt Lx'cD?OA-j ё hx[õ/L3mNed|El2/ _NNJ*Y9xƵa>*$$''&f$$peO'r!`%/YuQ'x8qӻ> X߻!tίr ԧ x340031QpMN,.)+(a۹C2fqޕ0tv v+Vl2uNƺ\|C:0V0^ܝ͘[SLL @$h!bSطO(tC698x8qBG9EMe)o3 >x8qB),T= Hfx8qBȶ['fh~qǙ6 x340031QH+ύOH,*K.(`-5^5sJs>9ŦbQYWY%\1M!{BցN/ܴG  xn|xreBĚRь1x9 @ўSGX EQ28珋\ />7"YpDu`-6YИD+l4 .碕Y0rHQ_5":x{oSiV>Ty^)1DRLz GZ?,dKx5Aj0O1 ɲeA)9@w9h4 q<>̠rj6nV+{bC`"z5H)'K!EwcpSR_ܤ2|s'|p61zd A ^Q+?JS^ғR]cQGy헝p;PǶ^?Qs&qO^ {Kx5j0ὟbVݔIm>H_@46z~Tf0f$}!D!8њso5Ty0R9ؤ%z^#3l;:d.>M*zGv-uzmѡiTR],뺈puK]vZr1li&>Ͽ{m?{_ZNE~T:lc VQE x340031Q+)J,,֫a_R5cOʭ}ueξ٩>%z%% zn\8o{kcRyģ}u@Ux:]s +6g:'c]b>סʂ\]|]Kn~xq_SF;$u(-d8w{#-)֦_3jv1Jk:xD'100644 .travis.ymlΨlOwGvxAEƏ6'ً# wl&EF oxϵeɛX/YnxǸq*sW?bߒ"mm1 57 xK =`o4P 1 ӡmlvܾœƬe)@(/cDd.>76cJf:WlaC3#t6c7.֧GqFоݵF`:t[D"zrMX/Uxj(^nNyxǸq*=Q*mZ8d 9gxǸq*?/|!e9 I.xmIs@JlP̤"qAFC7la_?L-_w9=_SQ $9$#Q@L@>(.T*A+7 c3*#'I0@B2b4)B&.*pӎMEU ^{HIE / rAeI h x͋%MܒGYTFu?+s8ϖZ T%GfY7i߉c7YZU`o`c-97VC3)AA!Oԋ+fii}rζ9޽Ydx9,/+z02Ess|@5i4š>V:*vXuY\gp[*]SW^&]hkl̺wVnUk~Ɂ{.XZ%Gӏ8rÐyZ9C"]l<1'{M*t d ژH݇(ɜzjƁ7Li')ej8ah@E3ǯ8Cco暕1xmIs@ESU 8wiTϗ.Oݻ:3ȒdFq(*VASL4"IETä# J,R0Q,+Fb&bV$#-b e;q^0Uơ:н"Y*D8CnAeŠ.4YG/Ngf}w2XSw%_\-c)@$uIeҜnwPvvYҰ|y {e^!15'-d.̙s' >t't/x깘Ю[[39,JCK"X_n3ݻ8m=,6ܧԁuj!ѨvkD͡MTdb]Rͭ%Bzr:A7{z0Oz =&8'šbCۧkV0UUa\ׂ0?: GZerX/;U4xmIo@H-eFd f7kƿ~ % _ȇ\qKA E0&jE%(a"*BO8V_aĐPXEB{T-PyݼӢ@!-*0*.E؏K@@/4`F$Ic-ś>/eբ'}uܥ1Yt u͐l>t`d(KH%[[T=M9;>ɘlQKq& 5ɕ~@. `ߢҦ3FY+gyVva|C%'oZw:D<לdqrl r*9@}pkhrFrvj8T# |BUG>w^8M)BlNM7x%5%T6lw ,rY;nR<;7r)nbaGgã]0ϝ1%6vth [M8p6er6jmX5>+o gbQJTe3X}N~9F~}[i:t_#9hm_.'BĢpL ٻ' fjxTnH}?ffY_! ؄nnC@kD#JRy ˞DO."a*&)%0!x3ċPhxbːYU$%I0ذGQLJa6׬>a85Ma63LMwv8]kݞiλRޢ;6[t7M<Lkbxv&$+V1-Wh+X -f$)`-26x>ChxkG78`c776ǻ7ߗȑuby{<kyk F0. ezs}_[p@: GGVOnU- [$A,h!GdAARΊKajLLٝFúlzhnYw;ZFaQC$q NwJܫ*V&i1/|٨t}\:/|^{fMw+ lC wI#M`h4+G+ԸWdk9.\N&2bm`NXQiԿks4Y4Y55 A/ {Q1JÆ(@#%9_MJ?'&pr(Xv5+h{Ģ# %C[߅I[PU?#z%\ǜ>3wdOE9bNpV6ya.+IWpۏij4ϕh<F E>rLXЫ4!ꏋR [USBߢ"렼+ߴ7z12'J'j~g()xǸq*i< B?*]n8އ 1xmr@E|EWeJC3T@BX;n)M#!}[:F LĪ*J$)H&`B4Eu % 0#HUY7[n_/ƅg eHNV Mpܼ~G~iLxMKj0:aBۭeaݜ@g{m >dՃ*^+=0!DK&<Pr)/؛l!6ބIdKYa叶+ʌK{<}]|`myŷטw݉sI{k(\P[@*X32竸 ~)͟P?hJxMAj!ὧp:hk9 C.'(gnӧYd,wqfRYktH.s:,(vl AL20Hy3#EC9EQ:n}Y k_.n!5xpRMJ]cp}4wv@ZOBP@" n˔k[qH]9K8,xmɒ@D|Eݍ(2{AE@T(BOḼ"3/I!ˬ ቐ\B A>REb'  %9 y,AQSI,y;e^\ze33ϙc&sKA5}( T؟,xmr0E|ƈ73I';lR0;!$`+7m{Vgf9%9 hiU4*i*!NDBaHJ.*PB@E54Iơl98?'@r>?xIV!'PBDQV ݘgr5ע1{:|]Wgq}88oE_.̽m˲WڡWW'{W8ܝ-+6jFxT̲v1Vn/xG?o|[QuuUR6*] 2} {'^VF"J؜ջzK]!FȚcL@e'=X!:|=A|շAZ|e+ -cJ{E\;~]nz[9ˬt>)PDm#~Fqk7 * ﯭlt6vT2CֿX7__L8!9 @ dU*<x31촜bԙUѫ #ݷ[*x340031Qpԫa?TI6zݼ,v6H,J++`7ukʹ(OmnDZ40-5%(ة[kߺ`yQ-h3xmRIo0+,1j,6Q!I YYh܌1K-OfΩ-O5s`2D:%)PiD*#13aU ^4 !2J i2E&CBC#}9uE:1Xh# T`NUMZ .GO70c)"@S*<Ϛ dͬ SQ ^]$k6|~%URg x{q=;>عg/ l˲ǖ7s^C_wp{˺ knQv4m`2(W䐜abh_{j͋gv([KoxĶX*3Q*~)G:K-C5{- 폽֟2ׅ}.⠘hkzAK513K_ Y$3ԑݛ[^'Co9׸҃ꨌz]r vBN+j/*#9?i>( "vl}՛JO|TȻM,ɼSՑ5z1Ԣ-Db6.`!}u6&?7&H8~mbX9`)g4䴧5-+#pH/mU.xmr@|ܒ*UvlB,F@F 0l >NRz0 $Kq"!Kː"/d<Du6&M,HfԧB0fJ0@Q@P48. CnD $-ȁ I$4u]^1ϷuyˡO[}&kWw)}/'^NdIId6{Θ% C2at_ep0 NmI[LW)߷S鷣k䨋8!B>n) f͝WkSEL:y\aeQ[:`ksR"6Kf;< Q@:XՊ#{oM.)*_,Gi6CU$q'eg(bGaM?A4*3qY '8dLoVm*TʝuuJe{e~+/~]MvÍ/+UMi_sN+ ʘ/ۡyiu1@; 1h&Fuis6M %(=X7坖AxmSɮF}24Hh6 7f1KܦRB $θcs1(f9MJ3XΈ1Ѐ!) JTD &e<'RPE$ ^xBi?_9Jdʿ )l(5hf%?ׄnUָZ߂ʱݴ]ڦ+/O)+kSN|,dY ݗM=k:p%?J06T>',Ek͜5#37\iƪ 5tNMBLhIȫv-Mt5 wNjw8ݠ6~ibZ,3㴫&'o3(rckQ1&:ióu1ܙP5oK+.Sm}h Jy'p9DVսp*34Jɓ%H{a9C拹[Xa29AqNl&5K=]0ܹ/[R6US#$́`1({.rX\s4(3W1~Oi7) (a*=c8m}Oλ*]bl,%qp7i=ut#yN!?Qn=&I+iY٨_RuBJ}~nUK{ދf6bф!tì{衑Eo2hCc옍!mt5BC?A>Fx31촜b).IW>e_fܒ>x31촜b]AZƢ|ſ'.l͏; OKxmTɮ8z^yhU !! )1CS7]O+|$:wI (d%4MKgt*1O%DIiyDtq"12lj p 8cyYQhLe7_+G|"IƧL"$f(1 @FkDx,\ꅆG%e|k_@Hh"`[8 ޴=G^N?.|T0m.\kNLnSCEcOĘJQSb{LKgyWM$Tv6ZX%BSoqL4kQ:dYnrɪ_LѡVgɌj ='jKtRS]շ녫N/僤X$@sPTyI]cm**?lL{z Qgg] #;Y'>_b-QΝkqsPT};yhýTԦhcG2+ן.lP/qr.EpyF9}vkCsɱtΏ$7v$ $NgUXU}rR>'8O+)ٸ[H!;]7<O^=)$fvZ޳Ě&^83j<ȟbb"I9j~3w kN=V4޵<);pg2=S%I_rupcdDnݥwDNpN(wړdfX({  *eq: "c.2fl.<琽0flЁ {܏iW84GNF't@x($m @0.MU&$?1K1RH?*X5B~`˲\Jc z܀@`\c=BxmSF}G@$l|Ybvq6XzUT5R%qR,1"c!)$\JDP"` 9Vd4y,PD$i\׌Q?/"j~}`$4u]#QMʊ1߅в. (a9b\2{ڿ8 zȲʲWS,%+1LJ|&՚Lvdh]?;SAi.R-wE3 k2"j-4lދOY0es9}E:ڱʴEV]ST]mNcɖԜЫLSE;+>>A.ڇl/U~t3| F?i%qJzr.AmW3fwH%h*XX/mM)mwAP":mw[[lʃ(F=C)rizu>t{n+j3WTG4J}#CшA1`P NxKj0:dK)nJ/J]Mb`xA)杖J%7ZUUbLVfd(-# z08/:d6UmNhE:h>a^ A%~eZ;`JJLg\=7}l[aF4YXxAn0 EJ@ RUu:Ral)L~ to?Yt 脌k*d4hXꆾ4U鶴 +& PZtj=;SQcúwYr|J2\'!wϸГMJ9ە纆'SSݛWBڦiM# )Lw o#fa@B["9p` ~إ,)f`֠89I/~YW /q\%kU0B Iۢ -MNrۓxN0 y QDq\!A:ř&xzRO/o"~\e~Yh18 ΌqN(Eq2,r(8hO8kYs ^kZ ^Kf]WmKXa y5Akb4OE6"xuQKk0W=؎--m6I4qU¶{ٽy|G"}m^ԲjnHnU#I.Tg:]Q%5tgWTa+tFZ xS h|s/Hv@.L8=lUS組RՓcGWqYx"!oU¬2x>xYdi3Abdg.(bt٤ sdןkuQw&H94.NyM\,Kpɱ ҙ?PmEf<T_S])n xU}rcYr<ݭڼ,ߖۗvS՝xmJ0}b1( &6؛$ì|5E>Zd q&U)U2h^ˀHp#74ziv60}uܖ*D{[C`fzƞ$g_dox[J0E3~ʕۀ 8z=^'96|G~ xؠT:m,Vy_ix%j0z-VVqd#ɴ_70|L`5kP8I>BBFE4]NK턖$iE5MVotehp$ȉyWKWN 1n7PΙVËR}޹B:Шa g5}++!T4x(߹WXsC;}LfZxAj @b1QSJ)tSz0:KA'|ޓ #)d)$3ώ8DӀc'ӤNl\V0X3S1il 3 鏷ޘ6T70Y?z;xx҃a,]ꂅj 5@uqR5w,]l\qJ#ү,~i$xERn0+V%aAhX.%&4Ia_ʉQٙsdb$izZ #]p2Hc=;PnY%,#np4yJafۺx+VrocZvxB~vuBkiP䜝tѿ%Z RZH}zyL_aƅGl+ ?ʾ \ԛx=Kj0D:EidC&d'DjdգxP\} Jt6FR赒VuS4ݤn|[Gq`Ѭ>Ԫ]0xœa%%aNPxj!D~Ertf!\3+qT6O@xUPҘ L΢NӢgwluh? %VcBxJ0{b?M *x:m'm);x>ìh Ffۙ(%Lf|b&Uqb`hӺ!~&&bT˵4.|m]eUJ~i\I= ZGxVku&X3ϟ %×C{{ /.iSГXxAn bWcK(yE 6 uZFĈ(Qj#/m:#qdrҫ'6* ;mDhs_JUX+6v:>=1LEkyo䛯FojռTRALPLC1s|-1B|bWHX!ZFR4H sm:dЁ+qWYxt?dtLxn D{b.1g(5"Kr.S}DO҆hdQ ;tJsFܱRfM4L2:19*S4nHѣRQҡan;.Jܮ\k8#CfƒTRfBc4a^o Ln4!>w ~0%F(A,LS9^BZA$brjxAn! "{l+EU?Gc6H,R?\0cCS AV8@"1qaPU%(meĀTtu9Աerfglr>ZQ   ]{=MվaNExMJ0}KI6i@d+]iN;4tt|z+pu ЏhA(;{%QMsXI ֘S^^Xi0\V)SAq(K2o5c?s}DRw5ZuoR3>o{ qM{{#)?9OtE.K4#"s'w1p&zx~;uXtSW3xEKj0>EoYJ(t>'2hO_ ] Hb䒠AIk(qJʅ & U0,N^ . TZyhRYCalqG`vۑ{YN5 pp;*~'Z`Hu?|C-Wވ~ Jc?LЕxEJ0}K$i\N6&%?zV\}Jf8IFzij>LJ)qA\^فr⍘ҋ#QPPlEp<`A2}+Օ. sS"xnKU/pbVZn wz%x%_ ׂ߽Y ? ꁭA)f~*PF?F;UW1m+#y(ɍuyɰ<]xmMN0 F=J8i#!4'p"Apz IhF#2=%H[ef,7jw0x ە`'4 Gk6x(7>zcplWx8>~PK9*`R)m˽wK |딐ן(F Ä^u 耣Sr@=~?}TxMj0 @}N}IPz^@e!c[Y;tx2A- q1G핣#a0i|l\.lNv`S>(j  }[}QxzQ=O,7$;Mm*X,?<-.YzxR+kƃ$w-XdzPxMj0@N12!.4t c M,znO:3hsŒ㥄89WM5ԒEzR&Mq iy f T'XKg}ˠ6.O:rA:d̔4]MIXu!0Zy d;&OxMKJ1yVu^3Mr U)7GhD\'D^.ڤQ8ivbch8gDIb"2XfxGmS[R2qo8S_wƠ߿'шQn=A;%_>fVl~UIx;N1ާ =!\3+ .@7[0-Eb&M[u%ju.u²%ZÕ&OKUR B⠕̽uors)2[tIϱe%GP#_9cZJK) G1r+||*CU3R\|^|xMj!@ὧ}mSBVsgԁ?}̹4A XBs@Ng̨33=EEgu|&Ju?L7jk5i pozZQגd-Gkk v?18ߓOxEQK0^FO6)lȆcxWt+kfs[/ī>xLB PיJ $+%ȱC6H>#ȭn(6( Q[9c0RwQ=D#]|x3np5JbgxMKj0>G%hImAI> dՃ*^̂HJZWR9 xGӝ*], MRiL>DH!.8^ZhDg*וFG⭭'^kt..{(+^@L[\3?S=G u/#H|oϟ#bcRw-o9EBOlxu{XWnRť(ApWY ڂ I2/3@R# T[Y ,FjD~~v'I ]s9 ^C AZPV[ZW#`_ b//!qE |O6]ָa-s^@ A"=y0F$#2%$<W6QYpڦZB&a ~d}肺̮R*I/LF@ӑtbZj;ol1XɧU3ߴ?K'SJ$L拇C)e`]IDOJGmi|j3#)P᧲ISvK}|DEaP`zkWtwi[M՛j!PT1GL!;|g_kg *c) ȠpTuK#9/afƘ ^Bf6ASmc2ŕ5fϬP镃:(W0 b̵/}G_5 'Ί6Q,wG =G^;>O}ώHmt!fB* }ڦ2)a\?jt>d  @rM-b(mҮסiI>D^'~oGpO[FVj?ZZi1?rs,ʘ4 IYCrUG. G 1&F#"&ܪn6X>yg#E,bC[NEg+4-]Q# [oOf mN Ib9wDzeWUZK T2((LPؙ&omCTm犆̰A-qfӳտz {<'3@b)xW攋8{K BI'6h\s=vKc{(;YE:S3uΜFҲ9#|ڑ.\6k ChNsۻ?Xv\Ѡ 0ikg. rʁy ɇᡷR̙Jƹ%e ;b_^grQd0.w j}||yq2y"bQ[CTx鲹KKMZe˫XPIn"Ef="SV] I~F_#M>! G%%AU߉%y9h*[޿8fZ)ax!\x=us՘B0kʄ׳"a0x&|/"W5."D94x+LhOvٌ=&}4ox340031Qpԫap3$#+uR۬o !*RS$=cO# ]mx340031Qpԫad6|ѿ؃ԭY !*RSNme,Rӗ\)&k+ x<!40000 InputsUFUe`!n@ BGs >;@100644 libclang_cpp.cppr -RujUGr&%>Q&Jәj/ m%>mSMXD0wE GK4>kNғ}TbRx:.4HpFաI2\N'@{N8S֑YAɳ{dIx!1kvl)(UDE1W/x;dۚ^v*[EʣƳH7Þ) QЗXM ij4EAYxxkhؐ""DZ4Y܉>91 6 \ -x!H7Þ) QЗXM ij4C\xkhذQ$Y ?_JƕiE:Mb>-x!H7Þ) QЗXM ij4C/x:mAVEYj.p[p'tlMJi38xXlHxkȿfL ^x)&L9έf2 %Pz%, a77x[ͿBWpڡ.s fv +x[ͿC&զy:5_ⴚ_Zf=x IXx[ͿC&HCL> :&,W|g|Zf=l -x[̿adK}?u|5g/uh Yxi ! &C䨁hJ黝6oS|}CGwmduw^A?c)&0)˪2fùwzg?[1}:AGҎ7 -K/pP𚜓EQ x340031Q+)J,,֫aUXjRsNf̻mQ웘Y\RWRQp@_'sʣ-~ӡ*}<]]ʮf̳tt.a1PeA.zE% Yt=o(fzoa1Wq0XCe9xǸq* % -mWtv Dxڐ!׹cQanY#-]R Ek9z upx|@ BGs >;@100644 libclang_cpp.cppr -RujUGr&%>Q&Jәg2!v)TI ..$nr6>x0E$h}i21ۚ!V{*m^\ .x: BGs >;@C4Yz齠T9P.8$Hx%r&%>Q&Jәd1>';x{,@@< JKBgC3]дQуu~ֈ.l?xV!40000 Inputs,ߦqD!+Τ6!&plugins_newpm.txtg$G۰\;>% #x{ MpC&~Aj^nA|FjbJjQ^2/ro]91drW LLjKs@*_EL?~ͱU/z]|R|zs?&GB* x{ @`vSX]ym+=Bl-x{ M`.OXj%?lCx{ ,ef"Ixko߰Md 1k\΅s]Z~l%R >x!˪2fùwzgW0x;wo,gDzU+8}r֬; Ye}]x;wo,>+n^18r+m͆2L [ x!i䨁hJ黝6oS|}0xP 40000 InputsBtwͱ  &olY[>.-$x3 ! &_ D>|HoA92D|XWLHWBxgCHAOkmwbO< -x! Bc /vɂd \xgCH丹r{9J'k}u`9WuxUdjMo$+֔2^Z5 =xĽi>^DvFbM!CEZS7T2x{C/VZQ~n|rFbQq|NfR^rA'l6{&_|NߛmL:quxĽ{1Ȫ>yyO˕ĉtٝ%Z q"x;  YLIeJӟuJOUw 8v&CJYGkJx! 䨁hJ黝6oS|"2Sx: H5*!eȁqe{W+Iw|n yyxK gdٓf.R|ݻvfy6tsan.c횮̮/6eB?}_׉F#Sxz gxcfJt~ [HPf^ =:p? 0fC'"q0Âz u]8n%tsan.c dp;eb́DDh8!sxA !g^.4HpFաI2\N'@{N8S֑YAɓ{@dۚ^v*[EʣƓ)L.=>ۛ((_Jw^A?c)&0O.p[p'tlMJi38C'"q0Âz u]_DUw 8v&CJY?%test_asan_heap.c.R|ݻvfd6tsan.c dp;eb́DDh}x{JIxu1 r*r$OPx%  f"|Ŵ+鴪P<2[k4x[cFw[Jx( EJt~ [HPfYÓCnz!PxH d%, f4Xmg9$ONd\qIV}{hG*QI]4.h x340031Q+)J,,֫aKFͶO%gQ웘Y\RWRQjY8C织~%JOgW`Wka&,_<]duX:TY^Qq /=wo.61T sNEM7_fRWo$-^GsxK~ax` , fDWLA2x^100644 llvm_config_libs.cpp^ =:p?qn &&o)xǸq*WG/;]z kx[>aLr-x$d5B^CƒSK._O!UxqctFzyN wyՌ2xAu+;i}jd0zB b~N]m^˓y1hYjPxzu¤|ndx˺u¤&0N`j3Nc}xe¤'2\ PhbxFFu=op-Z8{er;|ځvfa8x!Ux8F֚5!D5CҐ"Z+;i}jd1&Rhx;ϲe*.x;yBL\3jx|yƌ^F:m0x"%cbI-xQu`ۛ((_JwC'"q0Âz u]G0xǸQDA(,X27ayeSEݠ5wt?]xĽi>^G6xǸQ3K2JRsn*O}Ti'7M-l>C*̳x340031Qpԫa7-ھ|Ssw#^-_dQXWZV9o֔sQ&܈ڵ.i.TaZjJ~Q"XUSTug;>-wx340031QpԫaؗXbǥ4%fY8[dQXWZV9o֔sQ&܈ڵ.i.TaZjJ~Q"XUSTug;>-gx31̒$wآtv v+Vl2uNƺ\|C:0{[3_Sk\jTUIjqI|IbzzjJ|bJJQ|bRf|qiAA~Q^2C y~;~4L^i,fx6cΕgƄM{z0gmxQ3K2J+Xk!ӑYQUCD/XxVMs8W\9@eLβD>N* $Jp&LR$.L̸!fASeUU >Wt'bGTf3W&ozlF9jc7k`Ilbd$sgOGw ( k]ZAi>j  Fv( #0H3vZlh4 ORQo#J# ·v8)0Ĩ֫xwЁ@,m},ˤ._LH hÀ~|NM?tcNӴ{=iy<^"}-Ų)0ZhHu- W1_rX4ܼ(S#נ(J G#U_iDyF$$_Sk j{!• Ҋlj4p7Ra;6\&~nmk6]|bajǮ?B F( &,%͑mGA{x ?"!0'R%iUXA%`'Šf`h,~"-( 7D k@(qҍondݽۧ'ofݳG6,C)T@QClG37:"'H8\En4݂QeesI.Qq %J E#a<-X'.r8.MQ*ǪBtU(`:%u]FM|lY3a[1u`aYQnoXެQ"F$Q 2KH,G Ȟ[Q +!Lޚ(j2F20i2pt)!نmDшbz:o 9O}vC2f)pډ<3&kHa䛉l3_5P J\'򥚒eՆlOXxvOk29|+r(`\ L̳nU ^+yQ=  \Ӻ21}}hۣp\HV S rV{nDf{fⴛ)_%+8}3gڧlޣV5.2NsW| Wx ;;) (p6}/3q J)i*xpWS?}BPv`f4U HxuSo0A lӨ4i"+q#B1 iݽv"s'0ZZEkA jdj LS:xL n&f{D ̫̓6shR)ڃǧ!N+Cnb.| 2QLf|󭛄eXqLĥ ص( EFVlm$ْ͎F k Q3QCtP"b.XK0VB@JB( t{w-V D@HrM;M~l7hL>Dbb ȂgآAW Kq7|_F>"HĒiRrҜ"V;R[rH l67G3Ncb\._X69Y\EM HbB&Vgd O(ғ3 wr SR[6k`fQ )PT[P R ⪐Y[RWX5sd>OxO'T̤dmmɜ,*~~.ryy)Yz^Exg>67G3Ncb\._X69Y\EM HbB&Vgd O(ғ3 wr SR[6k`fQ )PT[P R ⪐Y[RWXɵ#IgxukB|Ll e]<<"surKtS2&2o^TxJxųwV< W?G'xOPpO?T̤Ҽ̼KYFjYxg¾Gooxsg¾G/NZgiZK}FW.@UNc\ -u845b[ػKJZ_Sɴxؾ1w$1יl|Cߔ Im etx{kCnJfZ{cH~&LL8 tkixo*v%gxÿo; Qlxw4Si(xÿw;61~gO@x{g277kv0=RlxϳgCǙ"l2xs{C՛ X3<x}N0EW* '[`R4qbd($m!] v9=bj ެ4NSc~(6+}}wK-Te"vsעs cIW+?QwbҰsJ9!Z٠ٗrI3.h^2_6I+)9"^0|t.%kknqexiDQV%9W_cxUQ]o0}Wh0ɖ0` jV+Tق+u_Aݲ|{ j (%=1HY5u(_\ZѺT%( :p%ȁK hGYմcQx!n(zd6,mjEv_V.&~Aqy>8zвnZ2 BE>9D#KJ2!B~W_,#$tف xU63h c>WqS+ c a 玳FZ+cLQIKKZ̗_nxsVTH+n '7PRmp >ܽ["oKq"_:?4& C^gg\[@ͳ B* F^NaVb Φ:g#ic?x~qmxPNA<_QAMs%8h"+g;23Ӥjz7YWVŮb!(;:"vex'O?ǠH L2K88*姥$$l>(Mxȵ{.dAQ~ZJbIOo@cBfZ'2 ;y9En~˜SPx;q(OBAQ~VjrDlyݜ\==.e P `+TěR&zƚ\\iy)ى SbSmZx{xqBն#l x{k[r^L#wslWx[k.xf/&&x5sCL/0ɳ*$MV`| fxsB [bNt뙪73bvZ 9_xTˎ0^ Qe#""Q:eJȏ.~DM;R?N&NW]DsGroѾ` G?& l@p&2m"\\R%ut]V&w5gv5iJG:zIs"G`䀘 gXom͝WUL#;Ylw)ܡ*Dnwuy݆NADm3O-O)istc +Q `<>+0 kCr5QB(yiR3]Ë#e5q w&K$Y~ViKEBko/[G4Iǫf^lvF^u 6/Vx=@أ5˒$}ć>bZ?vDXW/8|M?@smMtʟEQ)媘':Z(2O$mbfv~)r?&K'ͦCx} GNxk͛ٙ&ae}>AA!nn׳x;:zyF8xd&ɹ٩ zz jj 1\ l.& xusCcLMSK4|||}]\<#C<=\ Ē |TԴ "fgT̜b,GsK Mlx5kC9L lx͹smg"p4xsC9L՛?1< Fxιa M< \ )E I9) jj )6HnC&J̊U'3L,;YEar ړyYKt]\|\}<}\Bl>N~@!0xg_Go W7ψ["$\]C0;971;U_AOOP O!9#59 s:>=xkıEXOOKAAW!71;U!9#59 eYlzxcCLL x!y&晜e %%Ś\Y| xkX;nqF~ni^qiAA~QIj.D"-13GAL$X ˓>x{y}di&MɮL?3L$=ٞur gcPTktn1'O rx;~sfIF4%0xg_Go W7ψ%+ތJ|ɹ٩99e\2*# uusqPu0%\\_2Kf,T4pxXmo6_qp[*)Ib~m5%pVD٬eR)'^#Ċ-9΀aHwd8*4Rp4\& ~ x N4E +RwOiFT?X'8O{zL/Iׯ0'*aJE'L $,Bc$sfw dH:;O^ւӓpz +qgx;| RIq+D۟T8;WƝT_T bXZ 蟾AWX9 ԟ h|z] p޽øq_C#|8tOF}˥"Q-S|FCo7o zqH(ZmL`INb9ʞ{F d@MK +BP%P/l` pVBc!* Mn$[ S¸U6?yYdnM(IJ &AfI) ,IVpvc( ?W0% s0DIFƜ]YB%N1 < ÂyRqA0n:~1:W4&eRځII,,% ;Bh7.Pht,Y]Jc*:T&eQGt1'Xj=a'*씻JF)a$c6?n/0XGX㘒(e+Ӗ ?;tV=aMьerSNiUrZne`uɌ$"A^>B옠.h7|T>y$U/)t'.Cve<* Ƒ \ޱVfy}vWT&b ϊK1d[|kj1|`xx {^+t]l~ Fݪ kŨ>rרP0 {Pn7`f1.L&DYNg8++6z\(gbkw}Ɋ?'3 VjxI$*=x 9XfpU3`W*@eEm]P :a>*wNg7=UVD7 mm(.[旽q/xL!5h΋%HNhxp_4ֶ4B Mm`f{Q%g۸rV%'p4/Q{mo*!\FxxSAU7'"[(xꝻz8fXrNS;*l=<=q鹋5具EwZ+m5XAǰwp .]_ "팜"C.%Tue Bf/P[9pIp|,KFX3@=ؓ"pw=?&Vg" v=OD_, \ҒIY-^nʫ , o xPJ1+AF{GTQ,oL$ijf>nU3@Aе}Y7@I;ƙj1댉 ]N9Szll;*)eӹZ)- >ezCY =yXM/n؇ 5t|jj뱑t-+):=fDi/&b}>_o4J|qJz&b{ЄEPyN鰞۶DS:Y' gXے:D҅vc0k9D^)p 62]YB0}t^N⍞xMJ1}NQ{QSJ@d@$33 7Ԅ6ZoYyO:Q׀J&)Ed$B0ԝAN+ux,y)~4̿}^].dÍ6Z}=-c!\x?pmXv݀7`څ7<Uśx]K0+{A&mq_dV7ɛ66D^pHA++Q3,U)TGgi`@RYPjmV$1wi,:rMpNw#K-ZJ \s1gTQBI2czjf}?=>KC-|~J>NS3m׋!~A>$idm,Fkѓ"xMO!kKIѨ55Q?0EYhmKWz> )RUEu +Bjj.[B5/$چm1KeeYaM9ҴRʺEù*D6\6B1SP#\Fpޜ=)"ux9˷I+RKJi!ۭ4' 3!O2[(Q}wvƏ~Z;@s%)ž-eyZC3yaJ&Ckr鉋b4n_,1PIn=lpG{x\=\A-Y_ݎHOc x31̒$[{W8Ub+uO740031QpMN,.)+(ax<ŔmNI*_U Vv53d뜌u\* rutu+*.aִF@1pۦw%OAUė$''&e%3$ξpWGSNa߿%b[{~7ֹn4z̞zte bkxQ3K2Jz_e k\[nD2+4x31촜bmnU0IJ39ux340031Qpԫaȵ^?a3YvO`8'Z"(9#'30riԭ)L>ͷk]\´ԔD*uEʿUҳ*< \$e ;*a&x]m'vN̤ɎR97e| +xۮvH}'͢ @ZY\RSVZ`h:&nz,“8%s2 sr&Os 'j_x;~X}xN\92R)x;~}JV cˍT2_%~xmn@= q95[۩4|xҮu*\@yH4'`b‡vFgz勍>qt&\dlOU.T"U6ti- =EVJ#KY0ډNؓ ۮ^lh.ܤWвNsX)WPhxu者A'*,Eցύ75NjyGA'$nc;A&'U(|wrz&>j]p , RR 5s}ϸ)P 6aJs)HIa %QZ@H( *sNfzvt,mgND[60b߯56m "AgCMԪKpw6wN_?r;!xUo8bӭ%|*QtDd?o& 47o28 ̬J*#pdP }i_~g@.@b D ٟV!lu[voy$Vk2)[zA%pd TGTS4~}Zc.l:,ǀYrɀ}$ĬAUPT`\ L4݇40NBA|\:\PWs R$DДq&SZs R{B`2N[&U !dxRMv YΧ [*,ES }6KìKOGجO2q9UȪ" IMxDѐsoK!T@;\ Ec'6[___ t@89|Y,5(:*[ab$iy(ipo]Bt I,IIbPĤ(~9{oTW;e==wuu9s> {hP8\H$)髜*i8yQ<'cr\RA-`GsBc[p:.TJsڀc,Ҍ3fD{ƏৰJS8>?1#Mh,W;e`kc<ݕ%":FM8 ȤF $'>TF[%! ^ǧdh8d0@!஦z rg7dwJ⪬n|$blBjrؤG 9)x(*rT2P^v(jڒlcl윭KOw*{U{;#D"Q~o*|mg+n@k1ScHpp<Fa@ _3sK`h``fb_[_S̐4KL>މ]k 9~=ǧkvG:|QYn1ԌT]yz =?[`)P=|}jVn,S:x[)OpC=CJjBj^bRNj|NfRQbQF^bniťi z%z%P+ 670ed((9x:8(irqMc.*s#xUQjAWZ:ؠ8h;C$wVn]U3)( 6}m#vK5nnqt\LY''J yiQsk/Q$HT} [Ev^Fu}3GyÙ(%Ba`JLKۿCH*ǫ^D &c$]j.(E\lN [D:`/fE51n\x+,+]ZJz]l~~  xq}"qq?f\|>1 i:xK# Col`9J\]s 9?100644 whole-toolchain.cpp~Û !?#}$Ӗ2 xQ3K2J6:8}363o*WlEt\܏%b =LxFa!Qe)i:Zrqk!B)Ou(follvm-toolchain-integration-test-suite/.git/objects/b2/0000775000175000017500000000000014773454057021724 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/b2/d3fa7115c0f31a5be54e688804ea09c5836c7c0000444000175000017500000000027214773454057027056 0ustar dokodokox[j!)?|BB( m] Uq9Ũ9G㒴_NoyoG,XǼV'O:G~Z,RݎY p26<ڶ]Sllvm-toolchain-integration-test-suite/.git/objects/18/0000775000175000017500000000000014773454057021651 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/18/2fefe8087e73d791682a6759adbf2e841d12160000444000175000017500000000036114773454057026745 0ustar dokodokox+)JMU021f01̒$rEWS{{c&҆f&& ξ٩>%z%% /6֙|sY)Ir}*}<]]ʮf̳tt.a1PeA.zE% ךH(n.rdɞ2ԔĔĤ҂djwi:lAX_5;V%==pڝ@h<X?u P9lF}?62Mҹu]WDwVv]\qxsN)pyP<~Zf@$BkvSy@WuFU ?A8"R}=1Ff[q:ESwȸ*szD+⦥&|y^\(`m5lg1aصeS#$!'uiϣ{~5EpHS,8{#7'~˻aws=x[g /q4҉}lP/s`f?&,=IA?5 1̂?9? |cra0PA]&lS؂gG*:B0UJzMNAcXKM-ˮޅtllvm-toolchain-integration-test-suite/.git/objects/08/0000775000175000017500000000000014773454057021650 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/08/5f71840bffeeedac053551b8a98e62d9c4e5210000444000175000017500000000342114773454057027147 0ustar dokodokoxmy\gBnaj؄íi Vld2IF&3cf8DXH9Jn@Q( Ub<Z*/Wy{ DQc<LP ͪq(U5 k}_~c H2iyCBW^6B8MDpA &E(5{W].|90KPq #$HeT*\N~6U˂v aF IKt!NOoj/tk,gCfZ\"3 ydhHAÕOb:`y2N7U%sً?|Q;5;VJeƞ :N[6 —aPBAs [Tѭ+8N)eerژwm##bࡂuB?{;?WՏ:$Ga {V:'_txaxx!2$k%~ot|ˢAOϿ0H V2k)(uF_-\SQnT|Yf~1׮f}ޠYD^弁s "DJ+^}Ag@iJ 0]w5~\d7[2n, '$ŀJBJ!ڙT? n> azUk h"H⨶̬"Ւ=Ea)cs(k[!\:o=WEl@b-Bڊ ޙ=6Ju aB[X"̡㍝pͱ8Xu_8\usVOk׮KoZ*u)GƢ7 c{'@ ރWc%Gy;pnH=h2]QT w)3ZҼ2jg c8`|-{OLPa`\-2H{3h*9P>ή~`e\3ÊMYxX반u WG_WkMkJ mxX_2dOTUIjqI|IbzzjJ|bJJQ|bRf|qiAA~Q^2C y~;~4 ^i,fewqoFsG ^`llvm-toolchain-integration-test-suite/.git/objects/3e/0000775000175000017500000000000014773454057021730 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/3e/83a2a7c50e436bf35f90191b60c3d127cd87fe0000444000175000017500000000102114773454057027047 0ustar dokodokoxuSMs0_S^Zrg:ӑ-"KFZ1m;+ 핼Um} gggNvXd`9)?FfyΠ`:9Jb/VO aXKcZ26bI$'qZ!ɼ_WSX: oZ{)Ha4l^ގsUD!;55AsZ]qD PR/ן.޾BDT)g/g>(+¹RXTEKբDoPc?HZ=:NSJPw%@LڃvlиE JNn[į~ֻoزRK4va"#m㉀Furn?Kd,#iMKh8E vDFg5Κ_RfIƸsXNڸD5Zr3dh?OhVScƪt`>% )80wllvm-toolchain-integration-test-suite/.git/objects/1a/0000775000175000017500000000000014773454057021722 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/1a/6dccb4bb50c71bdca5715afc576dd052cd28f10000444000175000017500000000025114773454057027407 0ustar dokodokoxE0B 8P8&^XIiPR_w[VVMZUJ\B" [rw0N@BMi֩RY-jmK{rw~{)%dqOS#_2Rr=c.ix@Fllvm-toolchain-integration-test-suite/.git/objects/a9/0000775000175000017500000000000014773454057021732 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/a9/ba6cd4afe38978340c750f628e81a75e503ed20000444000175000017500000000036114773454057027072 0ustar dokodokox+)JMU021f01̒$rEWS{{c&҆f&& ξ٩>%z%% z}^ 'nY~ޅY?̗BUx:]s +6g:'c]b>סʂ\]|]K5*)P ܶ]b}=ePU%%%)))EIťE%z /Qt/x a^=No?N1%(>1)3 D/!qZ?z|p}/430m\DYMosGwdtllvm-toolchain-integration-test-suite/.git/objects/01/0000775000175000017500000000000014773454057021641 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/01/f5c8573192562cc92697b219d5c6732bdea8b20000444000175000017500000000036014773454057026647 0ustar dokodokox+)JMU021f01̒$7 :W}LMbobvOfqI^IE Ëu)l;\vJR\JOgW`Wka&,_<]duX:TY^Qq õ5R%6u\/} $$$1==5%>1%(>1)3 D/!qZ?z|p}/432鸷ucԣkkallvm-toolchain-integration-test-suite/.git/objects/63/0000775000175000017500000000000014773454057021651 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/63/0b1a09fe61bcb168def82b12a83b2793c19daf0000444000175000017500000000016514773454057027207 0ustar dokodokox+)JMU044f040031Qpԫa(JnRw)O;̷xug[U6UXWZV9o֔sQ&܈ڵ.i.TaZjJ~Q"X"wYk*vc. -llvm-toolchain-integration-test-suite/.git/objects/2e/0000775000175000017500000000000014773454057021727 5ustar dokodokollvm-toolchain-integration-test-suite/.git/objects/2e/758e4a60f34391b39976ef9ed0538f9af837a50000444000175000017500000000234314773454057026764 0ustar dokodokoxV[oF3(J}4d56%!`0_茝4= Y)p;:>0eJڭh0Ht4?ЃЇc϶$d/򭠩f["|9n{4k@yCDB Y^2Q$bWi$rTy"7 ȭAFSUq֋IR(ICp~ۚՑhty].D,e#_Uӿ13a 1~C zPs+k!2%"LBc 1كqpAwD sxbz bbỳŽ# D}Q3x1B <\H3 z럗CPA<iKǡ16Nвz]R\!d/: =\M\Ld,iWDn[9 ­_:eU+/tgĪ 7gCgzwC0+u !tIITWă[@3{ۀ#T;rz|SK$ãܥ|u1曺vOTҬ:49j.s#=Kwˢfh8Wnz ΂:mv Y56 uY]AQ/fD%b9[ |.p0]4.c68`Xߣllvm-toolchain-integration-test-suite/.git/config0000664000175000017500000000044414665635536021165 0ustar dokodoko[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://github.com/opencollab/llvm-toolchain-integration-test-suite.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main llvm-toolchain-integration-test-suite/.git/packed-refs0000664000175000017500000000272414665635536022107 0ustar dokodoko# pack-refs with: peeled fully-peeled sorted 6b08ccdb4285b1a35d8c4650d49e849fddccd29b refs/remotes/origin/15-branche 6b4d9865a3eeb64d6929f07c8b248f3d2b550d7b refs/remotes/origin/feature/no-upstream-support-for-lldb-ppc64-breakpoints ed5c166946ede806129db4c02d84661e5346a4bf refs/remotes/origin/feature/test-debuginfo 4c6b77005311ae93ddbb67b9f69ce6bf30e8afe2 refs/remotes/origin/feature/test-format-diff f2d4ca220da3820a2d0afd4a8d8e496c285ed1c4 refs/remotes/origin/feature/test-lto-lld 452966be3348425309f955623fc680dc2bef1566 refs/remotes/origin/fix/enable-compiler-rt c29640ee99722250cf504d612b7a964d0e2bf497 refs/remotes/origin/fix/scan-build-require 4b14a3536fe1b067d63b346e055eaf0ac2eda8fb refs/remotes/origin/fix/static-linking-libc++ a9626779c0eb910d67a9586ce8d739f859c42536 refs/remotes/origin/main 4aa987c5d5af38aeed3122828f4f2560195ac1a8 refs/remotes/origin/sylvestre-patch-1 3fd2d46eeb92c1f8dd07ddb898c8766427df1a87 refs/remotes/origin/sylvestre-patch-2 1d659e6d8748c83773caac90fd1463766a86ca88 refs/remotes/origin/sylvestre-patch-3 a86884ee69ea6c95e98ff057ad045ce95ffd7f9a refs/remotes/origin/sylvestre-patch-4 3ff1e239e179b4157a59ddefe7dc4f251583f84b refs/remotes/origin/sylvestre-patch-5 a9f98e3e8e830b117197c1fd0568d6e73805d7db refs/remotes/origin/tests/cmake-llvm 153b1bb8fe909becc3440ba825fef1dccf3379a9 refs/remotes/origin/tests/llvm-config 931db6366ba6ed5f134d7fd3fd40a39102e0ca7b refs/remotes/origin/tests/plugins 2932f250fb6ba85b89feb30fe97826495cea43cb refs/tags/12.0.1 llvm-toolchain-integration-test-suite/.git/HEAD0000664000175000017500000000002514665636326020412 0ustar dokodokoref: refs/heads/main llvm-toolchain-integration-test-suite/.git/hooks/0000775000175000017500000000000014665635536021116 5ustar dokodokollvm-toolchain-integration-test-suite/.git/hooks/pre-rebase.sample0000775000175000017500000001144214665635536024353 0ustar dokodoko#!/bin/sh # # Copyright (c) 2006, 2008 Junio C Hamano # # The "pre-rebase" hook is run just before "git rebase" starts doing # its job, and can prevent the command from running by exiting with # non-zero status. # # The hook is called with the following parameters: # # $1 -- the upstream the series was forked from. # $2 -- the branch being rebased (or empty when rebasing the current branch). # # This sample shows how to prevent topic branches that are already # merged to 'next' branch from getting rebased, because allowing it # would result in rebasing already published history. publish=next basebranch="$1" if test "$#" = 2 then topic="refs/heads/$2" else topic=`git symbolic-ref HEAD` || exit 0 ;# we do not interrupt rebasing detached HEAD fi case "$topic" in refs/heads/??/*) ;; *) exit 0 ;# we do not interrupt others. ;; esac # Now we are dealing with a topic branch being rebased # on top of master. Is it OK to rebase it? # Does the topic really exist? git show-ref -q "$topic" || { echo >&2 "No such branch $topic" exit 1 } # Is topic fully merged to master? not_in_master=`git rev-list --pretty=oneline ^master "$topic"` if test -z "$not_in_master" then echo >&2 "$topic is fully merged to master; better remove it." exit 1 ;# we could allow it, but there is no point. fi # Is topic ever merged to next? If so you should not be rebasing it. only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` only_next_2=`git rev-list ^master ${publish} | sort` if test "$only_next_1" = "$only_next_2" then not_in_topic=`git rev-list "^$topic" master` if test -z "$not_in_topic" then echo >&2 "$topic is already up to date with master" exit 1 ;# we could allow it, but there is no point. else exit 0 fi else not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` /usr/bin/perl -e ' my $topic = $ARGV[0]; my $msg = "* $topic has commits already merged to public branch:\n"; my (%not_in_next) = map { /^([0-9a-f]+) /; ($1 => 1); } split(/\n/, $ARGV[1]); for my $elem (map { /^([0-9a-f]+) (.*)$/; [$1 => $2]; } split(/\n/, $ARGV[2])) { if (!exists $not_in_next{$elem->[0]}) { if ($msg) { print STDERR $msg; undef $msg; } print STDERR " $elem->[1]\n"; } } ' "$topic" "$not_in_next" "$not_in_master" exit 1 fi <<\DOC_END This sample hook safeguards topic branches that have been published from being rewound. The workflow assumed here is: * Once a topic branch forks from "master", "master" is never merged into it again (either directly or indirectly). * Once a topic branch is fully cooked and merged into "master", it is deleted. If you need to build on top of it to correct earlier mistakes, a new topic branch is created by forking at the tip of the "master". This is not strictly necessary, but it makes it easier to keep your history simple. * Whenever you need to test or publish your changes to topic branches, merge them into "next" branch. The script, being an example, hardcodes the publish branch name to be "next", but it is trivial to make it configurable via $GIT_DIR/config mechanism. With this workflow, you would want to know: (1) ... if a topic branch has ever been merged to "next". Young topic branches can have stupid mistakes you would rather clean up before publishing, and things that have not been merged into other branches can be easily rebased without affecting other people. But once it is published, you would not want to rewind it. (2) ... if a topic branch has been fully merged to "master". Then you can delete it. More importantly, you should not build on top of it -- other people may already want to change things related to the topic as patches against your "master", so if you need further changes, it is better to fork the topic (perhaps with the same name) afresh from the tip of "master". Let's look at this example: o---o---o---o---o---o---o---o---o---o "next" / / / / / a---a---b A / / / / / / / / c---c---c---c B / / / / \ / / / / b---b C \ / / / / / \ / ---o---o---o---o---o---o---o---o---o---o---o "master" A, B and C are topic branches. * A has one fix since it was merged up to "next". * B has finished. It has been fully merged up to "master" and "next", and is ready to be deleted. * C has not merged to "next" at all. We would want to allow C to be rebased, refuse A, and encourage B to be deleted. To compute (1): git rev-list ^master ^topic next git rev-list ^master next if these match, topic has not merged in next at all. To compute (2): git rev-list master..topic if this is empty, it is fully merged to "master". DOC_END llvm-toolchain-integration-test-suite/.git/hooks/pre-push.sample0000775000175000017500000000253614665635536024075 0ustar dokodoko#!/bin/sh # An example hook script to verify what is about to be pushed. Called by "git # push" after it has checked the remote status, but before anything has been # pushed. If this script exits with a non-zero status nothing will be pushed. # # This hook is called with the following parameters: # # $1 -- Name of the remote to which the push is being done # $2 -- URL to which the push is being done # # If pushing without using a named remote those arguments will be equal. # # Information about the commits which are being pushed is supplied as lines to # the standard input in the form: # # # # This sample shows how to prevent push of commits where the log message starts # with "WIP" (work in progress). remote="$1" url="$2" zero=$(git hash-object --stdin &2 "Found WIP commit in $local_ref, not pushing" exit 1 fi fi done exit 0 llvm-toolchain-integration-test-suite/.git/hooks/pre-commit.sample0000775000175000017500000000315314665635536024402 0ustar dokodoko#!/bin/sh # # An example hook script to verify what is about to be committed. # Called by "git commit" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message if # it wants to stop the commit. # # To enable this hook, rename this file to "pre-commit". if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Initial commit: diff against an empty tree object against=$(git hash-object -t tree /dev/null) fi # If you want to allow non-ASCII filenames set this variable to true. allownonascii=$(git config --type=bool hooks.allownonascii) # Redirect output to stderr. exec 1>&2 # Cross platform projects tend to avoid non-ASCII filenames; prevent # them from being added to the repository. We exploit the fact that the # printable range starts at the space character and ends with tilde. if [ "$allownonascii" != "true" ] && # Note that the use of brackets around a tr range is ok here, (it's # even required, for portability to Solaris 10's /usr/bin/tr), since # the square bracket bytes happen to fall in the designated range. test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 then cat <<\EOF Error: Attempt to add a non-ASCII file name. This can cause problems if you want to work with people on other platforms. To be portable it is advisable to rename the file. If you know what you are doing you can disable this check using: git config hooks.allownonascii true EOF exit 1 fi # If there are whitespace errors, print the offending file names and fail. exec git diff-index --check --cached $against -- llvm-toolchain-integration-test-suite/.git/hooks/pre-applypatch.sample0000775000175000017500000000065014665635536025256 0ustar dokodoko#!/bin/sh # # An example hook script to verify what is about to be committed # by applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. # # To enable this hook, rename this file to "pre-applypatch". . git-sh-setup precommit="$(git rev-parse --git-path hooks/pre-commit)" test -x "$precommit" && exec "$precommit" ${1+"$@"} : llvm-toolchain-integration-test-suite/.git/hooks/update.sample0000775000175000017500000000710214665635536023606 0ustar dokodoko#!/bin/sh # # An example hook script to block unannotated tags from entering. # Called by "git receive-pack" with arguments: refname sha1-old sha1-new # # To enable this hook, rename this file to "update". # # Config # ------ # hooks.allowunannotated # This boolean sets whether unannotated tags will be allowed into the # repository. By default they won't be. # hooks.allowdeletetag # This boolean sets whether deleting tags will be allowed in the # repository. By default they won't be. # hooks.allowmodifytag # This boolean sets whether a tag may be modified after creation. By default # it won't be. # hooks.allowdeletebranch # This boolean sets whether deleting branches will be allowed in the # repository. By default they won't be. # hooks.denycreatebranch # This boolean sets whether remotely creating branches will be denied # in the repository. By default this is allowed. # # --- Command line refname="$1" oldrev="$2" newrev="$3" # --- Safety check if [ -z "$GIT_DIR" ]; then echo "Don't run this script from the command line." >&2 echo " (if you want, you could supply GIT_DIR then run" >&2 echo " $0 )" >&2 exit 1 fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then echo "usage: $0 " >&2 exit 1 fi # --- Config allowunannotated=$(git config --type=bool hooks.allowunannotated) allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch) denycreatebranch=$(git config --type=bool hooks.denycreatebranch) allowdeletetag=$(git config --type=bool hooks.allowdeletetag) allowmodifytag=$(git config --type=bool hooks.allowmodifytag) # check for no description projectdesc=$(sed -e '1q' "$GIT_DIR/description") case "$projectdesc" in "Unnamed repository"* | "") echo "*** Project description file hasn't been set" >&2 exit 1 ;; esac # --- Check types # if $newrev is 0000...0000, it's a commit to delete a ref. zero=$(git hash-object --stdin &2 echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 exit 1 fi ;; refs/tags/*,delete) # delete tag if [ "$allowdeletetag" != "true" ]; then echo "*** Deleting a tag is not allowed in this repository" >&2 exit 1 fi ;; refs/tags/*,tag) # annotated tag if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 then echo "*** Tag '$refname' already exists." >&2 echo "*** Modifying a tag is not allowed in this repository." >&2 exit 1 fi ;; refs/heads/*,commit) # branch if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then echo "*** Creating a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/heads/*,delete) # delete branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/remotes/*,commit) # tracking branch ;; refs/remotes/*,delete) # delete tracking branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a tracking branch is not allowed in this repository" >&2 exit 1 fi ;; *) # Anything else (is there anything else?) echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 exit 1 ;; esac # --- Finished exit 0 llvm-toolchain-integration-test-suite/.git/hooks/pre-merge-commit.sample0000775000175000017500000000064014665635536025475 0ustar dokodoko#!/bin/sh # # An example hook script to verify what is about to be committed. # Called by "git merge" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message to # stderr if it wants to stop the merge commit. # # To enable this hook, rename this file to "pre-merge-commit". . git-sh-setup test -x "$GIT_DIR/hooks/pre-commit" && exec "$GIT_DIR/hooks/pre-commit" : llvm-toolchain-integration-test-suite/.git/hooks/fsmonitor-watchman.sample0000775000175000017500000001116614665635536026151 0ustar dokodoko#!/usr/bin/perl use strict; use warnings; use IPC::Open2; # An example hook script to integrate Watchman # (https://facebook.github.io/watchman/) with git to speed up detecting # new and modified files. # # The hook is passed a version (currently 2) and last update token # formatted as a string and outputs to stdout a new update token and # all files that have been modified since the update token. Paths must # be relative to the root of the working tree and separated by a single NUL. # # To enable this hook, rename this file to "query-watchman" and set # 'git config core.fsmonitor .git/hooks/query-watchman' # my ($version, $last_update_token) = @ARGV; # Uncomment for debugging # print STDERR "$0 $version $last_update_token\n"; # Check the hook interface version if ($version ne 2) { die "Unsupported query-fsmonitor hook version '$version'.\n" . "Falling back to scanning...\n"; } my $git_work_tree = get_working_dir(); my $retry = 1; my $json_pkg; eval { require JSON::XS; $json_pkg = "JSON::XS"; 1; } or do { require JSON::PP; $json_pkg = "JSON::PP"; }; launch_watchman(); sub launch_watchman { my $o = watchman_query(); if (is_work_tree_watched($o)) { output_result($o->{clock}, @{$o->{files}}); } } sub output_result { my ($clockid, @files) = @_; # Uncomment for debugging watchman output # open (my $fh, ">", ".git/watchman-output.out"); # binmode $fh, ":utf8"; # print $fh "$clockid\n@files\n"; # close $fh; binmode STDOUT, ":utf8"; print $clockid; print "\0"; local $, = "\0"; print @files; } sub watchman_clock { my $response = qx/watchman clock "$git_work_tree"/; die "Failed to get clock id on '$git_work_tree'.\n" . "Falling back to scanning...\n" if $? != 0; return $json_pkg->new->utf8->decode($response); } sub watchman_query { my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') or die "open2() failed: $!\n" . "Falling back to scanning...\n"; # In the query expression below we're asking for names of files that # changed since $last_update_token but not from the .git folder. # # To accomplish this, we're using the "since" generator to use the # recency index to select candidate nodes and "fields" to limit the # output to file names only. Then we're using the "expression" term to # further constrain the results. my $last_update_line = ""; if (substr($last_update_token, 0, 1) eq "c") { $last_update_token = "\"$last_update_token\""; $last_update_line = qq[\n"since": $last_update_token,]; } my $query = <<" END"; ["query", "$git_work_tree", {$last_update_line "fields": ["name"], "expression": ["not", ["dirname", ".git"]] }] END # Uncomment for debugging the watchman query # open (my $fh, ">", ".git/watchman-query.json"); # print $fh $query; # close $fh; print CHLD_IN $query; close CHLD_IN; my $response = do {local $/; }; # Uncomment for debugging the watch response # open ($fh, ">", ".git/watchman-response.json"); # print $fh $response; # close $fh; die "Watchman: command returned no output.\n" . "Falling back to scanning...\n" if $response eq ""; die "Watchman: command returned invalid output: $response\n" . "Falling back to scanning...\n" unless $response =~ /^\{/; return $json_pkg->new->utf8->decode($response); } sub is_work_tree_watched { my ($output) = @_; my $error = $output->{error}; if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { $retry--; my $response = qx/watchman watch "$git_work_tree"/; die "Failed to make watchman watch '$git_work_tree'.\n" . "Falling back to scanning...\n" if $? != 0; $output = $json_pkg->new->utf8->decode($response); $error = $output->{error}; die "Watchman: $error.\n" . "Falling back to scanning...\n" if $error; # Uncomment for debugging watchman output # open (my $fh, ">", ".git/watchman-output.out"); # close $fh; # Watchman will always return all files on the first query so # return the fast "everything is dirty" flag to git and do the # Watchman query just to get it over with now so we won't pay # the cost in git to look up each individual file. my $o = watchman_clock(); $error = $output->{error}; die "Watchman: $error.\n" . "Falling back to scanning...\n" if $error; output_result($o->{clock}, ("/")); $last_update_token = $o->{clock}; eval { launch_watchman() }; return 0; } die "Watchman: $error.\n" . "Falling back to scanning...\n" if $error; return 1; } sub get_working_dir { my $working_dir; if ($^O =~ 'msys' || $^O =~ 'cygwin') { $working_dir = Win32::GetCwd(); $working_dir =~ tr/\\/\//; } else { require Cwd; $working_dir = Cwd::cwd(); } return $working_dir; } llvm-toolchain-integration-test-suite/.git/hooks/push-to-checkout.sample0000775000175000017500000000533714665635536025536 0ustar dokodoko#!/bin/sh # An example hook script to update a checked-out tree on a git push. # # This hook is invoked by git-receive-pack(1) when it reacts to git # push and updates reference(s) in its repository, and when the push # tries to update the branch that is currently checked out and the # receive.denyCurrentBranch configuration variable is set to # updateInstead. # # By default, such a push is refused if the working tree and the index # of the remote repository has any difference from the currently # checked out commit; when both the working tree and the index match # the current commit, they are updated to match the newly pushed tip # of the branch. This hook is to be used to override the default # behaviour; however the code below reimplements the default behaviour # as a starting point for convenient modification. # # The hook receives the commit with which the tip of the current # branch is going to be updated: commit=$1 # It can exit with a non-zero status to refuse the push (when it does # so, it must not modify the index or the working tree). die () { echo >&2 "$*" exit 1 } # Or it can make any necessary changes to the working tree and to the # index to bring them to the desired state when the tip of the current # branch is updated to the new commit, and exit with a zero status. # # For example, the hook can simply run git read-tree -u -m HEAD "$1" # in order to emulate git fetch that is run in the reverse direction # with git push, as the two-tree form of git read-tree -u -m is # essentially the same as git switch or git checkout that switches # branches while keeping the local changes in the working tree that do # not interfere with the difference between the branches. # The below is a more-or-less exact translation to shell of the C code # for the default behaviour for git's push-to-checkout hook defined in # the push_to_deploy() function in builtin/receive-pack.c. # # Note that the hook will be executed from the repository directory, # not from the working tree, so if you want to perform operations on # the working tree, you will have to adapt your code accordingly, e.g. # by adding "cd .." or using relative paths. if ! git update-index -q --ignore-submodules --refresh then die "Up-to-date check failed" fi if ! git diff-files --quiet --ignore-submodules -- then die "Working directory has unstaged changes" fi # This is a rough translation of: # # head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX if git cat-file -e HEAD 2>/dev/null then head=HEAD else head=$(git hash-object -t tree --stdin \).*$/Signed-off-by: \1/p') # git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" # if test -z "$COMMIT_SOURCE" # then # /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" # fi llvm-toolchain-integration-test-suite/.git/hooks/applypatch-msg.sample0000775000175000017500000000073614665635536025263 0ustar dokodoko#!/bin/sh # # An example hook script to check the commit log message taken by # applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. The hook is # allowed to edit the commit message file. # # To enable this hook, rename this file to "applypatch-msg". . git-sh-setup commitmsg="$(git rev-parse --git-path hooks/commit-msg)" test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} : llvm-toolchain-integration-test-suite/.git/hooks/pre-receive.sample0000775000175000017500000000104014665635536024525 0ustar dokodoko#!/bin/sh # # An example hook script to make use of push options. # The example simply echoes all push options that start with 'echoback=' # and rejects all pushes when the "reject" push option is used. # # To enable this hook, rename this file to "pre-receive". if test -n "$GIT_PUSH_OPTION_COUNT" then i=0 while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" do eval "value=\$GIT_PUSH_OPTION_$i" case "$value" in echoback=*) echo "echo from the pre-receive-hook: ${value#*=}" >&2 ;; reject) exit 1 esac i=$((i + 1)) done fi llvm-toolchain-integration-test-suite/.git/hooks/commit-msg.sample0000775000175000017500000000160014665635536024375 0ustar dokodoko#!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit" with one argument, the name of the file # that has the commit message. The hook should exit with non-zero # status after issuing an appropriate message if it wants to stop the # commit. The hook is allowed to edit the commit message file. # # To enable this hook, rename this file to "commit-msg". # Uncomment the below to add a Signed-off-by line to the message. # Doing this in a hook is a bad idea in general, but the prepare-commit-msg # hook is more suited to it. # # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" # This example catches duplicate Signed-off-by lines. test "" = "$(grep '^Signed-off-by: ' "$1" | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { echo >&2 Duplicate Signed-off-by lines. exit 1 } llvm-toolchain-integration-test-suite/.git/hooks/sendemail-validate.sample0000775000175000017500000000440414665635536026056 0ustar dokodoko#!/bin/sh # An example hook script to validate a patch (and/or patch series) before # sending it via email. # # The hook should exit with non-zero status after issuing an appropriate # message if it wants to prevent the email(s) from being sent. # # To enable this hook, rename this file to "sendemail-validate". # # By default, it will only check that the patch(es) can be applied on top of # the default upstream branch without conflicts in a secondary worktree. After # validation (successful or not) of the last patch of a series, the worktree # will be deleted. # # The following config variables can be set to change the default remote and # remote ref that are used to apply the patches against: # # sendemail.validateRemote (default: origin) # sendemail.validateRemoteRef (default: HEAD) # # Replace the TODO placeholders with appropriate checks according to your # needs. validate_cover_letter () { file="$1" # TODO: Replace with appropriate checks (e.g. spell checking). true } validate_patch () { file="$1" # Ensure that the patch applies without conflicts. git am -3 "$file" || return # TODO: Replace with appropriate checks for this patch # (e.g. checkpatch.pl). true } validate_series () { # TODO: Replace with appropriate checks for the whole series # (e.g. quick build, coding style checks, etc.). true } # main ------------------------------------------------------------------------- if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1 then remote=$(git config --default origin --get sendemail.validateRemote) && ref=$(git config --default HEAD --get sendemail.validateRemoteRef) && worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) && git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" && git config --replace-all sendemail.validateWorktree "$worktree" else worktree=$(git config --get sendemail.validateWorktree) fi || { echo "sendemail-validate: error: failed to prepare worktree" >&2 exit 1 } unset GIT_DIR GIT_WORK_TREE cd "$worktree" && if grep -q "^diff --git " "$1" then validate_patch "$1" else validate_cover_letter "$1" fi && if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" then git config --unset-all sendemail.validateWorktree && trap 'git worktree remove -ff "$worktree"' EXIT && validate_series fi llvm-toolchain-integration-test-suite/.git/index0000664000175000017500000001353214773454057021026 0ustar dokodokoDIRCAgX/:S}gX/:S}8uݕ4ARY!).github/workflows/CI.ymlf;^/of;^/o8Y5dZ4Ck_`'͇.github/workflows/fedora.ymlgX/:bgX/:b4  .uJ`CvS7CMakeLists.txtf;^/of;^/o4 ,^EiVs49GB3- L LICENSE.txtf;^/of;^/o4 ւtp!QY/[Ɍv README.rstf;^/of;^/o4 aߡJ.q,ߏtest_tagged_addr_abi_support.cf;^/of;^/o8¿OG]{*"}~tests/Inputs/clangd.jsonf;^/of;^/o8I?`R3iY*cItests/Inputs/foo.cf;^/of;^/o8>jQake#5 tests/Inputs/llvm_newpm_pass.cppf;^/of;^/o8%fZN9Ws$tests/atomic_fetch.cf;^/of;^/o8 ֚5!D5CҐ"tests/basic_clang_tidy.cppf;^/of;^/o8a޻V:RoStests/basic_debuginfo.cf;^/of;^/o8L ?!6PNR6dtests/basic_lib++.cppf;^/of;^/o8"|}Y;a$t}tPtests/basic_lib++2.cppf;^/of;^/o8Q:RN8[]tests/basic_lldb.cf;^/of;^/o89tTpIVzntests/basic_lldb.inf;^/of;^/o8v6**' H~Ad]tests/basic_lldb2.cppf;^/of;^/o8"z)_atSatests/basic_lldb2.inf;^/of;^/o83@s Ĵs@!͕m&tests/basic_openmp.cf;^/of;^/o8á)i tests/buildid.cf;^/of;^/o8"i |#cQJ辇ætests/clang_format.cf;^/of;^/o8رESQCJ;d tests/code_coverage.cppf;^/of;^/o8dVZp֯(VNtests/code_profiling.cppf;^/of;^/o8Z5*!eȁq{0NIGD= ʙtests/lto_and_cross_dso_cfi.cf;^/of;^/o8{mWp∆\-Vtests/test_asan_heap.cf;^/of;^/o8M1ҁDˊ+ 2tests/test_asan_lc.cgX/:bgX/:b8ҬdړjpI#tests58 1 ?U) Baᯟ/Inputs3 0 ,ߦqD!+Τ6.github3 1 aw*cXzO%۠=4workflows3 0 v廰=ׁˇ۲ nlws:@& wllvm-toolchain-integration-test-suite/.git/ORIG_HEAD0000664000175000017500000000005114773457203021224 0ustar dokodokof9f84224061a0d5439e866de11104e64d8f349ba llvm-toolchain-integration-test-suite/.git/description0000664000175000017500000000011114665635536022232 0ustar dokodokoUnnamed repository; edit this file 'description' to name the repository. llvm-toolchain-integration-test-suite/.git/refs/0000775000175000017500000000000014665635536020732 5ustar dokodokollvm-toolchain-integration-test-suite/.git/refs/remotes/0000775000175000017500000000000014665635536022410 5ustar dokodokollvm-toolchain-integration-test-suite/.git/refs/remotes/origin/0000775000175000017500000000000014773457203023670 5ustar dokodokollvm-toolchain-integration-test-suite/.git/refs/remotes/origin/HEAD0000664000175000017500000000003614665635536024322 0ustar dokodokoref: refs/remotes/origin/main llvm-toolchain-integration-test-suite/.git/refs/remotes/origin/main0000664000175000017500000000005114773454057024537 0ustar dokodokof9f84224061a0d5439e866de11104e64d8f349ba llvm-toolchain-integration-test-suite/.git/refs/heads/0000775000175000017500000000000014773454057022013 5ustar dokodokollvm-toolchain-integration-test-suite/.git/refs/heads/main0000664000175000017500000000005114773454057022656 0ustar dokodokof9f84224061a0d5439e866de11104e64d8f349ba llvm-toolchain-integration-test-suite/.git/refs/tags/0000775000175000017500000000000014665635536021670 5ustar dokodokollvm-toolchain-integration-test-suite/.git/branches/0000775000175000017500000000000014665635536021560 5ustar dokodokollvm-toolchain-integration-test-suite/.git/FETCH_HEAD0000664000175000017500000000511114773457203021317 0ustar dokodokof9f84224061a0d5439e866de11104e64d8f349ba branch 'main' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 6b08ccdb4285b1a35d8c4650d49e849fddccd29b not-for-merge branch '15-branche' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 6b4d9865a3eeb64d6929f07c8b248f3d2b550d7b not-for-merge branch 'feature/no-upstream-support-for-lldb-ppc64-breakpoints' of https://github.com/opencollab/llvm-toolchain-integration-test-suite ed5c166946ede806129db4c02d84661e5346a4bf not-for-merge branch 'feature/test-debuginfo' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 4c6b77005311ae93ddbb67b9f69ce6bf30e8afe2 not-for-merge branch 'feature/test-format-diff' of https://github.com/opencollab/llvm-toolchain-integration-test-suite f2d4ca220da3820a2d0afd4a8d8e496c285ed1c4 not-for-merge branch 'feature/test-lto-lld' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 452966be3348425309f955623fc680dc2bef1566 not-for-merge branch 'fix/enable-compiler-rt' of https://github.com/opencollab/llvm-toolchain-integration-test-suite c29640ee99722250cf504d612b7a964d0e2bf497 not-for-merge branch 'fix/scan-build-require' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 4b14a3536fe1b067d63b346e055eaf0ac2eda8fb not-for-merge branch 'fix/static-linking-libc++' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 4aa987c5d5af38aeed3122828f4f2560195ac1a8 not-for-merge branch 'sylvestre-patch-1' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 3fd2d46eeb92c1f8dd07ddb898c8766427df1a87 not-for-merge branch 'sylvestre-patch-2' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 1d659e6d8748c83773caac90fd1463766a86ca88 not-for-merge branch 'sylvestre-patch-3' of https://github.com/opencollab/llvm-toolchain-integration-test-suite a86884ee69ea6c95e98ff057ad045ce95ffd7f9a not-for-merge branch 'sylvestre-patch-4' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 3ff1e239e179b4157a59ddefe7dc4f251583f84b not-for-merge branch 'sylvestre-patch-5' of https://github.com/opencollab/llvm-toolchain-integration-test-suite a9f98e3e8e830b117197c1fd0568d6e73805d7db not-for-merge branch 'tests/cmake-llvm' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 153b1bb8fe909becc3440ba825fef1dccf3379a9 not-for-merge branch 'tests/llvm-config' of https://github.com/opencollab/llvm-toolchain-integration-test-suite 931db6366ba6ed5f134d7fd3fd40a39102e0ca7b not-for-merge branch 'tests/plugins' of https://github.com/opencollab/llvm-toolchain-integration-test-suite llvm-toolchain-integration-test-suite/.git/logs/0000775000175000017500000000000014665635536020737 5ustar dokodokollvm-toolchain-integration-test-suite/.git/logs/HEAD0000664000175000017500000000250714773454057021364 0ustar dokodoko0000000000000000000000000000000000000000 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381470 +0200 clone: from https://github.com/opencollab/llvm-toolchain-integration-test-suite.git a9626779c0eb910d67a9586ce8d739f859c42536 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381626 +0200 reset: moving to origin/main a9626779c0eb910d67a9586ce8d739f859c42536 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381626 +0200 checkout: moving from main to main a9626779c0eb910d67a9586ce8d739f859c42536 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381798 +0200 reset: moving to origin/main a9626779c0eb910d67a9586ce8d739f859c42536 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381798 +0200 checkout: moving from main to main a9626779c0eb910d67a9586ce8d739f859c42536 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381846 +0200 reset: moving to origin/main a9626779c0eb910d67a9586ce8d739f859c42536 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381846 +0200 checkout: moving from main to main a9626779c0eb910d67a9586ce8d739f859c42536 f9f84224061a0d5439e866de11104e64d8f349ba Matthias Klose 1743673391 +0200 pull: Fast-forward llvm-toolchain-integration-test-suite/.git/logs/refs/0000775000175000017500000000000014665635536021676 5ustar dokodokollvm-toolchain-integration-test-suite/.git/logs/refs/remotes/0000775000175000017500000000000014665635536023354 5ustar dokodokollvm-toolchain-integration-test-suite/.git/logs/refs/remotes/origin/0000775000175000017500000000000014773454057024640 5ustar dokodokollvm-toolchain-integration-test-suite/.git/logs/refs/remotes/origin/HEAD0000664000175000017500000000033014665635536025263 0ustar dokodoko0000000000000000000000000000000000000000 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381470 +0200 clone: from https://github.com/opencollab/llvm-toolchain-integration-test-suite.git llvm-toolchain-integration-test-suite/.git/logs/refs/remotes/origin/main0000664000175000017500000000022714773454057025510 0ustar dokodokoa9626779c0eb910d67a9586ce8d739f859c42536 f9f84224061a0d5439e866de11104e64d8f349ba Matthias Klose 1743673391 +0200 pull: fast-forward llvm-toolchain-integration-test-suite/.git/logs/refs/heads/0000775000175000017500000000000014665635536022762 5ustar dokodokollvm-toolchain-integration-test-suite/.git/logs/refs/heads/main0000664000175000017500000000055714773454057023635 0ustar dokodoko0000000000000000000000000000000000000000 a9626779c0eb910d67a9586ce8d739f859c42536 Matthias Klose 1725381470 +0200 clone: from https://github.com/opencollab/llvm-toolchain-integration-test-suite.git a9626779c0eb910d67a9586ce8d739f859c42536 f9f84224061a0d5439e866de11104e64d8f349ba Matthias Klose 1743673391 +0200 pull: Fast-forward llvm-toolchain-integration-test-suite/CMakeLists.txt0000664000175000017500000000576014773454057021677 0ustar dokodokocmake_minimum_required(VERSION 3.5.0) message(STATUS "Checking for lit") find_program(LIT lit) if(NOT LIT) message(FATAL_ERROR "lit program not found") endif() macro(find_program_or_warn OUT_VAR name) message(STATUS "Checking for ${name}") find_program(${OUT_VAR} ${name}) if (NOT ${OUT_VAR}) message(STATUS "Disabling tests related to ${name}") endif() endmacro() macro(find_library_or_warn OUT_VAR name) cmake_parse_arguments(MY_FIND "" "" "HINTS" ${ARGN} ) message(STATUS "Checking for ${name}") find_library(${OUT_VAR} ${name} HINTS ${MY_FIND_HINTS}) if (NOT ${OUT_VAR}) message(WARNING "${name} not found. Disabling tests related to ${name}") endif() endmacro() find_program_or_warn(CLANGXX_BINARY clang++) find_program_or_warn(CLANG_BINARY clang) find_program_or_warn(CLANG_TIDY_BINARY clang-tidy) find_program_or_warn(CLANG_FORMAT_BINARY clang-format) find_program_or_warn(CLANG_FORMAT_DIFF_BINARY clang-format-diff) find_program_or_warn(CLANGD_BINARY clangd) find_program_or_warn(OPT_BINARY opt) find_program_or_warn(LLVMNM llvm-nm) find_program_or_warn(LLC llc) find_program_or_warn(LLI lli) find_program_or_warn(OPT opt) find_program_or_warn(LLVMPROFDATA llvm-profdata) find_program_or_warn(LLD_BINARY lld) find_program_or_warn(LLDB_BINARY lldb) find_program_or_warn(LLVMCONFIG_BINARY llvm-config) find_program_or_warn(LLVMOBJDUMP_BINARY llvm-objdump) find_program_or_warn(SCANBUILD scan-build) find_program_or_warn(SCANVIEW scan-view) find_program_or_warn(SCANBUILDPY scan-build-py) find_program_or_warn(MLIRTRANSLATE mlir-translate) set(CMAKE_C_COMPILER ${CLANG_BINARY}) set(CMAKE_CXX_COMPILER ${CLANGXX_BINARY}) project(LLVMToolchainIntegrationTestSuite VERSION 1.0 LANGUAGES NONE) enable_language(C) enable_language(CXX) option(ENABLE_COMPILER_RT "assume compiler-rt is available" ON) option(ENABLE_LIBCXX "assume libc++ is available" ON) option(ENABLE_STATIC_LIBCXX "assume libc++.a is available" ON) option(ENABLE_LIBUNWIND "assume libunwind is available" ON) # Detect if libomp is supported. Ubuntu stores the symlink library under a # version-dependent directory so we need to provide a hint to CMake to find it. string(REGEX MATCH "^[0-9]+" LLVM_MAJOR ${CMAKE_C_COMPILER_VERSION}) find_library_or_warn(LIBOMP libomp.so HINTS /usr/lib/llvm-${LLVM_MAJOR}/lib/) message(STATUS "Checking kernel support for tagged address ABI") try_run( _TEST_RUN_RESULT _BUILD_RESULT_UNUSED ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_tagged_addr_abi_support.c ) if(DEFINED _TEST_RUN_RESULT AND _TEST_RUN_RESULT EQUAL 0) set(SUPPORT_HWASAN ON) else() message(STATUS "Tagged address ABI disabled, disabling hwasan test(s)") set(SUPPORT_HWASAN OFF) endif() option(ENABLE_HWASAN "The host supports Aarch64 tagged address ABI" ${SUPPORT_HWASAN} ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/tests/lit.site.cfg.in ${CMAKE_BINARY_DIR}/tests/lit.site.cfg ) add_custom_target(check ${LIT} --show-unsupported --show-xfail -v tests)