Ilya Biryukov
f02b1cc99e
[ASTWriter] Detect more non-affecting FileIDs to reduce source location duplication ( #112015 )
...
Currently, any FileID that references a module map file that was
required for a compilation is considered as affecting. This misses an
important opportunity to reduce the source location space taken by the
resulting PCM.
In particular, consider the situation where the same module map file is
passed multiple times in the dependency chain:
```shell
$ clang -fmodule-map-file=foo.modulemap ... -o mod1.pcm
$ clang -fmodule-map-file=foo.modulemap -fmodule-file=mod1.pcm ... -o mod2.pcm
...
$ clang -fmodule-map-file=foo.modulemap -fmodule-file=mod$((N-1)).pcm ... -o mod$N.pcm
```
Because `foo.modulemap` is read before reading any of the `.pcm` files,
we have to create a unique `FileID` for it when creating each module.
However, when reading the `.pcm` files, we will reuse the `FileID`
loaded from it for the same module map file and the `FileID` we created
can never be used again, but we will still mark it as affecting and it
will take the source location space in the output PCM.
For a chain of N dependencies, this results in the file taking `N *
(size of file)` source location space, which could be significant. For
examples, we observer internally that some targets that run out of 2GB
of source location space end up wasting up to 20% of that space in
module maps as described above.
I take extra care to still write the InputFile entries for those files that occupied
source location space before. It is required for correctness of clang-scan-deps.
2024-11-08 09:10:37 +01:00
..
2024-06-20 19:44:06 +02:00
2024-02-01 13:37:37 +00:00
2023-02-16 14:05:16 +08:00
2023-02-16 17:58:34 -08:00
2023-08-28 09:54:39 -07:00
2024-01-09 13:40:21 -05:00
2022-12-12 11:25:19 -08:00
2024-03-20 13:36:56 +09:00
2022-12-15 22:46:41 -08:00
2023-10-04 15:43:17 -07:00
2024-04-05 10:13:42 -07:00
2024-08-02 19:15:47 -03:00
2022-12-12 11:25:19 -08:00
2024-08-08 11:23:47 -03:00
2022-12-12 11:25:19 -08:00
2023-03-10 15:17:28 +01:00
2023-11-16 08:41:20 -08:00
2024-03-27 11:41:34 +00:00
2024-08-29 14:54:40 -07:00
2023-02-22 11:01:40 -08:00
2023-07-05 18:04:50 -07:00
2022-11-17 18:31:32 -08:00
2023-06-16 12:43:58 +02:00
2024-02-23 11:05:15 +08:00
2023-10-04 15:43:17 -07:00
2023-12-14 14:03:57 -08:00
2024-03-08 10:12:51 +08:00
2022-09-22 05:53:59 -07:00
2024-03-08 10:12:51 +08:00
2024-03-05 10:15:21 -08:00
2023-09-28 11:30:09 -07:00
2024-08-06 10:06:48 -07:00
2023-12-14 14:03:57 -08:00
2022-11-29 12:17:36 -08:00
2023-12-14 14:03:57 -08:00
2022-11-29 12:17:36 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-06-15 11:22:31 +02:00
2023-08-28 12:13:42 -04:00
2024-05-07 15:23:50 -04:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2023-06-24 09:01:59 +01:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2023-06-24 09:01:59 +01:00
2024-09-14 14:45:50 +08:00
2024-03-08 10:12:51 +08:00
2024-05-05 10:46:06 -07:00
2024-05-30 03:43:27 -03:00
2023-08-17 11:45:50 +08:00
2024-08-08 15:52:29 +08:00
2023-09-08 16:38:08 -07:00
2023-09-08 16:38:08 -07:00
2023-09-08 16:38:08 -07:00
2023-02-08 16:45:00 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-05-05 10:46:06 -07:00
2024-10-24 08:20:43 +01:00
2024-03-08 10:12:51 +08:00
2024-01-12 13:47:59 +08:00
2024-01-29 14:35:23 +08:00
2023-02-08 16:45:00 +08:00
2023-05-06 11:17:15 +08:00
2024-01-12 13:47:59 +08:00
2023-07-06 10:35:26 -04:00
2024-11-06 09:25:29 -05:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2024-05-04 23:08:11 -07:00
2022-12-12 11:25:19 -08:00
2022-12-02 09:44:15 -08:00
2022-12-12 11:25:19 -08:00
2024-06-21 17:50:30 +08:00
2023-01-31 09:57:23 -05:00
2023-01-31 09:57:23 -05:00
2023-01-31 09:57:23 -05:00
2023-12-14 14:03:57 -08:00
2023-01-31 09:57:23 -05:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2023-12-14 14:03:57 -08:00
2023-01-13 18:38:11 -08:00
2023-12-14 14:03:57 -08:00
2023-08-28 12:13:42 -04:00
2024-03-08 10:12:51 +08:00
2023-12-14 14:03:57 -08:00
2023-08-28 09:54:39 -07:00
2023-06-29 13:17:24 -07:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-11-02 15:07:58 -07:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2024-10-31 15:52:18 +08:00
2022-12-12 11:25:19 -08:00
2022-09-15 23:58:57 +00:00
2024-03-08 10:12:51 +08:00
2024-05-05 10:46:06 -07:00
2024-10-08 07:42:29 +01:00
2023-06-19 14:37:46 +00:00
2024-03-08 10:12:51 +08:00
2024-08-15 13:57:38 +02:00
2022-12-15 22:46:41 -08:00
2022-10-06 16:20:24 -07:00
2023-10-06 14:52:19 -07:00
2023-10-18 16:19:54 -07:00
2024-01-08 14:46:11 +08:00
2024-03-08 10:12:51 +08:00
2023-02-16 17:02:04 +08:00
2023-02-16 15:22:38 +08:00
2024-03-08 10:12:51 +08:00
2024-07-12 13:55:56 +08:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2023-12-14 14:03:57 -08:00
2023-05-30 21:42:01 -07:00
2023-12-14 14:03:57 -08:00
2024-04-30 16:33:34 +08:00
2024-06-28 16:12:50 +08:00
2024-10-16 10:38:53 +02:00
2023-12-14 14:03:57 -08:00
2024-03-08 10:12:51 +08:00
2024-05-07 11:41:08 +08:00
2024-05-04 17:00:29 -07:00
2024-10-08 13:34:00 +02:00
2024-08-04 19:00:54 -03:00
2024-08-04 19:00:54 -03:00
2024-01-16 11:32:10 +08:00
2024-09-24 22:57:07 -03:00
2024-09-24 22:57:07 -03:00
2023-05-04 19:19:52 +02:00
2023-04-10 09:51:02 -04:00
2023-04-10 09:51:02 -04:00
2023-11-06 17:31:27 -08:00
2024-04-16 15:41:26 +08:00
2024-03-11 11:39:21 +08:00
2023-11-02 15:07:58 -07:00
2023-02-22 11:01:40 -08:00
2024-04-10 09:08:01 -07:00
2024-08-08 11:23:47 -03:00
2023-01-20 13:37:36 -08:00
2024-06-14 09:57:21 -07:00
2022-11-15 17:21:48 +08:00
2022-08-24 14:36:06 -07:00
2023-05-30 08:41:36 +02:00
2024-05-11 23:14:56 +01:00
2024-05-22 07:47:10 +01:00
2024-01-12 13:47:59 +08:00
2023-04-04 08:12:10 -07:00
2023-08-28 12:13:42 -04:00
2023-02-16 14:05:16 +08:00
2024-04-05 10:13:42 -07:00
2024-04-05 10:13:42 -07:00
2024-04-12 12:51:58 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2023-03-10 15:17:28 +01:00
2024-08-01 14:45:21 +08:00
2024-03-08 10:12:51 +08:00
2023-01-20 10:18:18 -06:00
2023-12-14 14:03:57 -08:00
2024-09-29 10:38:05 +08:00
2023-03-30 14:22:40 -07:00
2022-12-08 11:37:00 -08:00
2024-03-08 10:12:51 +08:00
2024-05-04 17:00:29 -07:00
2023-02-21 10:16:05 -05:00
2023-12-14 14:03:57 -08:00
2024-08-08 11:23:47 -03:00
2024-07-31 10:38:32 -07:00
2023-07-21 15:49:47 -07:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2022-10-05 13:12:43 -07:00
2023-05-09 10:31:43 -07:00
2022-12-12 11:25:19 -08:00
2024-03-08 10:12:51 +08:00
2023-12-14 14:03:57 -08:00
2024-03-08 10:12:51 +08:00
2022-12-12 11:25:19 -08:00
2023-04-05 15:46:13 -07:00
2024-03-08 10:12:51 +08:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2024-05-07 15:23:50 -04:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2022-12-15 15:32:46 +08:00
2024-03-08 10:12:51 +08:00
2024-08-08 11:23:47 -03:00
2023-08-02 08:16:46 +02:00
2024-08-20 11:44:30 +02:00
2024-03-08 10:12:51 +08:00
2023-01-20 10:18:18 -06:00
2024-08-08 11:23:47 -03:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-09-29 11:30:33 -07:00
2023-09-08 16:56:01 -07:00
2023-12-14 14:03:57 -08:00
2024-05-04 23:08:11 -07:00
2024-08-08 11:23:47 -03:00
2023-12-14 14:03:57 -08:00
2024-05-07 13:55:44 -07:00
2023-09-12 08:31:27 -07:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2024-07-23 13:59:44 -07:00
2023-10-20 09:23:19 -07:00
2023-12-14 14:03:57 -08:00
2023-06-16 09:26:45 +02:00
2022-12-12 11:25:19 -08:00
2024-05-04 23:08:11 -07:00
2024-04-05 10:13:42 -07:00
2024-04-12 12:51:58 +08:00
2024-03-08 10:12:51 +08:00
2024-04-12 12:51:58 +08:00
2023-07-17 13:50:25 -07:00
2023-07-17 13:50:24 -07:00
2024-05-04 17:00:29 -07:00
2024-06-24 19:03:31 +08:00
2024-06-25 15:04:32 +08:00
2024-10-25 15:52:31 -07:00
2024-06-24 11:08:46 +08:00
2024-01-12 13:47:59 +08:00
2024-05-05 10:46:06 -07:00
2024-09-03 10:54:20 +08:00
2023-12-14 14:03:57 -08:00
2024-06-24 11:08:46 +08:00
2024-06-21 09:21:40 +08:00
2024-06-21 17:50:30 +08:00
2024-06-21 09:21:40 +08:00
2024-05-07 13:25:42 +08:00
2024-06-21 09:21:40 +08:00
2024-03-13 11:15:41 -07:00
2023-10-20 13:23:34 -07:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-03-10 15:17:28 +01:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2024-05-02 18:10:36 -07:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2024-01-21 21:28:57 +01:00
2023-12-14 14:03:57 -08:00
2024-05-05 10:46:06 -07:00
2022-12-12 09:58:38 -08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-07-19 13:38:57 +08:00
2023-09-28 11:30:09 -07:00
2023-08-10 10:11:43 -07:00
2024-04-12 12:51:58 +08:00
2024-04-12 12:51:58 +08:00
2023-03-20 11:37:09 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-05-04 17:00:29 -07:00
2024-03-08 10:12:51 +08:00
2024-05-05 10:46:06 -07:00
2024-05-04 23:08:11 -07:00
2024-03-08 10:12:51 +08:00
2024-05-04 23:08:11 -07:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-05-04 17:00:29 -07:00
2024-06-20 19:44:06 +02:00
2024-05-04 17:00:29 -07:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-05-05 10:46:06 -07:00
2024-03-08 10:12:51 +08:00
2024-05-04 23:08:11 -07:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-08-08 11:23:47 -03:00
2024-04-12 12:51:58 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-05-04 23:08:11 -07:00
2023-12-28 10:45:47 +08:00
2024-03-08 10:12:51 +08:00
2024-05-04 23:08:11 -07:00
2024-01-15 08:40:26 +01:00
2023-11-16 16:05:46 +08:00
2024-05-04 23:08:11 -07:00
2023-12-04 17:05:27 +08:00
2024-04-30 14:43:57 +08:00
2024-02-01 13:44:32 +08:00
2024-01-15 17:00:49 +08:00
2024-05-04 17:00:29 -07:00
2024-02-20 14:33:48 +08:00
2024-04-19 09:46:18 +08:00
2024-04-28 15:23:39 +08:00
2024-04-30 11:34:34 +08:00
2024-05-07 10:59:34 +08:00
2024-05-20 10:36:03 +08:00
2024-05-29 13:39:57 +08:00
2024-06-03 14:59:23 +08:00
2024-07-02 13:55:30 +08:00
2024-10-18 08:58:26 +03:00
2024-08-09 14:48:56 +08:00
2024-08-09 13:39:24 +08:00
2024-08-08 13:29:59 +08:00
2024-08-08 13:29:59 +08:00
2024-08-12 18:27:37 +08:00
2024-08-29 12:37:56 +08:00
2024-08-29 15:42:57 +08:00
2024-09-09 11:24:50 +08:00
2024-09-18 10:13:06 +08:00
2023-12-14 14:03:57 -08:00
2024-03-08 10:12:51 +08:00
2024-04-12 12:51:58 +08:00
2023-10-06 12:27:07 -07:00
2023-02-10 16:14:37 +08:00
2024-05-05 11:42:04 -07:00
2024-04-19 12:45:40 -07:00
2024-11-08 09:10:37 +01:00
2024-04-12 22:36:43 -07:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2023-12-14 14:03:57 -08:00
2022-12-12 11:25:19 -08:00
2023-12-14 14:03:57 -08:00
2024-06-18 13:40:31 -04:00
2023-12-14 14:03:57 -08:00
2023-08-28 12:13:42 -04:00
2024-03-08 10:12:51 +08:00
2024-09-03 10:54:20 +08:00
2024-09-03 10:54:20 +08:00
2024-05-04 23:08:11 -07:00
2024-08-29 14:54:40 -07:00
2024-03-08 10:12:51 +08:00
2024-04-12 12:51:58 +08:00
2023-05-23 10:52:22 +08:00
2023-05-23 10:52:22 +08:00
2024-03-08 10:12:51 +08:00
2023-10-31 09:38:45 -04:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-12-14 14:03:57 -08:00
2023-04-13 15:14:34 +08:00
2023-04-13 15:14:34 +08:00
2023-04-13 15:14:34 +08:00
2023-04-13 15:14:34 +08:00
2022-11-03 08:29:59 -04:00
2022-11-03 08:29:59 -04:00
2024-06-13 22:44:24 -07:00
2024-06-24 19:03:31 +08:00
2024-04-30 16:37:27 +08:00
2023-08-28 12:13:42 -04:00
2024-03-08 10:12:51 +08:00
2023-07-17 13:50:25 -07:00
2023-09-28 11:30:09 -07:00
2024-08-30 11:45:01 +08:00
2024-08-05 17:01:24 +08:00
2024-08-08 13:14:09 +08:00
2024-10-30 17:27:04 +08:00
2024-03-13 11:15:41 -07:00
2024-07-23 13:02:59 -07:00
2023-10-03 12:41:11 -07:00
2024-05-04 23:08:11 -07:00
2023-01-31 09:57:23 -05:00
2023-01-31 09:57:23 -05:00
2024-09-26 15:56:33 -07:00
2024-07-23 11:26:25 -07:00
2023-04-20 11:29:23 -07:00
2022-09-02 19:09:15 -07:00
2023-12-04 17:05:27 +08:00
2023-03-31 15:56:09 -07:00
2023-12-14 14:03:57 -08:00
2024-03-08 10:12:51 +08:00
2024-07-02 19:34:48 +08:00
2024-04-12 12:51:58 +08:00
2024-03-08 10:12:51 +08:00
2024-03-08 10:12:51 +08:00
2024-01-11 09:46:54 +01:00
2023-01-31 09:57:23 -05:00
2023-12-14 14:03:57 -08:00
2024-06-21 11:04:53 +08:00
2024-03-06 15:46:55 +08:00
2024-09-03 10:54:20 +08:00
2022-09-04 05:29:32 +00:00
2024-07-08 09:26:44 -07:00
2023-03-16 15:31:17 -07:00
2023-03-03 11:15:29 +08:00
2023-08-28 12:13:42 -04:00
2023-12-14 14:03:57 -08:00
2023-05-25 12:36:57 -07:00
2023-11-16 08:41:20 -08:00
2024-08-08 13:14:09 +08:00
2024-08-23 17:42:47 +08:00
2023-09-28 11:30:09 -07:00
2023-08-09 10:40:53 -07:00