llvm-project/clang/test/Modules/no-implicit-declarations.cppm
Chuanqi Xu 1ecc5ae13b [Serialization] Register Speical types before register decls
We will only regsiter top level types and decls in ASTWriter and
we will register the sub types and decls during the process of writing
types and decls. So that the ID for the types in the sub level can be
different if the writing decl process changes the order of the to-be-
emitted type queues. This is not ideal since it causes unnecessary
changes especially in no transitive changes model.

This patch migrates the issue by regsitering special types before
regsitering decls. This make sure that the special types in the 2nd
top level can be registered early than the decls. But it might still be
problematic if there are more levels in the special types. Luckily we
just don't have such special types.
2024-06-24 11:08:46 +08:00

27 lines
847 B
C++

// RUN: rm -rf %t
// RUN: mkdir %t
//
// RUN: %clang_cc1 -std=c++20 %s -emit-module-interface -o %t/a.pcm
// RUN: llvm-bcanalyzer --dump --disable-histogram --show-binary-blobs %t/a.pcm > %t/a.dump
// RUN: cat %t/a.dump | FileCheck %s
//
// RUN: %clang_cc1 -std=c++20 %s -emit-reduced-module-interface -o %t/a.pcm
// RUN: llvm-bcanalyzer --dump --disable-histogram --show-binary-blobs %t/a.pcm > %t/a.dump
// RUN: cat %t/a.dump | FileCheck %s
export module a;
// Contain something at least to make sure the compiler won't
// optimize this out.
export int a = 43;
// CHECK: <DECLTYPES_BLOCK
// CHECK-NOT: <DECL_TYPEDEF
// CHECK: <TYPE_TYPEDEF
// CHECK: <DECL_CONTEXT_LEXICAL
// CHECK: <DECL_EXPORT
// CHECK: <TYPE_RECORD
// CHECK: <DECL_VAR
// CHECK: <EXPR_INTEGER_LITERAL
// CHECK: <STMT_STOP
// CHECK: </DECLTYPES_BLOCK>