llvm-project/clang/test/Modules
Volodymyr Sapsai 93764ff6e2 [modules] Fix miscompilation when using two RecordDecl definitions with the same name.
When deserializing a RecordDecl we don't enforce that redeclaration
chain contains only a single definition. So if the canonical decl is not
a definition itself, `RecordType::getDecl` can return different objects
before and after an include. It means we can build CGRecordLayout for
one RecordDecl with its set of FieldDecl but try to use it with
FieldDecl belonging to a different RecordDecl. With assertions enabled
it results in

> Assertion failed: (FieldInfo.count(FD) && "Invalid field for record!"),
> function getLLVMFieldNo, file llvm-project/clang/lib/CodeGen/CGRecordLayout.h, line 199.

and with assertions disabled a bunch of fields are treated as their
memory is located at offset 0.

Fix by keeping the first encountered RecordDecl definition and marking
the subsequent ones as non-definitions. Also need to merge FieldDecl
properly, so that `getPrimaryMergedDecl` works correctly and during name
lookup we don't treat fields from same-name RecordDecl as ambiguous.

rdar://80184238

Differential Revision: https://reviews.llvm.org/D106994
2021-08-30 17:51:38 -07:00
..
Inputs [modules] Fix miscompilation when using two RecordDecl definitions with the same name. 2021-08-30 17:51:38 -07:00
ASTSignature.c [NFC] Make AST_BLOCK_HASH test more robust with downstream changes 2020-06-19 09:41:15 +01:00
DebugInfo-fmodule-name.c
DebugInfoNamespace.cpp
DebugInfoSubmoduleImport.c
DebugInfoSubmodules.c
DebugInfoTransitiveImport.m [DebugInfo][CallSites] Remove decl subprograms from 'retainedTypes:' 2020-06-01 09:10:05 +02:00
ExtDebugInfo.cpp [DebugInfo] Use SplitTemplateClosers (foo<bar<baz> >) in DWARF too 2020-05-28 12:30:38 +02:00
ExtDebugInfo.m
ModuleDebugInfo.cpp Reland [DebugInfo] Fix the mismatching between C++ language tags and Dwarf versions."" 2021-04-12 11:05:55 +00:00
ModuleDebugInfo.m [DebugInfo][CallSites] Remove decl subprograms from 'retainedTypes:' 2020-06-01 09:10:05 +02:00
ModuleDebugInfoDwoId.cpp Reland "Correctly emit dwoIDs after ASTFileSignature refactoring (D81347)" 2020-08-24 14:52:53 +02:00
ModuleModuleDebugInfo.cpp
Rmodule-build.m
Rmodule-import.m
Werror-Wsystem-headers.m
Werror.m
add-remove-private.m
adl.cpp
anon-linkage.cpp
anon-namespace.cpp
anon-redecl.cpp
asm-goto.c Fix regex in test. 2020-09-24 15:21:28 -07:00
at-import-in-framework-header.m
attr-unavailable.m
auto-import-unavailable.cpp
auto-module-import.m Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
autolink.m
autolinkTBD.m
autoload-subdirectory.cpp
available-is-better.cpp
bad-private-include.m
build-fail-notes.m
builtin-import.mm
builtins.m
check-for-sanitizer-feature.cpp
clang_module_file_info.m Don't delete the module you're inspecting 2021-06-03 13:00:09 -05:00
class-extension-protocol.m
codegen-extern-template.cpp
codegen-extern-template.h
codegen-flags.test
codegen-nodep.test
codegen-opt.test [test] Add {{.*}} to make ELF tests immune to dso_local/dso_preemptable/(none) differences 2020-12-31 00:27:11 -08:00
codegen.test [test] Fix unuses FileCheck prefixes in clang/test/Modules 2021-02-01 19:46:23 -08:00
compiler_builtins.m
compiler_builtins_aarch64.m
compiler_builtins_arm.m
compiler_builtins_x86.c
config-mismatch.cpp
config_macros.m
conflicts.m
const-var-init-update.cpp
context-hash.c [clang] Include missing LangOpts in `getModuleHash`. 2020-07-07 17:13:23 -06:00
crash-typo-correction-visibility.cpp
crash-vfs-headermaps.m
crash-vfs-include-pch.m
crash-vfs-ivfsoverlay.m
crash-vfs-path-emptydir-entries.m
crash-vfs-path-symlink-component.m
crash-vfs-path-symlink-topheader.m
crash-vfs-path-traversal.m
crash-vfs-relative-incdir.m
crash-vfs-relative-overlay.m
crash-vfs-run-reproducer.m
crash-vfs-umbrella-frameworks.m
crashes.m
cstd.m
cxx-decls.cpp
cxx-dtor.cpp
cxx-inline-namespace.cpp
cxx-irgen.cpp
cxx-linkage-cache.cpp
cxx-lookup.cpp
cxx-many-overloads.cpp
cxx-templates.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
cxx17-exception-spec.cpp
cxx17-inline-variables.cpp
cxx17.cpp Don't diagnose a redeclaration of a deduction guide if the prior 2020-06-12 10:29:01 -07:00
cxx20-disable.cpp [clang][cli] Expose -fno-cxx-modules in cc1 2021-08-04 13:46:40 +02:00
cxx20.cpp Don't diagnose a redeclaration of a deduction guide if the prior 2020-06-12 10:29:01 -07:00
cycles.c
darwin_specific_modulemap_hacks.m
debug-info-moduleimport-in-module.m
debug-info-moduleimport.m
declare-use-compatible.cpp
declare-use.S
declare-use1.cpp
declare-use2.cpp
declare-use3.cpp
declare-use4.cpp
declare-use5.cpp
decldef.m Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
decldef.mm Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
deferred-lookup.cpp
dependency-dump-dependent-module.m
dependency-dump.m
dependency-gen-inferred-map.m
dependency-gen-pch.m
dependency-gen.m
dependency-gen.modulemap
diag-flags.cpp
diag-pragma.c
diag-pragma.cpp
diagnose-missing-import.m [test] Properly test -Werror-implicit-function-declaration and -Wvec-elem-size 2020-11-05 20:08:23 -08:00
diagnostic-options-out-of-date.m
diagnostics.modulemap [Modules] Improve error message when cannot find parent module for submodule definition. 2020-08-25 16:31:27 -07:00
diamond-pch.c
diamond.c
direct-module-import.m
double-quotes.m
driver.c
elaborated-type-specifier-from-hidden-module.m
embed-files-compressed.cpp
embed-files.cpp
empty.modulemap Fix clang/test/Modules/empty.modulemap by increasing limit. 2020-06-15 12:27:25 +01:00
enum-codegen.cpp
epic-fail.m
exception-spec.cpp
exclude-header.c
explicit-build-diags.cpp [clang] Remove misleading assertion in FullSourceLoc 2021-08-06 14:48:28 +02:00
explicit-build-extra-files.cpp
explicit-build-flags.cpp
explicit-build-inferred.cpp [clang][modules] Build inferred modules 2021-05-17 10:40:51 +02:00
explicit-build-missing-files.cpp
explicit-build-overlap.cpp
explicit-build-prefer-self.cpp
explicit-build-relpath.cpp
explicit-build.cpp
exponential-paths.cpp
export_as_test.c
extensions.c
extern_c.cpp
extern_c_bad.cpp
extern_cxx.cpp
fatal-module-loader-error.m
filename.cpp
find-privateheaders.m
fmodules-validate-once-per-build-session.c
framework-name.m
framework-public-includes-private.m
friend-definition-2.cpp
friend-definition.cpp
fsystem-module.m
getSourceDescriptor-crash.cpp
global-init.cpp
global_index.m
gnumode-non-benign.cpp
header-attribs.cpp
header-import.m
header-in-multiple-maps.cpp
hidden-definition.cpp
hidden-names.cpp
ignored_macros.m
implementation-of-module.m
implicit-build-config-out-of-date.m
implicit-built-Werror-using-W.cpp
implicit-invalidate-chain.c
implicit-invalidate-common.c
implicit-map-dot-private.m
implicit-modules-use-lock.m Clean up test for -f{,no-}implicit-modules-uses-lock 2021-08-16 16:23:04 -07:00
implicit-private-canonical.m
implicit-private-with-different-name.m
implicit-private-with-submodule.m
implicit-private-without-public.m
import-decl.cpp
import-once.m [HeaderSearch] Fix processing #import-ed headers multiple times with modules enabled. 2020-08-20 17:41:28 -07:00
import-self.m
import-syntax.c
import-textual-noguard.mm
import-textual.mm
include-own-headers.m
include-relative.c
include_next.c
incomplete-framework-module.m
incomplete-module.m
incomplete-umbrella.m [clang][module] Improve incomplete-umbrella warning 2020-09-18 14:56:47 -07:00
inferred-attributes.mm
inferred-framework-case.m
inferred-frameworks.m
inferred-submodules.m
inherit-attribute.cpp Re-land 7a527f1777 with fixes. 2020-08-21 14:40:09 -04:00
initializer_list.cpp
initializers.cpp [test] Add {{.*}} to make ELF tests immune to dso_local/dso_preemptable/(none) differences 2020-12-31 00:27:11 -08:00
inner-struct-redefines-invisible.m
interface-diagnose-missing-import.m Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
interface-visibility.m
internal-constants.cpp
invalid-pch-module-id.m
invalidate-identifiers.c
irgen.c [test] Add {{.*}} to make tests immune to dso_local/dso_preemptable/(none) differences 2020-12-30 20:52:01 -08:00
lambda-context.cpp
libc-libcxx.cpp
libstdcxx-ambiguous-internal.cpp
linkage-merge.cpp
linkage-merge.m
load-after-failure.m
load-module-with-errors.m [ASTReader] Only mark module out of date if not already compiled 2021-04-16 17:57:03 -07:00
load_failure.c
local-visibility.cpp
localsubmodulevis.m
lookup-assert-protocol.m
lookup-assert.m
lookup.cpp
lookup.m
lsv-debuginfo.cpp
lsv-private-macro.cpp Support #__private_macro and #__public_macro in local submodule 2021-03-23 16:54:28 -07:00
macro-ambiguity.cpp
macro-hiding.cpp
macro-masking.cpp
macro-redefinition.cpp
macro-reexport.cpp
macro-undef-through-pch.m
macros.c
macros2.c
malformed-overload.m
malformed.cpp
merge-anon-in-extern_c.cpp
merge-anon-in-template.cpp
merge-class-definition-visibility.cpp
merge-decl-context.cpp
merge-decl-order.cpp
merge-deduced-return.cpp
merge-dependent-friends.cpp
merge-enumerators.cpp
merge-fn-prototype-tags.c
merge-friends.cpp
merge-function-defs.cpp
merge-implicit-special-members.cpp
merge-lambdas.cpp
merge-lifetime-extended-temporary.cpp
merge-name-for-linkage.cpp
merge-nested-templates.cpp
merge-record-definition-nonmodular.m [modules] Fix miscompilation when using two RecordDecl definitions with the same name. 2021-08-30 17:51:38 -07:00
merge-record-definition-visibility.m [modules] Fix miscompilation when using two RecordDecl definitions with the same name. 2021-08-30 17:51:38 -07:00
merge-record-definition.m [modules] Fix miscompilation when using two RecordDecl definitions with the same name. 2021-08-30 17:51:38 -07:00
merge-static-locals.cpp
merge-target-features.cpp
merge-template-friend.cpp
merge-template-members.cpp
merge-template-pattern-visibility-2.cpp
merge-template-pattern-visibility-3.cpp
merge-template-pattern-visibility.cpp
merge-template-specializations.cpp
merge-typedefs.cpp
merge-using-decls.cpp Support for merging UsingPackDecls across modules. 2021-07-01 18:43:49 -07:00
merge-var-template-def.cpp
merge-vtable-codegen.cpp
method_pool.m
method_pool_write.m
minimal-identifier-tables.cpp
mismatch-diagnostics.cpp
misplaced-1.cpp
misplaced-2.cpp
misplaced-3.cpp
misplaced-4.cpp
misplaced-5.c
missing-flag.cpp
missing-header-local-visibility.cpp When making modules transitively visible, don't take into account 2020-04-17 22:49:58 -07:00
missing-header.m
missing-submodule.m
modify-module.m
modular_maps.cpp
module-debuginfo-prefix.m
module-feature.m
module-file-modified.c
module-impl-with-link.c
module-imported-by-pch-path.m
module-imported-by-pch-with-modulemap.m
module-map-path-hash.cpp
module-name-private.m
module-pch-different-cache-path.c [clang][modules][pch] Allow loading PCH with different modules cache path 2021-06-14 11:04:56 +02:00
module-private.cpp [clang] Pass the NamedDecl* instead of the DeclarationName into many diagnostics. 2020-07-28 10:30:35 +01:00
module_file_info.m [X86] Default to -mtune=generic unless -march is passed to the driver. Add TuneCPU to the AST serialization 2020-08-26 14:52:03 -07:00
module_map_cwd.c
modulemap-locations.m
modules-cache-path-canonicalization.m
modules-with-same-name.m
modules.idx
ms-enums.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
multiple-include.cpp
namespaces.cpp clang: Fix minor grammar-o in diag added in c354b2e3b 2020-08-13 10:06:40 -04:00
nested-template-default-arg-redecl.cpp
new-delete.cpp
no-implicit-builds.cpp
no-implicit-maps.cpp
no-linkage.cpp
no-module-map.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
no-stale-modtime.m
no-undeclared-includes-builtins.cpp [clang] Always allow including builtin headers in [no_undeclared_headers] modules. 2020-06-04 08:33:39 +02:00
non-ambiguous-enum.m
normal-module-map.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
objc-at-keyword.m
objc-categories.m
objc-category-2.m
objc-category-3.m
objc-category.m
objc-designated-init-mod.m
objc-hidden.m
objc-initializer.m
objc-method-redecl.m
objc-type-param.m
objc_redef.m
odr.cpp
odr_hash-Friend.cpp
odr_hash-Unresolved.cpp
odr_hash-blocks.cpp
odr_hash-elaborated-types.cpp
odr_hash-gnu.cpp
odr_hash-vector.cpp
odr_hash.cl
odr_hash.cpp
odr_hash.mm
on-demand-build.m
on-demand-macros.m
outofdate-rebuild.m
overloadable-attrs.cpp
parse-attributes.modulemap
path-resolution.modulemap
pch-module-macro.m
pch-used.m
pch-with-module-name.m
pch_container.m
pr19692.cpp
pr20399.cpp
pr20786.cpp
pr21217.cpp
pr21547.cpp
pr21687.cpp
pr24954.cpp
pr25501.cpp
pr26014.cpp
pr26179.cpp
pr27041.cpp
pr27186.cpp
pr27401.cpp
pr27513.cpp
pr27699.cpp
pr27739.cpp
pr27754.cpp
pr27890.cpp
pr28332.cpp
pr28438.cpp
pr28752.cpp
pr28812.cpp
pr31469.cpp
pragma-pack.cpp
prebuilt-implicit-modules.m Allow searching for prebuilt implicit modules. 2020-11-10 10:14:13 -08:00
prebuilt-module.m
preprocess-build-diamond.m
preprocess-build.cpp
preprocess-decluse.cpp
preprocess-missing.modulemap
preprocess-module.cpp
preprocess-nested.cpp [test] Fix unuses FileCheck prefixes in clang/test/Modules 2021-02-01 19:46:23 -08:00
preprocess-umbrella.cpp
preprocess-unavailable.cpp
preprocess.cpp
preprocess.m
private.cpp
private.modulemap
private1.cpp
protocol-redefinition.m
prune.m
public-private.modulemap
rebuild.m
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
redefinition-same-header.m
redundant-include.mm
relative-dep-gen.cpp
relative-import-path.c
renamed.m
require-modular-includes.m
requires-coroutines.mm
requires-gnuinlineasm.m
requires.m
requires.mm
resolution-change.m
self-import-header.m
self-referencing-lambda.cpp
separate_map_tree.cpp
serialized-diags.m
set-pure-crash.cpp [modules] Fix crash in call to `FunctionDecl::setPure()` 2020-11-18 11:55:29 -08:00
shadow.m
shadowed-submodule.m
signal.m
static_assert.cpp
stddef.c Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
stddef.m
stress-objc.m
stress1.cpp
strict-decluse-headers.cpp
strict-decluse.cpp
string_names.cpp
structural-equivalent-recursive-types.c
subdirectory-module-maps-working-dir.m
subframework-from-intermediate-path.m
subframeworks.m Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
submodule-in-private-mmap.m
submodule-visibility-cycles.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
submodule-visibility.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
submodules-merge-defs.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
submodules-preprocess.cpp
submodules.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
submodules.m
suggest-include.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
system-out-of-date-test.m
system_headers.m
tag-injection.c Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
tag-injection.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
target-features.m
target-platform-features.m
template-default-args.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
template-specialization-visibility.cpp
templates-2.mm
templates.mm [test] Add {{.*}} to make ELF tests immune to dso_local/dso_preemptable/(none) differences 2020-12-31 00:27:11 -08:00
textual-hdr-in-umbrella-hdr.m
textual-headers.cpp
thread-safety.cpp
typedef-tag-not-visible.m
typo.m
umbrella-header-include-builtin.mm
unavailable-local-visibility.test
undefined-type-fixit1.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
unnecessary-module-map-parsing.c
unused-global-init.cpp
update-after-load.cpp
update-exception-spec.cpp
use-after-free.m
use-exportas-for-link.m
using-decl-friend-2.cpp
using-decl-friend.cpp
using-decl-inheritance.cpp
using-decl-redecl.cpp
using-decl.cpp
using-directive-redecl.cpp
using-directive.cpp
va_list.cpp
va_list.m
validate-file-content.m
validate-system-headers.m
var-templates.cpp
visibility-in-instantiation.cpp Improve diagnostics for missing import / #include of module. 2020-04-28 18:41:14 -07:00
warn-unused-local-typedef.cpp
warning-mismatch.m
wildcard-submodule-exports.cpp
working-dir-flag.m