Nikita Popov
32cd18975d
[GVN] Look through select/phi when determining underlying object ( #99509 )
...
This addresses an optimization regression in Rust we have observed after
https://github.com/llvm/llvm-project/pull/82458 . We now only perform
pointer replacement if they have the same underlying object. However,
getUnderlyingObject() by default only looks through linear chains, not
selects/phis. In particular, this means that we miss cases involving
involving pointer induction variables.
This patch fixes this by introducing a new helper
getUnderlyingObjectAggressive() which basically does what
getUnderlyingObjects() does, just specialized to the case where we must
arrive at a single underlying object in the end, and with a limit on the
number of inspected values.
Doing this more expensive underlying object check has no measurable
compile-time impact on CTMark.
2024-07-22 16:22:01 +02:00
..
2024-06-04 09:14:37 +02:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-01-11 14:19:34 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00
2022-12-07 22:22:08 +03:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-03-22 15:23:31 +01:00
2022-12-23 10:00:59 +01:00
2022-12-08 11:47:16 +01:00
2022-12-23 10:00:59 +01:00
2023-01-11 14:19:34 +01:00
2022-12-07 22:22:08 +03:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-04-27 13:04:17 -07:00
2022-12-23 10:00:59 +01:00
2023-12-05 10:09:52 +01:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2024-02-05 11:57:34 +01:00
2024-07-22 16:22:01 +02:00
2023-03-09 13:08:19 +01:00
2023-03-09 13:08:19 +01:00
2023-05-19 21:27:35 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-06-27 16:53:50 -07:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00
2022-11-29 13:29:02 +01:00
2023-06-09 15:41:32 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-01-10 11:38:58 -08:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2024-06-14 15:07:27 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-06-06 19:45:34 +00:00
2022-12-23 10:00:59 +01:00
2023-02-14 13:30:23 -08:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-01-11 14:19:34 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-02-22 14:47:00 +01:00
2023-02-02 14:25:13 +08:00
2022-12-23 10:00:59 +01:00
2023-09-14 13:49:01 +00:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-07 22:22:08 +03:00
2022-12-07 22:22:08 +03:00
2022-12-23 10:00:59 +01:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00
2024-02-05 11:57:34 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00
2023-01-11 14:19:34 +01:00
2022-12-23 10:00:59 +01:00
2024-06-30 11:51:30 +01:00
2022-12-23 10:00:59 +01:00
2023-05-31 15:03:41 +02:00
2023-06-30 15:52:40 +01:00
2023-09-15 07:04:32 +02:00
2023-09-15 11:50:34 +02:00
2023-10-19 09:08:59 +02:00
2024-02-26 15:55:56 +08:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-05-19 16:15:06 +01:00
2022-09-19 09:57:37 -07:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-07 22:22:08 +03:00
2023-10-10 19:22:00 +03:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2023-10-24 18:18:51 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-12-20 11:02:11 -05:00
2022-12-23 10:00:59 +01:00
2023-01-11 14:19:34 +01:00
2022-12-23 10:00:59 +01:00
2022-12-23 10:00:59 +01:00
2022-11-29 13:29:02 +01:00
2022-12-23 10:00:59 +01:00