5 Commits

Author SHA1 Message Date
Chuanqi Xu
b0f10a1dc3
[C++20] [Modules] Don't generate the defintition for non-const available external variables (#93530)
Close https://github.com/llvm/llvm-project/issues/93497

The root cause of the problem is, we mark the variable from other
modules as constnant in LLVM incorrectly. This patch fixes this problem
by not emitting the defintition for non-const available external
variables. Since the non const available externally variable is not
helpful to the optimization.
2024-05-29 13:39:57 +08:00
Fangrui Song
c5de4dd1ea [test] %clang_cc1 -emit-llvm: remove redundant -S
And replace -emit-llvm -o - with -emit-llvm-only
2024-05-04 17:00:29 -07:00
Chuanqi Xu
dc4e85bd79 [C++20] [Modules] Remove hardcoded path to imported module in BMIs
Close https://github.com/llvm/llvm-project/issues/62707

As we discussed before, we'll forbid the use of implicit generated path
for C++20 modules. And as I mentioned in
https://github.com/llvm/llvm-project/issues/62707, we've emitted a
warning for clang17 and we'll make it a hard error in clang18. And the
patch addresses the decision.
2024-01-12 13:47:59 +08:00
Chuanqi Xu
8ee9da0232
[C++20] [Modules] Don't import function bodies from other module units even with optimizations (#71031)
Close https://github.com/llvm/llvm-project/issues/60996.

Previously, clang will try to import function bodies from other module
units to get more optimization oppotunities as much as possible. Then
the motivation becomes the direct cause of the above issue.

However, according to the discussion in SG15, the behavior of importing
function bodies from other module units breaks the ABI compatibility. It
is unwanted. So the original behavior of clang is incorrect. This patch
choose to not import function bodies from other module units in all
cases to follow the expectation.

Note that the desired optimized BMI idea is discarded too. Since it will
still break the ABI compatibility after we import function bodies
seperately.

The release note will be added seperately.

There is a similar issue for variable definitions. I'll try to handle
that in a different commit.
2023-11-07 23:04:45 +08:00
Chuanqi Xu
3cec39b91c [C++20] [Modules] Don't generate strong function of a partition in importing modules
This solves the multiple defintiion issue
https://github.com/llvm/llvm-project/issues/54269.

I think the cause of the bug might be an oversight. We just forget to
edit this when implementing partitions. And it should be a good fix.

Reviewed By: iains

Differential Revision: https://reviews.llvm.org/D121271
2022-04-01 14:36:04 +08:00