-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[ASTWriter] Detect more non-affecting FileIDs to reduce source location duplication #112015
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
b6508a1
dc19161
4361ca5
f0336e0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -43,7 +43,7 @@ module third {} | |
| // CHECK-NEXT: "command-line": [ | ||
| // CHECK-NEXT: "-cc1", | ||
| // CHECK: "-fmodule-map-file=[[PREFIX]]/second/second/module.modulemap" | ||
| // CHECK-NOT: "-fmodule-map-file=[[PREFIX]]/second/second/sub.modulemap" | ||
| // CHECK-NEXT: "-fmodule-map-file=[[PREFIX]]/second/second/sub.modulemap" | ||
|
||
| // CHECK-NOT: "-fmodule-map-file=[[PREFIX]]/third/module.modulemap" | ||
| // CHECK: "-fmodule-file=second=[[PREFIX]]/cache/{{.*}}/second-{{.*}}.pcm" | ||
| // CHECK: ], | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| // Check that the same module map file passed to -fmodule-map-file *and* | ||
| // available from one of the `-fmodule-file` does not allocate extra source | ||
| // location space. This optimization is important for using module maps in | ||
| // large codebases to avoid running out of source location space. | ||
|
|
||
| // RUN: rm -rf %t && mkdir %t | ||
| // RUN: split-file %s %t | ||
|
|
||
| // RUN: %clang_cc1 -xc++ -fmodules -fno-implicit-modules -fmodule-map-file=%t/base.map -fmodule-name=base -emit-module %t/base.map -o %t/base.pcm | ||
| // RUN: %clang_cc1 -xc++ -fmodules -fno-implicit-modules \ | ||
| // RUN: -fmodule-map-file=%t/base.map -fmodule-map-file=%t/mod1.map \ | ||
| // RUN: -fmodule-file=%t/base.pcm \ | ||
| // RUN: -fmodule-name=mod1 -emit-module %t/mod1.map -o %t/mod1.pcm | ||
| // RUN: %clang_cc1 -xc++ -fmodules -fno-implicit-modules \ | ||
| // RUN: -fmodule-map-file=%t/base.map -fmodule-map-file=%t/mod1.map -fmodule-map-file=%t/mod2.map \ | ||
| // RUN: -fmodule-file=%t/mod1.pcm \ | ||
| // RUN: -fmodule-name=mod2 -emit-module %t/mod2.map -o %t/mod2.pcm | ||
| // RUN: %clang_cc1 -xc++ -fmodules -fno-implicit-modules \ | ||
| // RUN: -fmodule-map-file=%t/base.map -fmodule-map-file=%t/mod2.map -fmodule-map-file=%t/mod3.map \ | ||
| // RUN: -fmodule-file=%t/mod2.pcm \ | ||
| // RUN: -fmodule-name=mod3 -emit-module %t/mod3.map -o %t/mod3.pcm | ||
| // RUN: %clang_cc1 -xc++ -fmodules -fno-implicit-modules \ | ||
| // RUN: -fmodule-map-file=%t/base.map -fmodule-map-file=%t/mod3.map -fmodule-map-file=%t/mod4.map \ | ||
| // RUN: -fmodule-file=%t/mod3.pcm \ | ||
| // RUN: -fmodule-name=mod4 -emit-module %t/mod4.map -o %t/mod4.pcm | ||
| // RUN: %clang_cc1 -xc++ -fmodules -fno-implicit-modules -fmodule-map-file=%t/base.map -fmodule-map-file=%t/mod4.map -fmodule-file=%t/mod4.pcm -fsyntax-only -verify %t/check_slocs.cc | ||
|
|
||
| //--- base.map | ||
| module base { header "vector.h" } | ||
| //--- mod1.map | ||
| module mod1 { header "mod1.h" } | ||
| //--- mod2.map | ||
| module mod2 { header "mod2.h" } | ||
| //--- mod3.map | ||
| module mod3 { header "mod3.h" } | ||
| //--- mod4.map | ||
| module mod4 { header "mod4.h" } | ||
| //--- check_slocs.cc | ||
| #include "mod4.h" | ||
| #pragma clang __debug sloc_usage // expected-remark {{source manager location address space usage}} | ||
| // expected-note@* {{% of available space}} | ||
|
|
||
| // Module map files files that were specified on the command line are entered twice (once when parsing command-line, once loaded from the .pcm) | ||
| // Those that not specified on the command line must be entered once. | ||
|
|
||
| // [email protected]:1 {{file entered 2 times}} | ||
| // [email protected]:1 {{file entered 2 times}} | ||
| // [email protected]:1 {{file entered 1 time}} | ||
| // [email protected]:1 {{file entered 1 time}} | ||
| // [email protected]:1 {{file entered 1 time}} | ||
| // expected-note@* + {{file entered}} | ||
|
|
||
|
|
||
| //--- vector.h | ||
| #ifndef VECTOR_H | ||
| #define VECTOR_H | ||
| #endif | ||
|
|
||
| //--- mod1.h | ||
| #ifndef MOD1 | ||
| #define MOD1 | ||
| #include "vector.h" | ||
| int mod1(); | ||
| #endif | ||
| //--- mod2.h | ||
| #ifndef MOD2 | ||
| #define MOD2 | ||
| #include "vector.h" | ||
| #include "mod1.h" | ||
| int mod2(); | ||
| #endif | ||
| //--- mod3.h | ||
| #ifndef MOD3 | ||
| #define MOD3 | ||
| #include "vector.h" | ||
| #include "mod2.h" | ||
| int mod3(); | ||
| #endif | ||
| //--- mod4.h | ||
| #ifndef MOD4 | ||
| #define MOD4 | ||
| #include "vector.h" | ||
| #include "mod3.h" | ||
| int mod4(); | ||
| #endif |
Uh oh!
There was an error while loading. Please reload this page.