Nikita Popov
90ba33099c
[InstCombine] Canonicalize constant GEPs to i8 source element type ( #68882 )
...
This patch canonicalizes getelementptr instructions with constant
indices to use the `i8` source element type. This makes it easier for
optimizations to recognize that two GEPs are identical, because they
don't need to see past many different ways to express the same offset.
This is a first step towards
https://discourse.llvm.org/t/rfc-replacing-getelementptr-with-ptradd/68699 .
This is limited to constant GEPs only for now, as they have a clear
canonical form, while we're not yet sure how exactly to deal with
variable indices.
The test llvm/test/Transforms/PhaseOrdering/switch_with_geps.ll gives
two representative examples of the kind of optimization improvement we
expect from this change. In the first test SimplifyCFG can now realize
that all switch branches are actually the same. In the second test it
can convert it into simple arithmetic. These are representative of
common optimization failures we see in Rust.
Fixes https://github.com/llvm/llvm-project/issues/69841 .
2024-01-24 15:25:29 +01:00
..
2024-01-10 11:56:52 +00:00
2024-01-17 14:12:07 +01:00
2023-11-02 14:28:40 +00:00
2024-01-08 15:17:00 -08:00
2024-01-24 15:25:29 +01:00
2023-11-03 10:46:07 +01:00
2024-01-24 15:25:29 +01:00
2023-12-06 14:17:18 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-12-02 14:11:12 -08:00
2023-11-03 10:46:07 +01:00
2023-09-14 09:09:45 +02:00
2023-11-27 12:54:11 -08:00
2024-01-24 15:25:29 +01:00
2023-08-16 22:43:04 -05:00
2023-12-05 10:33:44 -08:00
2023-11-30 14:14:21 +01:00
2023-09-20 12:08:52 +05:30
2023-11-16 02:35:47 +08:00
2023-11-08 09:34:40 +01:00
2023-11-01 23:50:35 -05:00
2023-09-20 12:08:52 +05:30
2023-09-20 12:08:52 +05:30
2023-12-15 15:49:25 +01:00
2023-12-11 14:27:00 +01:00
2023-11-30 12:56:22 +01:00
2023-10-12 16:05:19 -05:00
2024-01-23 20:20:40 +07:00
2023-11-08 09:34:40 +01:00
2023-12-25 07:14:31 +08:00
2023-12-05 10:33:44 -08:00
2023-12-02 14:11:12 -08:00
2024-01-03 12:01:02 +01:00
2023-11-08 09:34:40 +01:00
2023-12-14 15:27:17 +01:00
2023-11-27 12:54:11 -08:00
2023-12-02 14:11:12 -08:00
2024-01-24 15:25:29 +01:00
2023-10-28 03:12:15 -07:00
2023-11-09 11:58:02 +01:00
2023-09-20 12:08:52 +05:30
2023-09-20 12:08:52 +05:30
2023-09-21 15:30:05 +02:00
2023-09-20 12:08:52 +05:30
2024-01-24 15:25:29 +01:00
2023-09-20 12:08:52 +05:30
2023-12-02 14:11:12 -08:00
2023-11-08 09:34:40 +01:00
2023-12-07 15:00:40 +01:00
2023-09-27 09:56:23 +02:00
2023-12-18 16:12:37 +01:00
2023-10-05 13:23:05 -04:00
2023-09-19 14:54:25 +02:00
2023-12-02 14:11:12 -08:00
2023-12-19 13:06:04 +01:00
2023-12-18 16:12:37 +01:00
2024-01-10 19:33:18 +08:00
2024-01-11 15:15:12 +08:00
2024-01-10 19:33:18 +08:00
2023-12-19 12:26:48 +01:00
2024-01-10 19:33:18 +08:00
2023-12-18 16:12:37 +01:00
2023-09-21 15:30:05 +02:00
2024-01-01 22:52:13 +08:00
2023-11-29 13:19:50 +00:00
2023-11-18 15:15:14 +08:00
2023-09-13 15:50:17 -05:00
2023-09-13 15:50:17 -05:00
2023-09-13 15:50:17 -05:00
2023-09-13 15:50:17 -05:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-20 23:29:44 +08:00
2023-12-16 17:58:57 +08:00
2023-11-16 17:30:01 +08:00
2023-10-23 11:21:49 +01:00
2024-01-24 15:25:29 +01:00
2024-01-13 11:15:30 -08:00
2023-12-02 14:11:12 -08:00
2023-11-30 16:30:32 +00:00
2023-12-02 14:11:12 -08:00
2024-01-24 15:25:29 +01:00
2023-08-29 17:58:15 -04:00
2023-12-21 22:47:21 +08:00
2023-12-13 14:09:27 +08:00
2024-01-24 15:25:29 +01:00
2023-09-21 15:30:05 +02:00
2023-11-18 15:15:14 +08:00
2023-11-30 16:30:32 +00:00
2023-11-01 23:50:35 -05:00
2023-11-01 12:56:30 +01:00
2023-09-20 12:08:52 +05:30
2023-08-22 09:29:54 +02:00
2023-11-03 10:46:07 +01:00
2023-09-20 12:08:52 +05:30
2023-11-03 10:46:07 +01:00
2023-10-02 12:40:20 +02:00
2023-08-29 17:58:15 -04:00
2023-12-08 15:06:23 +08:00
2023-11-08 09:34:40 +01:00
2023-11-08 09:34:40 +01:00
2023-12-12 14:28:05 +00:00
2023-12-12 14:28:05 +00:00
2023-11-30 16:30:32 +00:00
2023-11-30 16:30:32 +00:00
2023-11-20 16:56:31 +00:00
2023-12-12 14:28:05 +00:00
2023-11-30 16:30:32 +00:00
2023-11-29 13:19:50 +00:00
2023-11-30 16:30:32 +00:00
2023-11-20 17:59:27 -06:00
2023-11-03 10:16:15 +01:00
2023-11-03 10:16:15 +01:00
2023-08-01 11:53:47 +02:00
2023-11-13 21:05:05 +08:00
2023-12-13 17:17:06 +08:00
2023-11-29 13:19:50 +00:00
2023-11-19 12:15:04 -06:00
2023-11-30 16:30:32 +00:00
2023-12-19 12:26:48 +01:00
2024-01-24 15:25:29 +01:00
2023-08-31 19:03:48 -04:00
2023-09-01 15:02:12 -05:00
2023-09-20 12:08:52 +05:30
2023-09-01 12:17:36 -07:00
2023-10-26 14:28:40 -07:00
2023-10-26 14:28:40 -07:00
2023-11-08 09:34:40 +01:00
2023-08-31 18:59:34 -04:00
2023-08-31 19:07:36 -04:00
2023-08-11 19:16:20 -04:00
2023-11-03 10:46:07 +01:00
2024-01-15 12:05:38 -08:00
2024-01-10 20:24:20 +08:00
2023-09-07 10:28:54 -04:00
2023-09-01 07:47:12 -04:00
2023-11-19 12:15:03 -06:00
2023-09-20 12:08:52 +05:30
2024-01-16 14:13:05 -08:00
2023-12-27 12:27:12 -08:00
2023-09-01 20:23:45 -04:00
2023-11-24 08:49:19 -08:00
2024-01-18 20:29:53 +08:00
2024-01-24 15:25:29 +01:00
2023-09-14 13:49:01 +00:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-10-02 16:22:30 +02:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-10-02 12:40:20 +02:00
2024-01-05 17:08:49 +08:00
2023-10-12 14:38:54 +00:00
2023-10-27 17:36:30 -05:00
2023-11-18 15:15:14 +08:00
2023-12-18 16:12:37 +01:00
2023-12-06 14:17:18 +01:00
2023-09-07 16:53:29 +01:00
2024-01-24 15:25:29 +01:00
2023-09-29 21:21:00 +08:00
2023-11-13 00:53:53 +08:00
2023-08-16 21:09:08 +05:30
2024-01-24 15:25:29 +01:00
2023-12-02 14:11:12 -08:00
2023-12-06 14:17:18 +01:00
2023-11-03 10:46:07 +01:00
2023-12-06 14:17:18 +01:00
2023-09-13 15:50:17 -05:00
2023-12-06 14:17:18 +01:00
2023-11-19 12:15:04 -06:00
2023-12-02 14:11:12 -08:00
2023-09-26 19:33:31 +08:00
2023-10-06 20:57:58 +08:00
2023-10-28 03:12:15 -07:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-12-08 11:25:41 +01:00
2023-11-18 15:15:14 +08:00
2023-12-08 11:25:41 +01:00
2023-12-18 16:12:37 +01:00
2023-10-13 22:02:57 +08:00
2024-01-16 11:39:42 +01:00
2023-12-06 14:17:18 +01:00
2024-01-24 15:25:29 +01:00
2023-12-19 12:26:48 +01:00
2023-12-17 21:41:03 +01:00
2023-12-18 16:12:37 +01:00
2023-12-19 12:26:48 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-09-01 12:17:36 -07:00
2023-10-26 14:28:40 -07:00
2023-10-26 14:28:40 -07:00
2023-11-03 10:16:15 +01:00
2023-12-07 16:23:20 +01:00
2023-12-06 14:17:18 +01:00
2023-11-20 23:29:44 +08:00
2023-09-13 08:38:48 +03:00
2023-12-12 14:28:05 +00:00
2023-12-12 14:28:05 +00:00
2023-11-08 09:34:40 +01:00
2023-11-13 21:05:05 +08:00
2023-09-20 12:08:52 +05:30
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-09-20 12:08:52 +05:30
2024-01-24 15:25:29 +01:00
2024-01-17 16:50:10 +07:00
2024-01-22 05:50:20 -08:00
2024-01-22 05:50:20 -08:00
2023-11-30 16:30:32 +00:00
2023-11-18 03:36:09 +08:00
2023-10-19 18:35:27 +01:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-05 10:33:44 -08:00
2023-12-05 10:33:44 -08:00
2023-12-05 10:33:44 -08:00
2023-12-18 16:12:37 +01:00
2023-10-06 12:29:06 +01:00
2024-01-24 15:25:29 +01:00
2023-09-21 15:30:05 +02:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-12-02 14:11:12 -08:00
2024-01-04 17:04:31 +01:00
2023-10-06 12:29:06 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-09-27 09:56:23 +02:00
2023-11-07 10:50:19 -05:00
2023-11-08 09:34:40 +01:00
2023-08-24 15:29:59 +02:00
2023-12-23 04:41:32 +08:00
2024-01-04 15:11:28 +08:00
2023-12-06 14:17:18 +01:00
2023-12-04 14:14:59 +01:00
2023-12-02 14:11:12 -08:00
2023-12-04 14:14:59 +01:00
2023-12-21 19:13:09 +08:00
2023-12-02 14:11:12 -08:00
2024-01-18 20:12:00 +08:00
2024-01-24 15:25:29 +01:00
2023-11-08 09:34:40 +01:00
2023-09-29 02:51:58 +08:00
2023-11-08 09:34:40 +01:00
2024-01-24 15:25:29 +01:00
2023-11-03 10:46:07 +01:00
2023-12-08 11:25:41 +01:00
2023-08-09 14:23:45 -04:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2024-01-24 15:25:29 +01:00
2023-12-02 14:11:12 -08:00
2023-12-02 14:11:12 -08:00
2023-09-15 06:46:30 +02:00
2024-01-03 12:01:02 +01:00
2023-12-29 23:58:58 +08:00
2023-07-30 18:38:45 +02:00
2023-11-08 09:34:40 +01:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-16 17:30:01 +08:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-16 17:30:01 +08:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-10-26 12:07:37 -07:00
2024-01-15 11:24:46 +00:00
2023-10-26 12:07:37 -07:00
2023-08-24 14:39:28 -07:00
2023-10-21 08:56:14 +08:00
2023-11-14 13:48:51 +08:00
2023-09-25 15:46:39 +08:00
2023-10-27 17:36:30 -05:00
2023-12-02 14:11:12 -08:00
2023-11-07 09:34:16 +01:00
2023-09-20 12:08:52 +05:30
2023-11-03 10:46:07 +01:00
2023-08-01 11:53:47 +02:00
2023-12-19 12:26:48 +01:00
2024-01-24 15:25:29 +01:00
2023-11-30 16:30:32 +00:00
2024-01-24 15:25:29 +01:00
2023-09-21 15:30:05 +02:00
2023-09-21 15:30:05 +02:00
2023-09-21 15:30:05 +02:00
2023-09-21 15:30:05 +02:00
2023-12-05 10:33:44 -08:00
2023-07-31 10:56:49 +02:00
2024-01-24 15:25:29 +01:00
2023-09-20 12:08:52 +05:30
2023-10-15 17:00:50 +08:00
2023-11-09 16:36:49 -06:00
2023-11-27 12:54:11 -08:00
2023-12-14 21:19:15 +08:00
2023-12-14 23:06:38 +08:00
2024-01-05 10:45:26 +01:00
2023-10-26 14:28:40 -07:00
2023-09-21 15:30:05 +02:00
2024-01-24 15:25:29 +01:00
2023-11-01 23:50:36 -05:00
2023-11-27 12:54:11 -08:00
2023-10-26 14:28:40 -07:00
2023-11-08 09:34:40 +01:00
2023-11-08 09:34:40 +01:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-16 17:30:01 +08:00
2023-11-16 17:30:01 +08:00
2023-10-12 16:05:19 -05:00
2023-11-18 15:15:14 +08:00
2023-11-18 15:15:14 +08:00
2023-11-16 17:30:01 +08:00
2023-11-16 17:30:01 +08:00
2023-11-18 15:15:14 +08:00
2023-09-24 19:10:47 +08:00
2023-11-27 12:54:11 -08:00
2023-11-07 22:48:14 +01:00
2023-11-20 16:56:31 +00:00
2023-11-15 21:27:48 +08:00
2023-09-20 12:08:52 +05:30
2023-09-14 13:49:01 +00:00
2023-11-17 14:02:47 +08:00
2023-10-19 09:01:48 +02:00
2023-10-30 12:09:43 -07:00
2023-10-26 13:12:30 +02:00
2023-12-31 18:28:48 +08:00
2023-12-18 16:12:37 +01:00
2023-11-13 21:05:05 +08:00
2023-11-08 09:34:40 +01:00
2024-01-24 15:25:29 +01:00
2023-11-08 09:34:40 +01:00
2023-12-02 14:11:12 -08:00
2023-09-16 12:22:46 +02:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-31 18:28:48 +08:00
2024-01-24 15:25:29 +01:00
2023-12-02 14:11:12 -08:00
2023-09-21 15:30:05 +02:00
2023-11-13 21:05:05 +08:00
2023-12-02 14:11:12 -08:00
2024-01-11 09:34:30 +01:00
2023-11-16 17:30:01 +08:00
2023-11-13 21:05:05 +08:00
2023-12-18 16:12:37 +01:00
2023-11-13 21:05:05 +08:00
2023-11-13 21:05:05 +08:00
2023-11-03 10:46:07 +01:00
2023-11-13 21:05:05 +08:00
2023-11-13 21:05:05 +08:00
2023-11-13 21:05:05 +08:00
2023-11-16 17:30:01 +08:00
2023-10-12 16:05:19 -05:00
2024-01-23 12:10:59 +01:00
2023-12-02 14:11:12 -08:00
2023-11-13 21:05:05 +08:00
2024-01-24 15:25:29 +01:00
2023-11-18 15:15:14 +08:00
2023-12-19 12:26:48 +01:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-18 15:36:22 +01:00
2023-12-19 12:26:48 +01:00
2023-11-18 15:15:14 +08:00
2023-10-12 20:23:39 +00:00
2023-09-21 15:30:05 +02:00
2023-09-21 15:30:05 +02:00
2023-10-26 14:28:40 -07:00
2023-12-06 14:17:18 +01:00
2024-01-24 15:25:29 +01:00
2023-08-09 18:33:11 -04:00
2023-11-30 16:30:32 +00:00
2024-01-05 14:39:16 +08:00
2023-09-25 15:46:39 +08:00
2024-01-24 15:25:29 +01:00
2023-11-30 16:30:32 +00:00
2023-08-09 18:33:11 -04:00
2024-01-24 15:25:29 +01:00
2023-09-21 15:30:05 +02:00
2023-11-29 13:19:50 +00:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-11-20 00:02:23 +08:00
2023-12-20 14:11:58 +00:00
2023-12-06 14:17:18 +01:00
2023-12-19 12:26:48 +01:00
2024-01-24 15:25:29 +01:00
2023-07-29 11:21:22 +02:00
2024-01-06 01:43:21 +08:00
2024-01-05 21:03:24 +08:00
2024-01-06 04:30:07 +08:00
2023-09-20 12:08:52 +05:30
2023-12-02 14:11:12 -08:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-02 14:11:12 -08:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-06 14:17:18 +01:00
2023-11-08 09:34:40 +01:00
2023-09-25 15:46:39 +08:00
2023-09-25 15:46:39 +08:00
2023-11-30 16:30:32 +00:00
2023-12-02 14:11:12 -08:00
2023-12-02 14:11:12 -08:00
2024-01-24 15:25:29 +01:00
2023-09-21 15:30:05 +02:00
2023-11-20 20:53:24 +00:00
2023-08-09 17:49:14 -07:00
2023-09-21 15:30:05 +02:00
2023-11-16 17:30:01 +08:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2024-01-24 15:25:29 +01:00
2023-12-18 16:12:37 +01:00
2023-12-18 16:12:37 +01:00
2023-12-18 17:01:59 +01:00
2023-12-19 12:26:48 +01:00
2023-12-19 12:26:48 +01:00
2023-12-19 12:26:48 +01:00
2023-11-13 21:05:05 +08:00
2023-12-18 16:30:40 +01:00
2024-01-24 15:25:29 +01:00
2023-12-18 16:30:40 +01:00
2023-11-08 09:34:40 +01:00
2023-11-08 09:34:40 +01:00
2024-01-24 15:25:29 +01:00
2023-12-02 14:11:12 -08:00
2023-12-25 07:14:31 +08:00
2023-09-21 15:30:05 +02:00
2023-09-21 15:30:05 +02:00
2023-12-15 16:32:18 +08:00
2023-11-08 09:34:40 +01:00
2023-12-31 18:28:48 +08:00
2023-11-08 09:34:40 +01:00