summaryrefslogtreecommitdiff
path: root/test/lit.cfg.py
Commit message (Collapse)AuthorAgeFilesLines
* [clang][ifs] Clang Interface Stubs ToolChain plumbing.Puyan Lotfi2019-10-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Second Landing Attempt: This patch enables end to end support for generating ELF interface stubs directly from clang. Now the following: clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp will product an ELF binary with visible symbols populated. Visibility attributes and -fvisibility can be used to control what gets populated. * Adding ToolChain support for clang Driver IFS Merge Phase * Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain * Adds support for the clang Driver to involve llvm-ifs on ifs files. * Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file instead of the final object format (normally ELF) Differential Revision: https://reviews.llvm.org/D63978 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@374061 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert 373538 and follow-ups 373549 and 373552.Nico Weber2019-10-031-2/+2
| | | | | | They break tests on (at least) macOS. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@373556 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang][ifs] Clang Interface Stubs ToolChain plumbing.Puyan Lotfi2019-10-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | This patch enables end to end support for generating ELF interface stubs directly from clang. Now the following: clang -emit-interface-stubs -o libfoo.so a.cpp b.cpp c.cpp will product an ELF binary with visible symbols populated. Visibility attributes and -fvisibility can be used to control what gets populated. * Adding ToolChain support for clang Driver IFS Merge Phase * Implementing a default InterfaceStubs Merge clang Tool, used by ToolChain * Adds support for the clang Driver to involve llvm-ifs on ifs files. * Adds -emit-merged-ifs flag, to tell llvm-ifs to emit a merged ifs text file instead of the final object format (normally ELF) Differential Revision: https://reviews.llvm.org/D63978 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@373538 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve behavior in the case of stack exhaustion.Richard Smith2019-08-261-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Clang performs various recursive operations (such as template instantiation), and may use non-trivial amounts of stack space in each recursive step (for instance, due to recursive AST walks). While we try to keep the stack space used by such steps to a minimum and we have explicit limits on the number of such steps we perform, it's impractical to guarantee that we won't blow out the stack on deeply recursive template instantiations on complex ASTs, even with only a moderately high instantiation depth limit. The user experience in these cases is generally terrible: we crash with no hint of what went wrong. Under this patch, we attempt to do better: * Detect when the stack is nearly exhausted, and produce a warning with a nice template instantiation backtrace, telling the user that we might run slowly or crash. * For cases where we're forced to trigger recursive template instantiation in arbitrarily-deeply-nested contexts, check whether we're nearly out of stack space and allocate a new stack (by spawning a new thread) after producing the warning. Reviewers: rnk, aaron.ballman Subscribers: mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D66361 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@369940 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a Python3 compatibility errorAzharuddin Mohammed2019-07-111-1/+1
| | | | | | | | File "clang/test/lit.cfg.py", line 186, in <module> config.available_features.add('macos-sdk-' + macOSSDKVersion) TypeError: must be str, not bytes git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365832 91177308-0d34-0410-b5e6-96231b3b80d8
* [clang][NewPM] Fixing remaining -O0 tests that are broken under new PMLeonard Chan2019-06-191-0/+4
| | | | | | | | | | | | | | - CodeGen/flatten.c will fail under new PM becausec the new PM AlwaysInliner seems to intentionally inline functions but not call sites marked with alwaysinline (D23299) - Tests that check remarks happen to check them for the inliner which is not turned on at O0. These tests just check that remarks work, but we can make separate tests for the new PM with -O1 so we can turn on the inliner and check the remarks with minimal changes. Differential Revision: https://reviews.llvm.org/D62225 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@363846 91177308-0d34-0410-b5e6-96231b3b80d8
* Recommit r363298 "[lit] Disable test on darwin when building shared libs."Don Hinton2019-06-151-0/+3
| | | | | | | | | | | Was reverted in r363379 due to build breakage. Thanks to Nico Weber for reverting the original and suggesting the fix. Please see https://reviews.llvm.org/D61697 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@363502 91177308-0d34-0410-b5e6-96231b3b80d8
* [Analysis] Only run plugins tests if plugins are actually enabledPetr Hosek2019-05-171-7/+1
| | | | | | | | | | | | | | When plugins aren't enabled, don't try to run plugins tests. Don't enable plugins unconditionally based on the platform, instead check if LLVM shared library is actually being built which may not be the case for every host configuration, even if the host itself supports plugins. This addresses test failures introduced by r360891/D59464. Differential Revision: https://reviews.llvm.org/D62050 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@360991 91177308-0d34-0410-b5e6-96231b3b80d8
* Replace lit feature keyword 'non-ms-sdk' with 'ms-sdk'; eliminatePaul Robinson2019-05-101-7/+3
| | | | | | 'non-ps4-sdk' and use just 'ps4'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@360425 91177308-0d34-0410-b5e6-96231b3b80d8
* Another attempt to fix "could not find clang-check" lit warning in ↵Nico Weber2019-05-021-9/+9
| | | | | | | | | | | | | | | analyzer-less builds r359717 added clang-check as a dep of check-clang unconditionally because I had missed lit.local.cfg in test/Tooling. Instead, only add clang-check to the tools if the analyzer is enabled, since the build target only exists then, and since all tests using clang-check are skipped when the analyzer is disabled. Differential Revision: https://reviews.llvm.org/D61418 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@359820 91177308-0d34-0410-b5e6-96231b3b80d8
* [analyzer][CrossTU][NFC] Generalize to external definitions instead of ↵Rafael Stahl2019-01-101-2/+2
| | | | | | | | | | | | | | | | external functions Summary: This is just changing naming and documentation to be general about external definitions that can be imported for cross translation unit analysis. There is at least a plan to add VarDecls: D46421 Reviewers: NoQ, xazax.hun, martong, a.sidorin, george.karpenkov, serge-sans-paille Reviewed By: xazax.hun, martong Subscribers: mgorny, whisperity, baloghadamsoftware, szepet, rnkovacs, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, cfe-commits Differential Revision: https://reviews.llvm.org/D56441 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350852 91177308-0d34-0410-b5e6-96231b3b80d8
* [Driver] Disable -faddrsig on Gentoo by defaultMichal Gorny2018-12-231-0/+3
| | | | | | | | | | | | | | Gentoo supports combining clang toolchain with GNU binutils, and many users actually do that. As -faddrsig is not supported by GNU strip, this results in a lot of warnings. Disable it by default and let users enable it explicitly if they want it; with the intent of reevaluating when the underlying feature becomes standarized. See also: https://bugs.gentoo.org/667854 Differential Revision: https://reviews.llvm.org/D56047 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350028 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix some issues with LLDB's lit configuration files.Zachary Turner2018-11-191-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recently I tried to port LLDB's lit configuration files over to use a on the surface, but broke some cases that weren't broken before and also exposed some additional problems with the old approach that we were just getting lucky with. When we set up a lit environment, the goal is to make it as hermetic as possible. We should not be relying on PATH and enabling the use of arbitrary shell commands. Instead, only whitelisted commands should be allowed. These are, generally speaking, the lit builtins such as echo, cd, etc, as well as anything for which substitutions have been explicitly set up for. These substitutions should map to the build output directory, but in some cases it's useful to be able to override this (for example to point to an installed tools directory). This is, of course, how it's supposed to work. What was actually happening is that we were bringing in PATH and LD_LIBRARY_PATH and then just running the given run line as a shell command. This led to problems such as finding the wrong version of clang-cl on PATH since it wasn't even a substitution, and flakiness / non-determinism since the environment the tests were running in would change per-machine. On the other hand, it also made other things possible. For example, we had some tests that were explicitly running cl.exe and link.exe instead of clang-cl and lld-link and the only reason it worked at all is because it was finding them on PATH. Unfortunately we can't entirely get rid of these tests, because they support a few things in debug info that clang-cl and lld-link don't (notably, the LF_UDT_MOD_SRC_LINE record which makes some of the tests fail. The high level changes introduced in this patch are: 1. Removal of functionality - The lit test suite no longer respects LLDB_TEST_C_COMPILER and LLDB_TEST_CXX_COMPILER. This means there is no more support for gcc, but nobody was using this anyway (note: The functionality is still there for the dotest suite, just not the lit test suite). There is no longer a single substitution %cxx and %cc which maps to <arbitrary-compiler>, you now explicitly specify the compiler with a substitution like %clang or %clangxx or %clang_cl. We can revisit this in the future when someone needs gcc. 2. Introduction of the LLDB_LIT_TOOLS_DIR directory. This does in spirit what LLDB_TEST_C_COMPILER and LLDB_TEST_CXX_COMPILER used to do, but now more friendly. If this is not specified, all tools are expected to be the just-built tools. If it is specified, the tools which are not themselves being tested but are being used to construct and run checks (e.g. clang, FileCheck, llvm-mc, etc) will be searched for in this directory first, then the build output directory. 3. Changes to core llvm lit files. The use_lld() and use_clang() functions were introduced long ago in anticipation of using them in lldb, but since they were never actually used anywhere but their respective problems, there were some issues to be resolved regarding generality and ability to use them outside their project. 4. Changes to .test files - These are all just replacing things like clang-cl with %clang_cl and %cxx with %clangxx, etc. 5. Changes to lit.cfg.py - Previously we would load up some system environment variables and then add some new things to them. Then do a bunch of work building out our own substitutions. First, we delete the system environment variable code, making the environment hermetic. Then, we refactor the substitution logic into two separate helper functions, one which sets up substitutions for the tools we want to test (which must come from the build output directory), and another which sets up substitutions for support tools (like compilers, etc). 6. New substitutions for MSVC -- Previously we relied on location of MSVC by bringing in the entire parent's PATH and letting subprocess.Popen just run the command line. Now we set up real substitutions that should have the same effect. We use PATH to find them, and then look for INCLUDE and LIB to construct a substitution command line with appropriate /I and /LIBPATH: arguments. The nice thing about this is that it opens the door to having separate %msvc-cl32 and %msvc-cl64 substitutions, rather than only requiring the user to run vcvars first. Because we can deduce the path to 32-bit libraries from 64-bit library directories, and vice versa. Without these substitutions this would have been impossible. Differential Revision: https://reviews.llvm.org/D54567 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@347216 91177308-0d34-0410-b5e6-96231b3b80d8
* [CMake] Use normalized Windows target triplesPetr Hosek2018-08-091-2/+2
| | | | | | | | | | | Changes the default Windows target triple returned by GetHostTriple.cmake from the old environment names (which we wanted to move away from) to newer, normalized ones. This also requires updating all tests to use the new systems names in constraints. Differential Revision: https://reviews.llvm.org/D47381 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@339307 91177308-0d34-0410-b5e6-96231b3b80d8
* [test] Fix %hmaptool path for standalone buildsMichal Gorny2018-08-011-1/+1
| | | | | | | | | | Fix %hmaptool path to refer to clang_tools_dir instead of llvm_tools_dir, in order to fix standalone builds. The tool is built as part of clang, so it won't be found in installed LLVM tools. Differential Revision: https://reviews.llvm.org/D50156 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338627 91177308-0d34-0410-b5e6-96231b3b80d8
* Reinstate quotes around the path to python that I accidentaly removed in r335330Benjamin Kramer2018-06-221-1/+1
| | | | | | This broke users with spaces in the path, like C:\Program Files\Python git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@335382 91177308-0d34-0410-b5e6-96231b3b80d8
* [hmaptool] Turn %hmaptool into a proper substitutionBenjamin Kramer2018-06-221-1/+5
| | | | | | | This is still super ugly, but at least it doesn't require working directories to just line up perfectly for python to find the tool. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@335330 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-apply: Add python tool to dump and construct header mapsBruno Cardoso Lopes2018-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Header maps are binary files used by Xcode, which are used to map header names or paths to other locations. Clang has support for those since its inception, but there's not a lot of header map testing around. Since it's a binary format, testing becomes pretty much brittle and its hard to even know what's inside if you don't have the appropriate tools. Add a python based tool that allows creating and dumping header maps based on a json description of those. While here, rewrite tests to use the tool and remove the binary files from the tree. This tool was initially written by Daniel Dunbar. Thanks to Stella Stamenova for helping make this work on Windows. Differential Revision: https://reviews.llvm.org/D46485 rdar://problem/39994722 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@335295 91177308-0d34-0410-b5e6-96231b3b80d8
* [Clang Tablegen][RFC] Allow Early Textual Substitutions in `Diagnostic` ↵Eric Fiselier2018-05-191-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | messages. Summary: There are cases where the same string or select is repeated verbatim in a lot of diagnostics. This can be a pain to maintain and update. Tablegen provides no way stash the common text somewhere and reuse it in the diagnostics, until now! This patch allows diagnostic texts to contain `%sub{<definition-name>}`, where `<definition-name>` names a Tablegen record of type `TextSubstitution`. These substitutions are done early, before the diagnostic string is otherwise processed. All `%sub` modifiers will be replaced before the diagnostic definitions are emitted. The substitution must specify all arguments used by the substitution, and modifier indexes in the substitution are re-numbered accordingly. For example: ``` def select_ovl_candidate : TextSubstitution<"%select{function|constructor}0%select{| template| %2}1">; ``` when used as ``` "candidate `%sub{select_ovl_candidate}3,2,1 not viable" ``` will act as if we wrote: ``` "candidate %select{function|constructor}3%select{| template| %1}2 not viable" ``` Reviewers: rsmith, rjmccall, aaron.ballman, a.sidorin Reviewed By: rjmccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D46740 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@332799 91177308-0d34-0410-b5e6-96231b3b80d8
* [lit] Fix running tests that require 'examples'.Zachary Turner2018-05-081-0/+1
| | | | | | | Differential Revision: https://reviews.llvm.org/D46514 Patch by Nikolai Kosjar. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331786 91177308-0d34-0410-b5e6-96231b3b80d8
* [debuginfo] Remove temporary FIXME.Don Hinton2017-12-141-11/+1
| | | | | | | | | | | | | | | | | Summary: Now that r320495, "[debuginfo-tests] Support moving debuginfo-tests to llvm/projects," has landed, remove temporary FIXME that supported the old mechanism. Reviewers: zturner, aprantl Reviewed By: aprantl Subscribers: JDevlieghere, cfe-commits Differential Revision: https://reviews.llvm.org/D41259 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@320751 91177308-0d34-0410-b5e6-96231b3b80d8
* [debuginfo-tests] Add support for moving debuginfo-tests from clang/test to ↵Don Hinton2017-12-121-2/+10
| | | | | | | | | | | | | | | | | | | | | llvm/projects or monorepo. Summary: The new version of debuginfo-tests will have it's own lit.cfg.py file which is incompatible with the one in clang/test. This change supports both the old and new versions, and can be used until the bots actually move debuginfo-tests to either clang/test or the monorepo. This is a prerequisite for D40971. Reviewers: zturner, aprantl Subscribers: mgorny, JDevlieghere, llvm-commits, cfe-commits Differential Revision: https://reviews.llvm.org/D41055 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@320494 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-revert "Refactor debuginfo-tests."Zachary Turner2017-11-211-0/+2
| | | | | | | | | | This is still breaking greendragon. At this point I give up until someone can fix the greendragon bots, and I will probably abandon this effort in favor of using a private github repository. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318722 91177308-0d34-0410-b5e6-96231b3b80d8
* Resubmit "Refactor debuginfo-tests" again.Zachary Turner2017-11-201-2/+0
| | | | | | | | | | | | This was reverted due to the tests being run twice on some build bots. Each run had a slightly different configuration due to the way in which it was being invoked. This fixes the problem (albeit in a somewhat hacky way). Hopefully in the future we can get rid of the workflow of running debuginfo-tests as part of clang, and then this hack can go away. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318697 91177308-0d34-0410-b5e6-96231b3b80d8
* Re-revert "Refactor debuginfo-tests"Zachary Turner2017-11-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | This is still broken because it causes certain tests to be run twice with slightly different configurations, which is wrong in some cases. You can observe this by running: ninja -nv check-all | grep debuginfo-tests And seeing that it passes clang/test and clang/test/debuginfo-tests to lit, which causes it to run debuginfo-tests twice. The fix is going to involve either: a) figuring out that we're running in this "deprecated" configuration, and then deleting the clang/test/debuginfo-tests path, which should cause it to behave identically to before, or: b) make lit smart enough that it doesn't descend into a sub-suite if that sub-suite already has a lit.cfg file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318486 91177308-0d34-0410-b5e6-96231b3b80d8
* Resubmit "Refactor debuginfo-tests"Zachary Turner2017-11-161-2/+0
| | | | | | | | | | This was reverted due to some failures on specific darwin buildbots, the issue being that the new lit configuration was not setting the SDKROOT environment variable. We've tested a fix locally and confirmed that it works, so this patch resubmits everything with the fix applied. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318435 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "Update test_debuginfo.pl script to point to new tree location."Zachary Turner2017-11-131-0/+2
| | | | | | | | This reverts the aforementioned patch and 2 subsequent follow-ups, as some buildbots are still failing 2 tests because of it. Investigation is ongoing into the cause of the failures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@318112 91177308-0d34-0410-b5e6-96231b3b80d8
* [debuginfo-tests] Make debuginfo-tests work in a standard configuration.Zachary Turner2017-11-101-2/+0
| | | | | | | | | | | | | | | | | | | Previously, debuginfo-tests was expected to be checked out into clang/test and then the tests would automatically run as part of check-clang. This is not a standard workflow for handling external projects, and it brings with it some serious drawbacks such as the inability to depend on things other than clang, which we will need going forward. The goal of this patch is to migrate towards a more standard workflow. To ease the transition for build bot maintainers, this patch tries not to break the existing workflow, but instead simply deprecate it to give maintainers a chance to update the build infrastructure. Differential Revision: https://reviews.llvm.org/D39605 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317925 91177308-0d34-0410-b5e6-96231b3b80d8
* Resubmit "[lit] Raise the logic for enabling clang & lld substitutions to llvm."Zachary Turner2017-10-171-136/+21
| | | | | | | The substitution for %debuginfo_tests had been inadvertently removed. This adds it back. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@316043 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[lit] Raise the logic for enabling clang & lld substitutions to llvm."Bruno Cardoso Lopes2017-10-131-19/+136
| | | | | | | | | | | | This reverts commit r315627, fixing bot failures: http://green.lab.llvm.org/green/job/clang-stage1-configure-RA LIT is failing to properly apply substitution to debuginfo-tests after this change. rdar://problem/34979568 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315712 91177308-0d34-0410-b5e6-96231b3b80d8
* [lit] Raise the logic for enabling clang & lld substitutions to llvm.Zachary Turner2017-10-121-136/+19
| | | | | | | | | | This paves the way for other projects which might /use/ clang or lld but not necessarily need to the full set of functionality available to clang and lld tests to be able to have a basic set of substitutions that allow a project to run the clang or lld executables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315627 91177308-0d34-0410-b5e6-96231b3b80d8
* [lit] Improve tool substitution in lit.Zachary Turner2017-10-061-58/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This addresses two sources of inconsistency in test configuration files. 1. Substitution boundaries. Previously you would specify a substitution, such as 'lli', and then additionally a set of characters that should fail to match before and after the tool. This was used, for example, so that matches that are parts of full paths would not be replaced. But not all tools did this, and those that did would often re-invent the set of characters themselves, leading to inconsistency. Now, every tool substitution defaults to using a sane set of reasonable defaults and you have to explicitly opt out of it. This actually fixed a few latent bugs that were never being surfaced, but only on accident. 2. There was no standard way for the system to decide how to locate a tool. Sometimes you have an explicit path, sometimes we would search for it and build up a path ourselves, and sometimes we would build up a full command line. Furthermore, there was no standardized way to handle missing tools. Do we warn, fail, ignore, etc? All of this is now encapsulated in the ToolSubst class. You either specify an exact command to run, or an instance of FindTool('<tool-name>') and everything else just works. Furthermore, you can specify an action to take if the tool cannot be resolved. Differential Revision: https://reviews.llvm.org/D38565 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315085 91177308-0d34-0410-b5e6-96231b3b80d8
* Run pyformat on lit code.Zachary Turner2017-10-061-54/+69
| | | | git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315084 91177308-0d34-0410-b5e6-96231b3b80d8
* [lit.cfg] Avoid concatenating which(clang-func-mapping) if it's missingVedant Kumar2017-09-221-1/+5
| | | | | | | This un-breaks a lit workflow where you run lit tests from a test sub-directory within clang without first building clang-func-mapping. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314013 91177308-0d34-0410-b5e6-96231b3b80d8
* Add Cross Translation Unit support libraryGabor Horvath2017-09-221-0/+1
| | | | | | | | | | | | | | | | | | | This patch introduces a class that can help to build tools that require cross translation unit facilities. This class allows function definitions to be loaded from external AST files based on an index. In order to use this functionality an index is required. The index format is a flat text file but it might be replaced with a different solution in the near future. USRs are used as names to look up the functions definitions. This class also does caching to avoid redundant loading of AST files. Right now only function defnitions can be loaded using this API because this is what the in progress cross translation unit feature of the Static Analyzer requires. In to future this might be extended to classes, types etc. Differential Revision: https://reviews.llvm.org/D34512 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313975 91177308-0d34-0410-b5e6-96231b3b80d8
* Resubmit "[lit] Refactor out some more common lit configuration code."Zachary Turner2017-09-211-91/+30
| | | | | | | | There were two issues, one Python 3 specific related to Unicode, and another which is that the tool substitution for lld no longer rejected matches where a / preceded the tool name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313928 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert "[lit] Refactor out some more common lit configuration code."Zachary Turner2017-09-211-30/+91
| | | | | | | | This is breaking several bots. I have enough information to investigate, so I'm reverting to green until I get it figured out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313922 91177308-0d34-0410-b5e6-96231b3b80d8
* [lit] Refactor out some more common lit configuration code.Zachary Turner2017-09-211-91/+30
| | | | | | | | | | | | | | | | | | | | | debuginfo-tests has need to reuse a lot of common configuration from clang and lld, and in general it seems like all of the projects which are tightly coupled (e.g. lld, clang, llvm, lldb, etc) can benefit from knowing about one other. For example, lldb needs to know various things about how to run clang in its test suite. Since there's a lot of common substitutions and operations that need to be shared among projects, sinking this up into LLVM makes sense. In addition, this patch introduces a function add_tool_substitution which handles all the dirty intricacies of matching tool names which was previously copied around the various config files. This is now a simple straightforward interface which is hard to mess up. Differential Revision: https://reviews.llvm.org/D37944 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313919 91177308-0d34-0410-b5e6-96231b3b80d8
* [lit] Rename lld and clang lit configs to end in .pyZachary Turner2017-09-211-0/+351
This follows in line with a previous patch of renaming LLVM's. Working on these files is difficult in certain operating systems and/or environments that don't like handling python code with a non .py file extension. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313892 91177308-0d34-0410-b5e6-96231b3b80d8