[all-commits] [llvm/llvm-project] 279c7a: Revert "[C++20] [Modules] Don't load declaration e...

Chuanqi Xu via All-commits all-commits at lists.llvm.org
Tue Mar 28 20:16:08 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 279c7a2f17937836ed13e359c3fb381bef7defaf
  Author: Chuanqi Xu <yedeng.yd at linux.alibaba.com>
  Date:   2023-03-29 (Wed, 29 Mar 2023)

  Changed paths:
    M clang/lib/Serialization/ASTWriterDecl.cpp
    R clang/test/Modules/no-eager-load.cppm

  Log Message:
  Revert "[C++20] [Modules] Don't load declaration eagerly for named modules"

This reverts commit af86957cbbffd3dfff3c6750ebddf118aebd0069.

Close https://github.com/llvm/llvm-project/issues/61733.

Previously I banned the eagerly loading for declarations from named
modules to speedup the process of reading modules. But I didn't think
about special decls like PragmaCommentDecl and PragmaDetectMismatchDecl.
So here is the issue https://github.com/llvm/llvm-project/issues/61733.

Note that the current behavior is still incorrect. Given:

// mod.cppm

export module mod;


// user.cpp
import mod;

Now the IR of `user.cpp` will contain the metadata '!0 =
!{!"msvcprt.lib"}' incorrectly. The root cause of the problem is that
`EagerlyDeserializedDecls` is designed for headers and it didn't take
care for named modules. We need to redesign a new mechanism for named

More information about the All-commits mailing list