llvm-project/clang/test/Modules
Ben Dunbobbin 1d16515fb4 [ELF] Implement Dependent Libraries Feature
This patch implements a limited form of autolinking primarily designed to allow
either the --dependent-library compiler option, or "comment lib" pragmas (
https://docs.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp?view=vs-2017) in
C/C++ e.g. #pragma comment(lib, "foo"), to cause an ELF linker to automatically
add the specified library to the link when processing the input file generated
by the compiler.

Currently this extension is unique to LLVM and LLD. However, care has been taken
to design this feature so that it could be supported by other ELF linkers.

The design goals were to provide:

- A simple linking model for developers to reason about.
- The ability to to override autolinking from the linker command line.
- Source code compatibility, where possible, with "comment lib" pragmas in other
  environments (MSVC in particular).

Dependent library support is implemented differently for ELF platforms than on
the other platforms. Primarily this difference is that on ELF we pass the
dependent library specifiers directly to the linker without manipulating them.
This is in contrast to other platforms where they are mapped to a specific
linker option by the compiler. This difference is a result of the greater
variety of ELF linkers and the fact that ELF linkers tend to handle libraries in
a more complicated fashion than on other platforms. This forces us to defer
handling the specifiers to the linker.

In order to achieve a level of source code compatibility with other platforms
we have restricted this feature to work with libraries that meet the following
"reasonable" requirements:

1. There are no competing defined symbols in a given set of libraries, or
   if they exist, the program owner doesn't care which is linked to their
   program.
2. There may be circular dependencies between libraries.

The binary representation is a mergeable string section (SHF_MERGE,
SHF_STRINGS), called .deplibs, with custom type SHT_LLVM_DEPENDENT_LIBRARIES
(0x6fff4c04). The compiler forms this section by concatenating the arguments of
the "comment lib" pragmas and --dependent-library options in the order they are
encountered. Partial (-r, -Ur) links are handled by concatenating .deplibs
sections with the normal mergeable string section rules. As an example, #pragma
comment(lib, "foo") would result in:

.section ".deplibs","MS",@llvm_dependent_libraries,1
         .asciz "foo"

For LTO, equivalent information to the contents of a the .deplibs section can be
retrieved by the LLD for bitcode input files.

LLD processes the dependent library specifiers in the following way:

1. Dependent libraries which are found from the specifiers in .deplibs sections
   of relocatable object files are added when the linker decides to include that
   file (which could itself be in a library) in the link. Dependent libraries
   behave as if they were appended to the command line after all other options. As
   a consequence the set of dependent libraries are searched last to resolve
   symbols.
2. It is an error if a file cannot be found for a given specifier.
3. Any command line options in effect at the end of the command line parsing apply
   to the dependent libraries, e.g. --whole-archive.
4. The linker tries to add a library or relocatable object file from each of the
   strings in a .deplibs section by; first, handling the string as if it was
   specified on the command line; second, by looking for the string in each of the
   library search paths in turn; third, by looking for a lib<string>.a or
   lib<string>.so (depending on the current mode of the linker) in each of the
   library search paths.
5. A new command line option --no-dependent-libraries tells LLD to ignore the
   dependent libraries.

Rationale for the above points:

1. Adding the dependent libraries last makes the process simple to understand
   from a developers perspective. All linkers are able to implement this scheme.
2. Error-ing for libraries that are not found seems like better behavior than
   failing the link during symbol resolution.
3. It seems useful for the user to be able to apply command line options which
   will affect all of the dependent libraries. There is a potential problem of
   surprise for developers, who might not realize that these options would apply
   to these "invisible" input files; however, despite the potential for surprise,
   this is easy for developers to reason about and gives developers the control
   that they may require.
4. This algorithm takes into account all of the different ways that ELF linkers
   find input files. The different search methods are tried by the linker in most
   obvious to least obvious order.
5. I considered adding finer grained control over which dependent libraries were
   ignored (e.g. MSVC has /nodefaultlib:<library>); however, I concluded that this
   is not necessary: if finer control is required developers can fall back to using
   the command line directly.

RFC thread: http://lists.llvm.org/pipermail/llvm-dev/2019-March/131004.html.

Differential Revision: https://reviews.llvm.org/D60274

llvm-svn: 360984
2019-05-17 03:44:15 +00:00
..
Inputs Modules: Search for a visible definition of the decl context when computing visibility of a default template parameter 2019-04-19 23:02:30 +00:00
DebugInfo-fmodule-name.c Relax assertion to account for private framework modules, too. 2019-02-15 20:24:26 +00:00
DebugInfoNamespace.cpp Module Debug Info: Emit namespaced C++ forward decls in the correct module. 2017-05-11 22:59:19 +00:00
DebugInfoSubmoduleImport.c Add a test that local submodule visibility has no effect on debug info 2017-05-11 16:40:48 +00:00
DebugInfoSubmodules.c
DebugInfoTransitiveImport.m Update for LLVM IR metadata changes (DIImportedEntity now needs a DIFile). 2017-07-19 00:09:58 +00:00
ExtDebugInfo.cpp Skip type units/type uniquing when we know we're only emitting the type once (vtable-based emission when triggered by a strong vtable, with -fno-standalone-debug) 2019-04-25 20:05:47 +00:00
ExtDebugInfo.m Update Clang for D20147 ("DebugInfo: New metadata representation for global variables.") 2016-09-13 01:13:19 +00:00
ModuleDebugInfo.cpp Skip type units/type uniquing when we know we're only emitting the type once (vtable-based emission when triggered by a strong vtable, with -fno-standalone-debug) 2019-04-25 20:05:47 +00:00
ModuleDebugInfo.m Debug Info: Set the MainFileName when generating -gmodules debug info for PCM. 2017-07-18 23:58:34 +00:00
ModuleModuleDebugInfo.cpp Add the second half of the testcase I should have added in 279485. 2016-08-22 22:30:34 +00:00
Rmodule-build.m Modules: Add -Rmodule-import 2019-03-06 02:50:46 +00:00
Rmodule-import.m Fix slashes in path references in -Rmodule-import test from r355477 2019-03-06 05:42:56 +00:00
Werror-Wsystem-headers.m
Werror.m
add-remove-private.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
adl.cpp [modules] Fix visibility checking for using declarations via ADL. 2017-10-11 01:49:57 +00:00
anon-linkage.cpp [Modules TS] Module ownership semantics for redeclarations. 2017-10-10 22:33:17 +00:00
anon-namespace.cpp
anon-redecl.cpp [modules] Additional tests. 2017-01-26 23:07:59 +00:00
at-import-in-framework-header.m [Modules][ObjC] Warn on the use of '@import' in framework headers 2018-06-27 20:29:36 +00:00
attr-unavailable.m
auto-import-unavailable.cpp
auto-module-import.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
autolink.m [ELF] Implement Dependent Libraries Feature 2019-05-17 03:44:15 +00:00
autolinkTBD.m IR: Replace the "Linker Options" module flag with "llvm.linker.options" named metadata. 2017-06-12 20:10:48 +00:00
autoload-subdirectory.cpp Reapply r336660: [Modules] Autoload subdirectory modulemaps with specific LangOpts 2018-07-18 23:21:19 +00:00
available-is-better.cpp
bad-private-include.m [Modules] Honor -fmodule-name when handling private framework modules 2018-03-20 22:36:39 +00:00
build-fail-notes.m
builtin-import.mm Fix Modules/{builtin-import.mm,umbrella-header-include-builtin.mm} to be able to handle non-Darwin targets 2017-09-29 15:45:34 +00:00
builtins.m Modules/builtins.m requires shell. 2017-04-04 02:50:40 +00:00
check-for-sanitizer-feature.cpp Improve diagnostics for config mismatches with -fmodule-file. 2018-05-24 20:03:51 +00:00
class-extension-protocol.m [Modules][ObjC] ASTReader should add protocols for class extensions 2018-04-27 18:01:23 +00:00
codegen-flags.test Modular Codegen: Separate flags for function and debug info support 2017-04-12 20:58:33 +00:00
codegen-nodep.test Fix up test to handle the now split -fmodules-codegen and -fmodules-debuginfo flags 2017-04-12 21:09:34 +00:00
codegen-opt.test Modular Codegen: Don't home/modularize static functions in headers 2017-11-02 21:55:40 +00:00
codegen.test Spurious commit just to help Richard, because git is weird. 2018-06-29 21:58:24 +00:00
compiler_builtins.m [Modules] Add a command line option for loading the clang builtins modulemap. 2016-10-31 08:21:54 +00:00
compiler_builtins_aarch64.m
compiler_builtins_arm.m
compiler_builtins_x86.c [X86] Make `x86intrin.h`, `immintrin.h` includable with `-fno-gnu-inline-asm`. 2019-05-13 22:40:11 +00:00
config-mismatch.cpp Revert r288626, which reverts r288449. Original commit message: 2016-12-06 00:40:17 +00:00
config_macros.m
conflicts.m
const-var-init-update.cpp PR33002: When we instantiate the definition of a static data member, we might 2017-06-22 22:18:46 +00:00
crash-typo-correction-visibility.cpp [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
crash-vfs-headermaps.m [VFS] Remove 'ignore-non-existent-contents' attribute for YAML-based VFS. 2018-10-24 22:39:38 +00:00
crash-vfs-include-pch.m [VFS] Remove 'ignore-non-existent-contents' attribute for YAML-based VFS. 2018-10-24 22:39:38 +00:00
crash-vfs-ivfsoverlay.m [VFS] Remove 'ignore-non-existent-contents' attribute for YAML-based VFS. 2018-10-24 22:39:38 +00:00
crash-vfs-path-emptydir-entries.m [CMake] Use normalized Windows target triples 2018-08-09 02:16:18 +00:00
crash-vfs-path-symlink-component.m [CMake] Use normalized Windows target triples 2018-08-09 02:16:18 +00:00
crash-vfs-path-symlink-topheader.m [CMake] Use normalized Windows target triples 2018-08-09 02:16:18 +00:00
crash-vfs-path-traversal.m Replace lit feature keyword 'non-ms-sdk' with 'ms-sdk'; eliminate 2019-05-10 13:40:17 +00:00
crash-vfs-relative-incdir.m [VFS] Remove 'ignore-non-existent-contents' attribute for YAML-based VFS. 2018-10-24 22:39:38 +00:00
crash-vfs-relative-overlay.m [CMake] Use normalized Windows target triples 2018-08-09 02:16:18 +00:00
crash-vfs-run-reproducer.m [VFS] Remove 'ignore-non-existent-contents' attribute for YAML-based VFS. 2018-10-24 22:39:38 +00:00
crash-vfs-umbrella-frameworks.m [CMake] Use normalized Windows target triples 2018-08-09 02:16:18 +00:00
crashes.m
cstd.m Treat module headers wrapped by our builtin headers as implicitly being textual 2016-10-26 01:08:55 +00:00
cxx-decls.cpp
cxx-dtor.cpp PR33924: merge local declarations that have linkage of some kind within 2018-07-04 02:25:38 +00:00
cxx-inline-namespace.cpp
cxx-irgen.cpp Bring r325915 back. 2018-02-23 19:30:48 +00:00
cxx-linkage-cache.cpp
cxx-lookup.cpp
cxx-many-overloads.cpp
cxx-templates.cpp PR38627: Fix handling of exception specification adjustment for 2018-09-05 22:30:37 +00:00
cxx17-exception-spec.cpp Track the result of evaluating a computed noexcept specification on the 2018-05-03 03:58:32 +00:00
cxx17-inline-variables.cpp PR33746: Store the 'inline'ness of a static data member with the update record 2017-11-02 01:06:00 +00:00
cxx17.cpp Take into account C++17's noexcept function types during merging -- it should 2017-03-08 23:00:26 +00:00
cycles.c
darwin_specific_modulemap_hacks.m
debug-info-moduleimport-in-module.m Update for LLVM IR metadata changes (DIImportedEntity now needs a DIFile). 2017-07-19 00:09:58 +00:00
debug-info-moduleimport.m Update for LLVM IR metadata changes (DIImportedEntity now needs a DIFile). 2017-07-19 00:09:58 +00:00
declare-use-compatible.cpp
declare-use.S
declare-use1.cpp
declare-use2.cpp
declare-use3.cpp
declare-use4.cpp
declare-use5.cpp
decldef.m [modules] Simplify and generalize the existing rule for finding hidden 2015-11-12 22:19:45 +00:00
decldef.mm
deferred-lookup.cpp
dependency-dump-dependent-module.m Attempt to fix Windows buildbot. 2017-03-10 19:34:15 +00:00
dependency-dump.m Attempt to fix Windows buildbot. 2017-03-10 19:34:15 +00:00
dependency-gen-inferred-map.m
dependency-gen-pch.m
dependency-gen.m
dependency-gen.modulemap
diag-flags.cpp [modules] Fix incorrect diagnostic mapping computation when a module changes 2018-02-09 01:15:13 +00:00
diag-pragma.c
diag-pragma.cpp Remove and replace DiagStatePoint tracking and lookup data structure. 2017-01-26 01:01:01 +00:00
diagnose-missing-import.m [Modules] Fix overly conservative assertion for import diagnostic 2017-05-23 23:53:17 +00:00
diagnostic-options-out-of-date.m Modules: Use hash of PCM content for SIGNATURE 2017-03-13 18:45:08 +00:00
diagnostics.modulemap Support lazy stat'ing of files referenced by module maps. 2017-06-02 01:55:39 +00:00
diamond-pch.c
diamond.c
direct-module-import.m
double-quotes.m Fix an assert in -Wquoted-include-in-framework-header 2018-09-20 19:00:03 +00:00
driver.c
elaborated-type-specifier-from-hidden-module.m [Modules] Implement ODR-like semantics for tag types in C/ObjC 2017-07-01 00:06:47 +00:00
embed-files-compressed.cpp [modules] Compress files embedded into a .pcm file, to reduce the disk usage of -fembed-all-files mode. 2016-02-06 02:06:43 +00:00
embed-files.cpp Disable a flaky test on Windows that uses "echo >>" 2016-07-21 21:07:47 +00:00
empty.modulemap Remove 24 instances of 'REQUIRES: shell' 2016-10-20 23:11:45 +00:00
epic-fail.m
exception-spec.cpp PR38627: Fix handling of exception specification adjustment for 2018-09-05 22:30:37 +00:00
exclude-header.c
explicit-build-extra-files.cpp Remove 24 instances of 'REQUIRES: shell' 2016-10-20 23:11:45 +00:00
explicit-build-flags.cpp Restructure the propagation of -fPIC/-fPIE. 2016-06-23 15:07:32 +00:00
explicit-build-missing-files.cpp [modules] Extend r266113 to cope with submodules. 2016-04-12 20:20:33 +00:00
explicit-build-overlap.cpp
explicit-build-prefer-self.cpp
explicit-build-relpath.cpp
explicit-build.cpp Fix a bug preventing the cause for a module file-not-found from being displayed 2016-08-29 20:46:59 +00:00
exponential-paths.cpp
export_as_test.c [Module map] Introduce a private module re-export directive. 2017-09-14 23:38:44 +00:00
extensions.c Introduce module file extensions to piggy-back data onto module files. 2015-11-03 18:33:07 +00:00
extern_c.cpp [modules] Allow the error on importing a C++ module within an extern "C" 2015-10-13 00:39:40 +00:00
extern_c_bad.cpp
extern_cxx.cpp When we enter a module within a linkage specification, switch the linkage 2017-05-18 19:34:55 +00:00
fatal-module-loader-error.m
filename.cpp
find-privateheaders.m [Modules] Allow umbrella frameworks to define private submodules for subframeworks 2017-05-09 00:41:38 +00:00
fmodules-validate-once-per-build-session.c Allow test to pass after 2030. 2019-05-08 13:42:44 +00:00
framework-name.m [C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor. 2019-04-11 21:18:23 +00:00
framework-public-includes-private.m Fix tests from r335542 to use %hmaptool 2018-06-25 22:25:48 +00:00
friend-definition-2.cpp [NFC] Explicitly add -std=c++14 option to tests that rely on the C++14 default 2019-02-05 12:05:53 +00:00
friend-definition.cpp Diagnose friend function template redefinitions. 2018-12-06 09:35:04 +00:00
getSourceDescriptor-crash.cpp [modules][debuginfo] Only include imported modules when targeting LLDB 2016-05-03 23:06:40 +00:00
global-init.cpp When we reach the end of a #include of a header of a local submodule that we 2016-09-01 20:15:25 +00:00
global_index.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
gnumode-non-benign.cpp [modules] Add missing test from r297030. 2017-03-06 17:47:57 +00:00
header-attribs.cpp Support lazy stat'ing of files referenced by module maps. 2017-06-02 01:55:39 +00:00
header-import.m
header-in-multiple-maps.cpp
hidden-definition.cpp [modules] Don't try to use the definition of a class if 2015-12-18 22:19:11 +00:00
hidden-names.cpp [modules] Additional tests. 2017-01-26 23:07:59 +00:00
ignored_macros.m
implementation-of-module.m Fix the behavior of clang's -w flag. 2019-01-29 19:33:48 +00:00
implicit-build-config-out-of-date.m [Modules] Early-exit if ReadOptionsBlock fails to avoid crashing 2016-02-11 18:54:02 +00:00
implicit-built-Werror-using-W.cpp Serialization: Simulate -Werror settings in implicit modules 2017-04-12 03:58:58 +00:00
implicit-invalidate-chain.c Fix slashes in path references in -Rmodule-import test from r355778 2019-03-09 19:33:32 +00:00
implicit-map-dot-private.m [Modules] Map missing private submodules from Foo.Private to Foo_Private 2017-12-22 05:04:43 +00:00
implicit-private-canonical.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
implicit-private-with-different-name.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
implicit-private-with-submodule.m [Modules] Improve .Private fix-its to handle 'explicit' and 'framework' 2018-06-15 20:13:28 +00:00
import-decl.cpp
import-self.m [modules] Flatten -fmodule-name= and -fmodule-implementation-of= into a single 2016-02-19 22:25:36 +00:00
import-syntax.c Add pragma to perform module import and use it in -E output. 2017-04-29 00:34:47 +00:00
import-textual-noguard.mm [Modules] Support #import when entering files with modules 2017-01-11 02:14:51 +00:00
import-textual.mm [Modules] Support #import when entering files with modules 2017-01-11 02:14:51 +00:00
include-own-headers.m [modules] Don't diagnose non-modular includes from modular files that are 2016-03-14 17:52:37 +00:00
include-relative.c
include_next.c
incomplete-framework-module.m [Modules] Warning for module declarations lacking 'framework' qualifier 2018-06-01 01:26:18 +00:00
incomplete-module.m Module: improve the diagnostic message for include of non-modular header. 2016-10-21 23:27:37 +00:00
incomplete-umbrella.m [Modules] Improve diagnostics for incomplete umbrella 2017-04-27 22:29:14 +00:00
inferred-attributes.mm
inferred-framework-case.m
inferred-frameworks.m
inferred-submodules.m
initializer_list.cpp
initializers.cpp Fix bug 37903:MS ABI: handle inline static data member and inline variable as template static data member 2019-04-25 17:45:45 +00:00
inner-struct-redefines-invisible.m [modules] Set the lexical DC for dummy tag decls that refer to hidden 2017-08-11 12:06:52 +00:00
interface-visibility.m Testcase missed from r306075. 2017-06-26 04:41:22 +00:00
internal-constants.cpp [modules] Rationalize the behavior of Decl::declarationReplaces, and in 2015-11-03 03:13:11 +00:00
invalid-pch-module-id.m [PCH] Fix a regression when PCH is used with -fmodules 2017-02-07 21:54:57 +00:00
invalidate-identifiers.c
irgen.c
lambda-context.cpp Lazily load the ContextDecl for a lambda's DefinitionData, to fix a 2016-08-25 00:34:00 +00:00
libc-libcxx.cpp [Modules] Add 'no_undeclared_includes' module map attribute 2016-10-21 01:41:56 +00:00
libstdcxx-ambiguous-internal.cpp [modules] Generalize the workaround for multiple ambiguous definitions of 2015-11-04 19:26:32 +00:00
linkage-merge.cpp
linkage-merge.m
load-after-failure.m
load_failure.c
local-visibility.cpp Change return value of trivial visibility check. 2018-06-07 03:20:30 +00:00
localsubmodulevis.m [Modules] Fix test to wipe out the cache before using it 2017-04-24 21:58:13 +00:00
lookup-assert-protocol.m [ASTReader] Add test for previous change r306583 / 145692e. 2017-06-29 19:42:35 +00:00
lookup-assert.m Modules: for ObjectiveC try to keep the definition invariant. 2016-09-09 23:48:27 +00:00
lookup.cpp
lookup.m ASTPrinter: Objective-C method declarations don't need a space after 2017-06-02 15:02:59 +00:00
lsv-debuginfo.cpp Add an explicit -std=c++14 to this test. 2018-11-02 22:19:02 +00:00
macro-ambiguity.cpp
macro-hiding.cpp
macro-masking.cpp
macro-redefinition.cpp [modules] Simplify module macro handling in non-local-submodule-visibility mode. 2017-05-19 23:32:38 +00:00
macro-reexport.cpp
macro-undef-through-pch.m
macros.c
macros2.c
malformed-overload.m clang/test/Modules/malformed-overload.m: Make sure module cache is clean. 2017-04-27 13:08:48 +00:00
malformed.cpp
merge-anon-in-extern_c.cpp [modules] Add a regression test for merging anon decls in extern C contexts. 2017-10-24 14:52:35 +00:00
merge-anon-in-template.cpp
merge-class-definition-visibility.cpp
merge-decl-context.cpp [modules] Handle merged fields in designated initializers. 2016-04-08 19:57:40 +00:00
merge-decl-order.cpp
merge-deduced-return.cpp [modules] Defer merging deduced return types. 2018-08-03 01:00:01 +00:00
merge-dependent-friends.cpp
merge-enumerators.cpp [modules] Simplify and generalize the existing rule for finding hidden 2015-11-12 22:19:45 +00:00
merge-fn-prototype-tags.c [modules] Apply ODR merging for function scoped tags only in C++ mode. 2016-09-08 20:34:41 +00:00
merge-friends.cpp
merge-function-defs.cpp [modules] Additional tests. 2017-01-26 23:07:59 +00:00
merge-implicit-special-members.cpp
merge-lambdas.cpp [NFC] Explicitly add -std=c++14 option to tests that rely on the C++14 default 2019-02-05 12:05:53 +00:00
merge-name-for-linkage.cpp [modules] When reading / writing a typedef that is a name for linkage for 2017-01-26 22:39:55 +00:00
merge-nested-templates.cpp
merge-static-locals.cpp PR33924: merge local declarations that have linkage of some kind within 2018-07-04 02:25:38 +00:00
merge-target-features.cpp Improve diagnostics for config mismatches with -fmodule-file. 2018-05-24 20:03:51 +00:00
merge-template-friend.cpp
merge-template-members.cpp
merge-template-pattern-visibility-2.cpp Fix tracking of merged definitions when the merge target is also merged 2018-09-12 02:13:46 +00:00
merge-template-pattern-visibility-3.cpp Track definition merging on the canonical declaration even when local 2018-09-12 23:37:00 +00:00
merge-template-pattern-visibility.cpp Revert "Reinstate r281429, reverted in r281452, with a fix for its mishandling of" 2016-10-17 13:00:44 +00:00
merge-template-specializations.cpp [modules] Be sure to emit local specializations of imported templates, even if 2016-10-06 20:30:51 +00:00
merge-typedefs.cpp
merge-using-decls.cpp [Test] NFC: Fixed typo in comments 2017-03-01 17:55:03 +00:00
merge-var-template-def.cpp [modules] Do not report missing definitions of demoted constexpr variable templates. 2016-10-19 11:19:30 +00:00
merge-vtable-codegen.cpp
method_pool.m
method_pool_write.m Method Pool in modules: we make sure that if a module contains an entry for 2016-04-29 19:04:05 +00:00
minimal-identifier-tables.cpp [modules] Separately track whether an identifier's preprocessor information and 2016-02-05 19:03:40 +00:00
mismatch-diagnostics.cpp Fix test from r346439 to also work on Windows due to path separator differences. 2018-11-09 02:44:07 +00:00
misplaced-1.cpp
misplaced-2.cpp
misplaced-3.cpp
misplaced-4.cpp
misplaced-5.c
missing-flag.cpp Reject attempts to build a module without -fmodules, rather than silently doing weird things. 2017-07-06 21:05:56 +00:00
missing-header.m
missing-submodule.m
modify-module.m Avoid assumption that lit tests are writable (in a couple more places). NFC 2018-01-09 09:32:53 +00:00
modular_maps.cpp [modules] Make sure we always include the contents of private headers when 2016-01-08 22:36:45 +00:00
module-debuginfo-prefix.m Reapply "Avoid emitting redundant or unusable directories in DIFile metadata entries."" 2018-12-06 18:44:50 +00:00
module-feature.m
module-file-modified.c Module: correctly set the module file kind when emitting file_modified. 2016-10-21 23:35:03 +00:00
module-impl-with-link.c IR: Replace the "Linker Options" module flag with "llvm.linker.options" named metadata. 2017-06-12 20:10:48 +00:00
module-imported-by-pch-path.m Change path used in a test from r318503 to work on windows 2017-11-17 04:26:07 +00:00
module-imported-by-pch-with-modulemap.m [PCH+Modules] Load -fmodule-map-file content before including PCHs 2018-07-19 12:32:06 +00:00
module-map-path-hash.cpp
module-name-private.m [Modules] Extend -fmodule-name semantic for frameworks with private modules 2018-02-16 00:12:57 +00:00
module-private.cpp [c++20] Implement P0846R0: allow (ADL-only) calls to template-ids whose 2019-05-09 03:31:27 +00:00
module_file_info.m [C++20] Implement context-sensitive header-name lexing and pp-import parsing in the preprocessor. 2019-04-11 21:18:23 +00:00
module_map_cwd.c Fix handling of -fmodule-map-file=X where X has no directory component. 2017-03-09 00:58:22 +00:00
modulemap-locations.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
modules-cache-path-canonicalization.m [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
modules-with-same-name.m
modules.idx Support watchOS and tvOS driver options 2015-10-30 16:30:27 +00:00
multiple-include.cpp
namespaces.cpp
nested-template-default-arg-redecl.cpp Modules: Adopt template parameters for variable templates to set their decl context correctly 2019-04-19 23:04:05 +00:00
new-delete.cpp [modules] Do not serialize / deserialize pending new/delete mismatch 2018-06-28 01:57:04 +00:00
no-implicit-builds.cpp [modules] Don't invent a module cache path unless implicit module builds are enabled. 2016-03-21 19:06:06 +00:00
no-implicit-maps.cpp
no-linkage.cpp [modules] Fix some more cases where we used to reject a conflict between two 2015-11-17 03:02:41 +00:00
no-module-map.cpp [modules] Support use of -E on modules built from the command line. 2018-09-15 01:21:18 +00:00
no-stale-modtime.m [clang/test] Fix a flaky unittest on windows 2016-08-03 06:10:15 +00:00
non-ambiguous-enum.m [Modules] Fix testcases from r331232 2018-04-30 22:57:02 +00:00
normal-module-map.cpp
objc-at-keyword.m [Lexer] Ensure that the token is not an annotation token when 2017-05-17 11:08:36 +00:00
objc-categories.m [ObjC][Modules] Don't perform property lookup in hidden class extensions 2017-02-22 23:18:49 +00:00
objc-category-2.m Modules: for ObjectiveC try to keep the definition invariant. 2016-09-09 23:48:27 +00:00
objc-category-3.m Modules: for ObjectiveC try to keep the definition invariant. 2016-09-09 23:48:27 +00:00
objc-category.m Modules: for ObjectiveC try to keep the definition invariant. 2016-09-09 23:48:27 +00:00
objc-designated-init-mod.m [Modules][ObjC] Check definition from canonical decl on designated initializers 2017-04-26 05:06:20 +00:00
objc-hidden.m Module: for ObjectiveC, be consistent when checking hidden decls. 2016-10-11 21:18:20 +00:00
objc-initializer.m Module: emit initializers in submodules when importing the parent module. 2016-10-14 18:55:44 +00:00
objc-method-redecl.m ObjectiveC: fix a seg fault when deserialing redeclaration of ObjCMethodDecl. 2016-10-03 21:26:46 +00:00
objc_redef.m
odr.cpp [AST] Incorrectly qualified unscoped enumeration as template actual parameter. 2017-12-21 21:47:22 +00:00
odr_hash-Friend.cpp Remove unnecessary options from test RUN lines. 2018-09-05 22:14:46 +00:00
odr_hash-Unresolved.cpp Test case for r321396 2018-01-06 03:20:59 +00:00
odr_hash-blocks.cpp [ODRHash] Extend hash to support all Type's. 2018-09-04 22:53:19 +00:00
odr_hash-elaborated-types.cpp [ODRHash] Do not rely on Type* when computing the hash. 2018-06-28 13:28:44 +00:00
odr_hash-gnu.cpp Remove unnecessary options from test RUN lines. 2018-09-05 22:14:46 +00:00
odr_hash-vector.cpp [ODRHash] Extend hash to support all Type's. 2018-09-04 22:53:19 +00:00
odr_hash.cl [ODRHash] Extend hash to support all Type's. 2018-09-04 22:53:19 +00:00
odr_hash.cpp Reduce amount of work ODR hashing does. 2019-05-04 04:22:33 +00:00
odr_hash.mm [ODRHash] Extend hash to support all Type's. 2018-09-04 22:53:19 +00:00
on-demand-build.m
on-demand-macros.m
outofdate-rebuild.m Modules: Rename MemoryBufferCache to InMemoryModuleCache 2019-03-09 17:33:56 +00:00
overloadable-attrs.cpp Represent pass_object_size attrs in ExtParameterInfo 2017-02-24 02:49:47 +00:00
parse-attributes.modulemap [Modules] Don't swallow errors when parsing optional attributes. 2016-03-06 04:20:05 +00:00
path-resolution.modulemap Fix incorrect use of current directory to find moved paths in ASTReader. 2017-07-25 10:22:06 +00:00
pch-module-macro.m PCH + module: make sure we write out macros associated with builtin identifiers. 2016-05-31 18:19:32 +00:00
pch-used.m
pch-with-module-name.m PCH: fix a regression that reports a module is defined in both pch and pcm. 2017-01-09 19:20:18 +00:00
pch_container.m Change llvm-{objdump,readobj} -long-option to --long-option or well-known short options in tests. NFC 2019-05-01 09:30:45 +00:00
pr19692.cpp
pr20399.cpp
pr20786.cpp
pr21217.cpp
pr21547.cpp Add -emit-llvm-only to the regression test for PR21547. 2016-03-30 22:22:50 +00:00
pr21687.cpp
pr24954.cpp [modules] Fix adding a templated friend functions to a namespace from another module. 2016-03-16 11:17:04 +00:00
pr25501.cpp PR25501: Delay loading visible updates for a declaration until after we've 2016-04-08 20:53:26 +00:00
pr26014.cpp Canonicalize UnaryTransformType types when they don't have a known underlying type. 2016-03-30 22:18:29 +00:00
pr26179.cpp Merge templated static member variables, fixes http://llvm.org/pr26179. 2016-01-22 19:03:27 +00:00
pr27041.cpp [modules] Write out identifiers if the ID is local, too. 2016-03-30 20:16:03 +00:00
pr27186.cpp [modules] Add forgotten test case to r265597. 2016-04-06 20:58:12 +00:00
pr27401.cpp PR33924: merge local declarations that have linkage of some kind within 2018-07-04 02:25:38 +00:00
pr27513.cpp PR27513: When determining which declaration to put into an exported lookup 2016-04-26 23:40:43 +00:00
pr27699.cpp Add regression test for PR27699. 2016-07-22 20:49:31 +00:00
pr27739.cpp [modules] Ask the canonical decl whether the constructor was defaulted. 2016-05-24 12:10:36 +00:00
pr27754.cpp PR27754: CXXRecordDecl::data() needs to perform an update even if it's called 2016-05-17 22:44:15 +00:00
pr27890.cpp [modules] Allow emission of update records for predefined __va_list_tag. 2016-06-20 15:10:40 +00:00
pr28332.cpp [modules] Teach the ASTWriter to ignore mutations coming from the ASTReader. 2016-07-22 21:08:24 +00:00
pr28438.cpp Remove debugging aids from this test and fix its expectations. 2016-08-18 06:15:19 +00:00
pr28752.cpp Reinstate r284008 reverted in r284081, with two fixes: 2016-10-14 21:41:24 +00:00
pr28812.cpp [modules] PR28812: Modules can return duplicate field decls. 2016-10-26 10:24:29 +00:00
pr31469.cpp PR31469: Don't add friend template class decls to redecl chain in dependent contexts. 2017-01-12 09:16:26 +00:00
pragma-pack.cpp Modules: Do not serialize #pragma pack state 2017-04-15 00:07:57 +00:00
prebuilt-module.m clang/test/Modules/prebuilt-module.m: Prune "-triple" to fix a configuration mismatch. 2016-08-19 05:25:26 +00:00
preprocess-build-diamond.m Add -frewrite-imports flag. 2017-06-09 21:24:02 +00:00
preprocess-build.cpp Reject attempts to build a module without -fmodules, rather than silently doing weird things. 2017-07-06 21:05:56 +00:00
preprocess-decluse.cpp Track the set of module maps read while building a .pcm file and reload those when preprocessing from that .pcm file. 2017-06-29 02:19:42 +00:00
preprocess-missing.modulemap Support lazy stat'ing of files referenced by module maps. 2017-06-02 01:55:39 +00:00
preprocess-module.cpp When preprocessing with -frewrite-imports and -fmodule-file=, do not pass all 2017-06-26 19:39:25 +00:00
preprocess-nested.cpp [modules] When compiling a preprocessed module map, look for headers relative 2017-05-31 20:56:55 +00:00
preprocess-umbrella.cpp Fix buildbot break after r360195 2019-05-08 02:03:32 +00:00
preprocess-unavailable.cpp Add an explicit -std= to test to unbreak on PS4 targets. 2017-05-30 20:13:34 +00:00
preprocess.cpp Add pragma to perform module import and use it in -E output. 2017-04-29 00:34:47 +00:00
preprocess.m Add pragma to perform module import and use it in -E output. 2017-04-29 00:34:47 +00:00
private.cpp
private.modulemap Allow use of private headers in different sub-modules. 2015-11-05 15:24:47 +00:00
private1.cpp
protocol-redefinition.m Add protocol redefinition to the current scope/context 2018-06-30 00:49:27 +00:00
prune.m [test] Disable Modules/prune.m on NetBSD as it requires 'touch -a' 2018-12-05 11:17:50 +00:00
public-private.modulemap
rebuild.m Modules: Use hash of PCM content for SIGNATURE 2017-03-13 18:45:08 +00:00
recursive.c
recursive_visibility.mm
redecl-add-after-load.cpp
redecl-found-building-chains.cpp
redecl-merge.m
redecl-merge2.m
redecl-namespaces.mm
redecl-templates.cpp
redeclarations.m
redecls.m
redefinition-c-tagtypes.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
redefinition-same-header.m [Modules] Implement ODR-like semantics for tag types in C/ObjC 2017-07-01 00:06:47 +00:00
redundant-include.mm Additional test file missed from r288737. 2016-12-06 00:14:22 +00:00
relative-dep-gen.cpp Print correctly dependency paths on Windows 2018-09-13 14:27:32 +00:00
relative-import-path.c Remove an unnecessary -f when cp'ing to a file that was just deleted. NFC. 2019-03-11 10:44:10 +00:00
renamed.m
require-modular-includes.m
requires-coroutines.mm [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
requires-gnuinlineasm.m Factor out and unify emission of "module is unavailable" diagnostics. 2017-06-05 18:57:56 +00:00
requires.m [Modules] Add more language features to be used with requires-declaration 2018-02-14 19:01:03 +00:00
requires.mm [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
resolution-change.m [Modules] Do not emit relocation error when -fno-validate-pch is set 2018-08-01 09:50:02 +00:00
self-import-header.m
self-referencing-lambda.cpp [Modules] Update test to mention it requires C++14. 2018-03-23 00:16:06 +00:00
separate_map_tree.cpp [modules] Make sure we always include the contents of private headers when 2016-01-08 22:36:45 +00:00
serialized-diags.m
shadow.m Reapply r321781: [Modules] Allow modules specified by -fmodule-map-file to shadow implicitly found ones 2018-01-05 02:33:18 +00:00
shadowed-submodule.m Reapply r321781: [Modules] Allow modules specified by -fmodule-map-file to shadow implicitly found ones 2018-01-05 02:33:18 +00:00
signal.m Remove 24 instances of 'REQUIRES: shell' 2016-10-20 23:11:45 +00:00
static_assert.cpp Fix interaction between serialization and c++1z feature. 2016-09-13 01:20:40 +00:00
stddef.c
stddef.m
stress-objc.m ObjC Module: try to make objc module deterministic. 2016-11-17 18:41:18 +00:00
stress1.cpp
strict-decluse-headers.cpp Reapply "Fix regression in behavior of clang -x c++-header -fmodule-name=XXX" 2018-11-05 12:46:02 +00:00
strict-decluse.cpp
string_names.cpp Support non-identifier module names when preprocessing modules. 2017-06-19 23:09:36 +00:00
subdirectory-module-maps-working-dir.m [HeaderSearch] loadSubdirectoryModuleMaps should respect -working-directory 2018-11-14 01:08:03 +00:00
subframework-from-intermediate-path.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
subframeworks.m [Modules] Change private modules rules and warnings 2017-12-22 02:53:30 +00:00
submodule-in-private-mmap.m [Modules] Allow @import to reach submodules in private module maps 2018-05-02 02:25:03 +00:00
submodule-visibility-cycles.cpp [modules] Simplify and generalize the existing rule for finding hidden 2015-11-12 22:19:45 +00:00
submodule-visibility.cpp [modules] When creating a declaration, cache its owning module immediately 2017-05-17 00:24:14 +00:00
submodules-merge-defs.cpp [c++20] Implement P0846R0: allow (ADL-only) calls to template-ids whose 2019-05-09 03:31:27 +00:00
submodules-preprocess.cpp
submodules.cpp
submodules.m
suggest-include.cpp [modules] When diagnosing a missing module import, suggest adding a #include if 2016-04-27 21:57:05 +00:00
system-out-of-date-test.m Reapply "Modules: Cache PCMs in memory and avoid a use-after-free" 2017-03-20 17:58:26 +00:00
system_headers.m
tag-injection.c When a tag is declared in prototype scope in C, if we've decided that it 2016-01-11 22:41:53 +00:00
tag-injection.cpp [modules] If we're treating an elaborated-type-specifier as if it introduces a 2016-01-09 06:58:48 +00:00
target-features.m [PATCH] [RISCV] Extend getTargetDefines for RISCVTargetInfo 2018-04-05 12:54:00 +00:00
target-platform-features.m [Modules] Add platform and environment features to requires clause 2018-09-18 17:11:13 +00:00
template-default-args.cpp [modules] Properly look up the owning module for an instantiation of a merged template. 2017-04-21 01:15:13 +00:00
template-specialization-visibility.cpp
templates-2.mm
templates.mm [opaque pointer types] Cleanup CGBuilder's Create*GEP. 2019-02-08 15:34:12 +00:00
textual-hdr-in-umbrella-hdr.m [Modules] Fix misleading warning about missing textual header in umbrella header 2017-01-12 19:15:33 +00:00
textual-headers.cpp
thread-safety.cpp
typedef-tag-not-visible.m [modules] Allow "redefinition" of typedef of anon tag from unimported submodule 2015-11-14 03:26:14 +00:00
typo.m Fix CodeCompletion & TypoCorrection when combining a PCH with Modules 2016-05-04 00:53:13 +00:00
umbrella-header-include-builtin.mm Fix Modules/{builtin-import.mm,umbrella-header-include-builtin.mm} to be able to handle non-Darwin targets 2017-09-29 15:45:34 +00:00
unavailable-local-visibility.test When we leave a module header, make that header visible in its 2018-09-12 23:09:23 +00:00
undefined-type-fixit1.cpp
unnecessary-module-map-parsing.c
unused-global-init.cpp [modules] Don't emit initializers for VarDecls within a module eagerly whenever 2016-07-20 19:10:16 +00:00
update-after-load.cpp
update-exception-spec.cpp
use-after-free.m Modules: set SystemHeader to true if we are building a system module. 2016-05-17 02:15:12 +00:00
use-exportas-for-link.m Use export_as for autolinking frameworks 2018-04-16 19:42:32 +00:00
using-decl-friend-2.cpp Serialize the IDNS for a UsingShadowDecl rather than recomputing it. 2018-01-06 01:07:05 +00:00
using-decl-friend.cpp When name lookup finds a non-imported declaration and looks back along the 2018-01-06 00:09:23 +00:00
using-decl-inheritance.cpp [modules] Add test for using declaration in classes. 2017-08-29 09:27:41 +00:00
using-decl-redecl.cpp [modules] Don't diagnose a conflict between two using-declarations that name equivalent internal linkage entities. 2016-01-12 20:34:32 +00:00
using-decl.cpp Revert r240335. 2015-11-12 21:55:58 +00:00
using-directive-redecl.cpp [modules] Retain multiple using-directives in the same scope even if they name the same namespace. 2017-10-30 22:38:20 +00:00
using-directive.cpp [modules] Only take visible using-directives into account during name lookup. 2017-10-11 01:19:11 +00:00
va_list.cpp [modules] Fix merging of __va_list_tag's implicit special member functions. 2015-10-13 00:23:25 +00:00
va_list.m
validate-system-headers.m
var-templates.cpp Use an even more precise triple to avoid errors on Darwin, where we don't use comdats for inline entities. 2017-12-05 21:29:36 +00:00
visibility-in-instantiation.cpp [modules] When finding the owning module of an instantiated context in template 2017-10-18 01:41:38 +00:00
warn-unused-local-typedef.cpp
warning-mismatch.m Reapply "Modules: Cache PCMs in memory and avoid a use-after-free" 2017-03-20 17:58:26 +00:00
wildcard-submodule-exports.cpp
working-dir-flag.m