Nikita Popov
22e9024c9f
[IR] Introduce captures attribute ( #116990 )
...
This introduces the `captures` attribute as described in:
https://discourse.llvm.org/t/rfc-improvements-to-capture-tracking/81420
This initial patch only introduces the IR/bitcode support for the
attribute and its in-memory representation as `CaptureInfo`. This will
be followed by a patch to upgrade and remove the `nocapture` attribute,
and then by actual inference/analysis support.
Based on the RFC feedback, I've used a syntax similar to the `memory`
attribute, though the only "location" that can be specified is `ret`.
I've added some pretty extensive documentation to LangRef on the
semantics. One non-obvious bit here is that using ptrtoint will not
result in a "return-only" capture, even if the ptrtoint result is only
used in the return value. Without this requirement we wouldn't be able
to continue ordinary capture analysis on the return value.
2025-01-13 14:40:25 +01:00
..
2024-11-28 11:21:38 +01:00
2023-06-20 16:43:14 +02:00
2022-12-14 13:38:20 +01:00
2024-10-09 09:27:28 +04:00
2023-09-13 08:38:48 +03:00
2024-08-12 14:56:53 +04:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2025-01-13 14:40:25 +01:00
2022-12-19 15:22:39 +08:00
2024-07-25 09:19:22 -04:00
2022-12-13 12:24:05 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2023-06-20 16:43:14 +02:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2024-07-25 09:19:22 -04:00
2024-07-25 09:19:22 -04:00
2024-07-25 09:19:22 -04:00
2024-07-25 09:19:22 -04:00
2024-07-25 09:19:22 -04:00
2024-07-25 09:19:22 -04:00
2024-07-25 09:19:22 -04:00
2024-12-04 10:53:04 +00:00
2024-02-22 14:07:16 +00:00
2024-11-06 11:53:33 +00:00
2023-03-14 16:48:33 +00:00
2023-03-06 18:34:32 +00:00
2024-06-14 15:07:27 +01:00
2024-06-14 15:07:27 +01:00
2024-11-07 08:11:15 +00:00
2023-07-12 12:31:42 +05:30
2022-12-14 13:38:20 +01:00
2024-06-14 15:07:27 +01:00
2024-04-05 14:18:59 +01:00
2024-06-14 15:07:27 +01:00
2023-06-16 00:49:59 +02:00
2023-06-16 00:49:59 +02:00
2022-12-02 17:12:03 -05:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-09 01:04:45 +03:00
2024-10-15 17:11:25 +08:00
2022-12-14 13:38:20 +01:00
2024-08-20 11:25:49 +03:00
2023-06-20 16:43:14 +02:00
2022-12-19 11:23:17 +01:00
2022-12-19 11:23:17 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-09 01:04:45 +03:00
2024-09-02 12:42:52 +02:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2024-08-20 11:25:49 +03:00
2024-08-20 11:25:49 +03:00
2024-11-28 11:21:38 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2023-07-12 12:31:42 +05:30
2024-10-11 12:09:10 +07:00
2022-11-04 10:21:38 +01:00
2022-11-04 10:21:38 +01:00
2023-07-12 14:35:55 +02:00
2022-12-14 13:38:20 +01:00
2024-11-18 15:16:48 -08:00
2022-12-14 13:38:20 +01:00
2023-12-06 08:41:44 -08:00
2024-08-27 13:53:25 -04:00
2023-12-06 08:41:44 -08:00
2024-08-27 13:53:25 -04:00
2023-12-06 08:41:44 -08:00
2024-08-27 13:53:25 -04:00
2024-08-27 13:53:25 -04:00
2024-08-27 13:53:25 -04:00
2024-04-10 19:46:01 -07:00
2024-08-27 13:53:25 -04:00
2024-08-27 13:53:25 -04:00
2023-12-06 08:41:44 -08:00
2024-08-27 13:53:25 -04:00
2024-08-27 13:53:25 -04:00
2024-04-10 19:46:01 -07:00
2024-03-27 11:41:34 +00:00
2024-04-10 19:46:01 -07:00
2023-12-06 08:41:44 -08:00
2022-12-14 13:38:20 +01:00
2023-12-06 08:41:44 -08:00
2024-04-10 19:46:01 -07:00
2024-04-10 19:46:01 -07:00
2022-12-14 13:38:20 +01:00
2024-10-18 15:58:33 +01:00
2022-12-14 13:38:20 +01:00
2022-12-07 18:29:18 +00:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2024-02-23 10:24:15 +01:00
2024-01-16 17:01:01 -08:00
2024-01-16 17:01:01 -08:00
2023-10-11 10:23:38 +01:00
2023-10-11 10:23:38 +01:00
2023-10-11 10:23:38 +01:00
2023-10-11 10:23:38 +01:00
2023-10-11 10:23:38 +01:00
2024-06-14 15:07:27 +01:00
2023-03-02 09:29:42 +00:00
2024-06-14 15:07:27 +01:00
2022-12-14 13:38:20 +01:00
2022-11-04 10:21:38 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2024-04-11 12:29:29 -07:00
2022-12-14 13:38:20 +01:00
2022-12-19 11:23:17 +01:00
2022-12-19 11:23:17 +01:00
2024-07-03 09:02:31 +01:00
2024-03-06 09:51:48 -05:00
2022-12-14 13:38:20 +01:00
2024-08-28 12:48:20 +01:00
2022-12-14 13:38:20 +01:00
2022-12-14 13:38:20 +01:00
2024-04-29 10:16:45 +01:00
2024-04-29 10:16:45 +01:00
2024-04-29 10:16:45 +01:00
2024-05-28 16:09:53 +02:00
2024-05-28 16:09:53 +02:00
2024-03-27 11:41:34 +00:00
2024-06-04 08:31:03 +02:00
2024-11-21 11:21:12 +00:00
2022-12-14 13:38:20 +01:00
2023-06-20 16:43:14 +02:00