llvm-project/clang/test/PCH
Alex Lorenz b111da14ad [ObjC] Error out when using forward-declared protocol in a @protocol
expression

Clang emits invalid protocol metadata when a @protocol expression is used with a
forward-declared protocol. The protocol metadata is missing protocol conformance
list of the protocol since we don't have access to the definition of it in the
compiled translation unit. The linker then might end up picking the invalid
metadata when linking which will lead to incorrect runtime protocol conformance
checks.

This commit makes sure that Clang fails to compile code that uses a @protocol
expression with a forward-declared protocol. This ensures that Clang does not
emit invalid protocol metadata. I added an extra assert in CodeGen to ensure
that this kind of issue won't happen in other places.

rdar://32787811

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

llvm-svn: 340102
2018-08-17 22:18:08 +00:00
..
Inputs Fix for bug 38508 - Don't do PCH processing when only generating preprocessor output 2018-08-17 13:43:39 +00:00
__va_list_tag-typedef.c [Clang][ARM] __va_list declaration is not saved in ASTContext causing compilation error or crash 2016-03-30 21:30:30 +00:00
__va_list_tag.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
arc.m Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
asm.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
asm.h
attrs-PR8406.c
attrs.c [Sema] Allow unmarked overloadable functions. 2017-06-27 21:31:31 +00:00
badpch.c
block-helpers.cpp [CodeGen] Merge equivalent block copy/helper functions. 2018-08-10 15:09:24 +00:00
block-helpers.h [CodeGen] Merge equivalent block copy/helper functions. 2018-08-10 15:09:24 +00:00
blocks.c
blocks.h
builtin-macro.c Don't assert when redefining a built-in macro in a PCH, PR29119 2016-12-09 17:32:52 +00:00
builtins.c
builtins.h
captured-stmt.cpp
case-insensitive-include.c [VirtualFileSystem] InMemoryFileSystem::status: Return a Status with the requested name 2018-08-06 21:48:20 +00:00
chain-categories.m Stop back-patching 'readonly' Objective-C properties with 'readwrite' ones. 2015-11-03 01:15:46 +00:00
chain-categories2.m
chain-class-extension.m
chain-conversion-lookup.cpp
chain-cxx.cpp
chain-decls.c
chain-default-argument-instantiation.cpp Only instantiate a default argument once. 2016-01-06 22:34:54 +00:00
chain-empty-initial-namespace.cpp
chain-ext_vector.c
chain-external-defs.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
chain-friend-instantiation.cpp
chain-implicit-definition.cpp
chain-invalid-code.cpp [PCH/preamble] Make sure that if the preamble/PCH was serialized with errors that we set diagnostic engine state appropriately. 2016-07-13 20:35:26 +00:00
chain-late-anonymous-namespace.cpp
chain-macro-override.c
chain-macro.c
chain-openmp-threadprivate.cpp [MS] Fix tests after r327738 that only fail with a default Windows target 2018-03-16 20:53:13 +00:00
chain-pending-instantiations.cpp
chain-predecl.h
chain-predecl.m
chain-remap-types.m
chain-selectors.m
chain-staticvar-instantiation.cpp
chain-trivial.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
chain-typo-corrections.cpp Add the test case from PR 14044 to ensure it doesn't regress. 2015-05-08 17:39:48 +00:00
changed-files.c
check-deserializations.cpp Internal-linkage variables with constant-evaluatable initializers do not need to be emitted. (Also reduces the set of variables that need to be eagerly deserialized when using PCH / modules.) 2015-08-19 20:49:38 +00:00
cmdline-include.c
cmdline-include1.h
cmdline-include2.h
coroutines.cpp [coroutines] Fix handling of dependent co_await in StmtProfiler. 2018-07-31 00:47:41 +00:00
crash-12631281.cpp
cuda-kernel-call.cu
cxx-alias-decl.cpp
cxx-alias-decl.h
cxx-chain-function-template.cpp
cxx-char-literal.cpp Properly track that a character literal is UTF-8, and pretty print the prefix properly. 2016-01-07 20:59:26 +00:00
cxx-constexpr.cpp
cxx-dependent-sized-ext-vector.cpp [Serialization] Serialize DependentSizedExtVectorType 2017-03-22 10:04:48 +00:00
cxx-exprs.cpp
cxx-for-range.cpp
cxx-for-range.h
cxx-friends.cpp
cxx-friends.h
cxx-functions.cpp
cxx-functions.h
cxx-implicit-moves.cpp
cxx-key-functions.cpp
cxx-mangling.cpp Account for calling convention specifiers in function definitions in IR test cases 2015-06-29 17:29:50 +00:00
cxx-member-init.cpp
cxx-method.cpp
cxx-ms-function-specialization-class-scope.cpp Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
cxx-ms-function-specialization-class-scope.h
cxx-namespaces.cpp
cxx-namespaces.h
cxx-offsetof-base.cpp
cxx-offsetof-base.h
cxx-reference.cpp
cxx-reference.h
cxx-required-decls.cpp Bring r325915 back. 2018-02-23 19:30:48 +00:00
cxx-required-decls.h
cxx-static_assert.cpp
cxx-templates.cpp [serialization] PR34728: Don't assume that only a suffix of template 2018-07-31 21:01:53 +00:00
cxx-templates.h [serialization] PR34728: Don't assume that only a suffix of template 2018-07-31 21:01:53 +00:00
cxx-trailing-return.cpp
cxx-traits.cpp [Sema] Add __is_aggregate type-trait 2017-04-12 22:12:15 +00:00
cxx-traits.h [Sema] Add __is_aggregate type-trait 2017-04-12 22:12:15 +00:00
cxx-typeid.cpp
cxx-typeid.h
cxx-using.cpp
cxx-using.h
cxx-variadic-templates-with-default-params.cpp PR25271: When attaching default template arguments to redeclarations of a 2016-02-04 22:54:41 +00:00
cxx-variadic-templates.cpp
cxx-variadic-templates.h
cxx0x-default-delete.cpp
cxx0x-delegating-ctors.cpp
cxx1y-decltype-auto.cpp
cxx1y-deduced-return-type.cpp
cxx1y-default-initializer.cpp PR29097: add an update record when we instantiate the default member 2016-08-24 21:25:37 +00:00
cxx1y-init-captures.cpp
cxx1y-lambdas.mm Run dos2unix on test/PCH/cxx1y-lambdas.mm 2015-04-01 20:21:34 +00:00
cxx1y-variable-templates.cpp [Sema] Emit a better diagnostic when variable redeclarations disagree 2015-07-14 20:08:49 +00:00
cxx1z-aligned-alloc.cpp P0035R4: add std::align_val_t overloads of operator new/delete in C++17 mode. 2016-09-29 22:49:46 +00:00
cxx1z-decomposition.cpp P0217R3: serialization/deserialization support for c++17 decomposition declarations. 2016-08-12 02:21:25 +00:00
cxx1z-init-statement.cpp P0305R0: Semantic analysis and code generation for C++17 init-statement for 'if' and 'switch': 2016-07-14 00:11:03 +00:00
cxx1z-init-statement.h P0305R0: Semantic analysis and code generation for C++17 init-statement for 'if' and 'switch': 2016-07-14 00:11:03 +00:00
cxx1z-using-declaration.cpp [c++1z] P0195R2: Support pack-expansion of using-declarations. 2016-12-20 21:35:28 +00:00
cxx2a-bitfield-init.cpp [c++2a] P0683R1: Permit default member initializers for bit-fields. 2017-08-28 00:28:14 +00:00
cxx2a-compare.cpp [C++2a] Implement operator<=> CodeGen and ExprConstant 2018-05-07 21:07:10 +00:00
cxx11-constexpr.cpp
cxx11-enum-template.cpp
cxx11-exception-spec.cpp
cxx11-inheriting-ctors.cpp P0136R1, DR1573, DR1645, DR1715, DR1736, DR1903, DR1941, DR1959, DR1991: 2016-06-28 19:03:57 +00:00
cxx11-lambdas.mm Implement C++ [basic.link]p8. 2017-09-20 07:22:00 +00:00
cxx11-statement-attributes.cpp P0188R1: add support for standard [[fallthrough]] attribute. This is almost 2016-03-08 00:32:55 +00:00
cxx11-user-defined-literals.cpp
cxx_exprs.cpp [Sema] Mark implicitly-inserted ICE's as being part of explicit cast (PR38166) 2018-07-24 08:16:50 +00:00
cxx_exprs.h
datetime.c Don't use fprintf to emit this diagnostic! 2015-09-01 02:35:58 +00:00
debug-info-limited-struct.c Stop messing with the 'g' group of options in CompilerInvocation. 2015-10-08 04:24:12 +00:00
debug-info-limited-struct.h
debug-info-pch-path.c Remove 24 instances of 'REQUIRES: shell' 2016-10-20 23:11:45 +00:00
decl-in-prototype.c Relax IRgen check in decl-in-prototype.c to match signext on PPC64 2016-12-09 17:56:04 +00:00
designated-init.c
designated-init.c.h Implementing C99 partial re-initialization behavior (DR-253) 2015-06-10 00:27:52 +00:00
different-diagnostic-level.c
different-linker-version.c
dllexport-default-arg-closure.cpp [MS] Don't escape MS C++ names with \01 2018-03-16 20:36:49 +00:00
emit-dependencies.c Unbreak windows bot. 2017-03-29 17:58:41 +00:00
emit-pth.c Use raw_pwrite_stream in clang. 2015-04-14 15:15:49 +00:00
empty-def-fwd-struct.h [PCH] Avoid VarDecl emission attempt if no owning module avaiable 2017-03-01 19:18:42 +00:00
empty-with-headers.c
enum.c
enum.h
exprs.c
exprs.h
ext_vector.c
ext_vector.h
external-defs.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
external-defs.h
field-designator.c
floating-literal.c Explicitly permit undefined behavior in constant initializers for global 2015-12-08 03:21:47 +00:00
format-strings.c
friend-template.cpp
functions.c
functions.h
fuzzy-pch.c
fuzzy-pch.h
headermap.h
headermap.m
headersearch.cpp Try to unbreak the Windows buildbots. 2015-03-03 23:36:57 +00:00
implicitly-deleted.cpp
include-stream-type.cpp Add tests for llvm-bcanalyzer stream types 2018-04-22 00:04:35 +00:00
include-timestamp.cpp [clang] Get rid of "%T" expansions 2017-08-15 19:47:06 +00:00
irgen-rdar13114142.mm
late-parsed-instantiations.cpp [MS] Fix late-parsed template infinite loop in eager instantiation 2018-03-26 18:22:47 +00:00
line-directive-nofilename.c Correctly handle line table entries without filenames during AST serialization 2017-12-04 22:28:45 +00:00
line-directive-nofilename.h Correctly handle line table entries without filenames during AST serialization 2017-12-04 22:28:45 +00:00
line-directive.c
line-directive.h
local_static.cpp Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
local_static.h
macro-redef.c
macro-undef.cpp [Test] Make Lit tests C++11 compatible - misc 2017-02-17 19:36:19 +00:00
make-integer-seq.cpp [Sema] Implement __make_integer_seq 2015-11-04 03:40:30 +00:00
method-redecls.m
method_pool.h
method_pool.m
missing-file.cpp Exclude PCH/missing-file.cpp on Windows, it does not pass reliably 2016-02-16 19:16:28 +00:00
modified-header-crash.c Avoid assumption that lit tests are writable (in a couple more places). NFC 2018-01-09 09:32:53 +00:00
modified-header-crash.h
modified-header-error.c
modified-module-dependency.m Commit some test changes somehow missed in r239789. 2015-06-16 00:19:29 +00:00
modified-module-dependency.module.map
module-hash-difference.m Commit some test changes somehow missed in r239789. 2015-06-16 00:19:29 +00:00
ms-if-exists.cpp
multiple-include-pch.c
multiple_decls.c
multiple_decls.h
namespaces.cpp
no-escaping-block-tail-calls.cpp Pass triple to RUN line to fix failing bots. 2018-08-02 01:52:17 +00:00
no-escaping-block-tail-calls.h Serialize DoesNotEscape. 2018-08-01 23:51:53 +00:00
no-validate-pch.cl Do not validate pch when -fno-validate-pch is set 2016-09-07 18:40:20 +00:00
nonvisible-external-defs.c
nonvisible-external-defs.h
objc_boxable.m Add missing files for objc_boxable feature. 2015-07-23 14:45:41 +00:00
objc_boxable_record.h Add missing files for objc_boxable feature. 2015-07-23 14:45:41 +00:00
objc_boxable_record_attr.h Add missing files for objc_boxable feature. 2015-07-23 14:45:41 +00:00
objc_container.h
objc_container.m Cleanup the handling of noinline function attributes, -fno-inline, 2016-12-23 01:24:49 +00:00
objc_exprs.h [ObjC] Error out when using forward-declared protocol in a @protocol 2018-08-17 22:18:08 +00:00
objc_exprs.m
objc_import.h
objc_import.m
objc_kindof.m Implement the Objective-C __kindof type qualifier. 2015-07-07 03:58:42 +00:00
objc_literals.m Account for calling convention specifiers in function definitions in IR test cases 2015-06-29 17:29:50 +00:00
objc_literals.mm Account for calling convention specifiers in function definitions in IR test cases 2015-06-29 17:29:50 +00:00
objc_methods.h
objc_methods.m
objc_parameterized_classes.m Implement variance for Objective-C type parameters. 2015-07-07 03:58:54 +00:00
objc_property.h
objc_property.m
objc_stmts.h
objc_stmts.m Reapply "[Parse] Use CapturedStmt for @finally on MSVC" 2018-06-08 00:30:00 +00:00
objcxx-ivar-class.h
objcxx-ivar-class.mm
ocl_types.cl Fix a lit test issue exposed by r290056 2016-12-18 07:26:01 +00:00
ocl_types.h [OpenCL] Correct ndrange_t implementation 2017-02-16 12:27:47 +00:00
opencl-extensions.cl [OpenCL] Add supported OpenCL extensions to target info. 2016-05-16 17:06:34 +00:00
pch-dir.c Fix crash on invalid if we can't find a suitable PCH file in a specified 2015-09-04 21:44:32 +00:00
pch-dir.h
pch-through1.cpp Add PCH tests for R336379 2018-07-05 17:23:15 +00:00
pch-through2.cpp Add PCH tests for R336379 2018-07-05 17:23:15 +00:00
pch-through3a.cpp Add PCH tests for R336379 2018-07-05 17:23:15 +00:00
pch-through3b.cpp Add PCH tests for R336379 2018-07-05 17:23:15 +00:00
pch-through3c.cpp test commit: add a comment 2018-08-17 21:16:21 +00:00
pch__VA_ARGS__.c
pch__VA_ARGS__.h
pchpch.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
pchpch1.h
pchpch2.h
pending-ids.m Stop messing with the 'g' group of options in CompilerInvocation. 2015-10-08 04:24:12 +00:00
pr4489.c
pr18806.cpp
pr27445.cpp Fix a bug involving deferred decl emission and PCH 2016-04-22 18:46:33 +00:00
pragma-comment.c CodeGen: support linker options on Windows ARM 2016-06-23 13:45:33 +00:00
pragma-cuda-force-host-device.cu [CUDA] Rework tests now that we emit deferred diagnostics during sema. Test-only change. 2016-10-19 00:06:49 +00:00
pragma-detect_mismatch.c CodeGen: support linker options on Windows ARM 2016-06-23 13:45:33 +00:00
pragma-diag-section.cpp
pragma-diag.c
pragma-loop.cpp Append new attributes to the end of an AttributeList. 2018-08-03 01:21:16 +00:00
pragma-ms_struct.cpp Serialize `pragma ms_struct` state. 2016-03-02 23:22:00 +00:00
pragma-once.c Support '#pragma once' in headers when using PCH 2016-07-25 17:17:06 +00:00
pragma-optimize.c
pragma-pack.c Recommit r308327 3rd time: Add a warning for missing 2017-07-28 14:41:21 +00:00
pragma-pointers_to_members.cpp Serialize `pragma pointers_to_members` state. 2016-03-03 00:17:35 +00:00
pragma-weak.c Bring r325915 back. 2018-02-23 19:30:48 +00:00
pragma-weak.h
preamble.c
pth.c
pth.h
rdar8852495.c
rdar10830559.cpp
reinclude.cpp
reinclude1.h
reinclude2.h
reloc.c Re-apply "test: Use add_lit_testsuites so that subsets of tests can be specified" 2016-07-05 17:54:40 +00:00
remap-file-from-pch.cpp
remap-file-from-pch.cpp.h
remap-file-from-pch.cpp.remap.h
replaced-decl.m
selector-warning.h
selector-warning.m
single-token-macro.c
source-manager-stack.c
stmt-attrs.cpp
stmts.c
stmts.h
struct.c
struct.h
subscripting-literals.m Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
suspicious-pragma-pack.c -Wpragma-pack: add an additional note and fixit when warning 2017-07-31 13:37:50 +00:00
target-options.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
target-options.h
tentative-defs.c Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
tentative-defs.h
thread-local.cpp Revert "Revert r241620 and follow-up commits" and move the initialization 2015-07-08 01:00:30 +00:00
thread-safety-attrs.cpp
type_pack_element.cpp [Feature] Add a builtin for indexing into parameter packs. Patch by Louis Dionne. 2016-07-01 01:24:09 +00:00
types.c
types.h
typo.cpp
typo.m
typo2.cpp
undefined-internal.c
uses-seh.cpp [MS] Don't escape MS C++ names with \01 2018-03-16 20:36:49 +00:00
uuidof.cpp Fix serialization/deserialization for __uuidof 2016-03-28 03:19:50 +00:00
va_arg.c Support __builtin_ms_va_list. 2015-09-17 20:55:33 +00:00
va_arg.cpp Support __builtin_ms_va_list. 2015-09-17 20:55:33 +00:00
va_arg.h Support __builtin_ms_va_list. 2015-09-17 20:55:33 +00:00
variables.c
variables.h
verify_pch.m Avoid assumption that lit tests are writable. NFC 2018-01-08 15:05:01 +00:00
working-directory.cpp
working-directory.h