Hans Wennborg
00c527abab
[Coro] Allow spilling @llvm.coro.suspend() to the coro frame ( #133088 )
...
It was excluded from spilling in a263a60, possibly by accident.
In the linked bug, we hit a situation like this:
```
%s = call @llvm.coro.suspend(...)
|
switch (%s)
case v1: / \ case v2:
... ...
| suspend point
| ...
\ /
%x = phi [v1] [v2]
|
...
|
use(%x)
```
Instcombine will notice that %x correlates exactly with %s, and so
use(%x) becomes use(%s).
However, corosplit would substitute different values for %s when
splitting the function, so even though %s had a particular value when
control actually passed through the switch, it could have a *different*
value when reaching use(%s).
This illustrates that while IR from the frontend typically does not use
these suspend return values across suspend points, mid-level
optimizations on the presplit coroutine may introduce new uses of
suspend values, so they must be considered eligible to spill to the
coroutine frame.
Fixes : #130326
2025-03-27 10:23:30 +01:00
..
2024-08-09 13:25:04 +01:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-08-09 13:25:04 +01:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-08-09 13:25:04 +01:00
2023-09-21 22:52:05 -07:00
2023-09-22 20:29:44 +08:00
2024-02-21 16:35:07 +00:00
2024-02-21 16:35:07 +00:00
2024-02-05 11:57:34 +01:00
2023-09-14 09:02:58 +08:00
2024-02-21 16:35:07 +00:00
2024-02-05 11:57:34 +01:00
2024-02-05 11:57:34 +01:00
2023-04-20 17:24:01 +02:00
2024-02-20 11:58:44 +09:00
2024-02-05 11:57:34 +01:00
2024-11-11 12:56:31 +00:00
2024-02-21 16:35:07 +00:00
2025-01-29 16:56:47 +01:00
2024-05-23 22:32:54 +08:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2025-03-14 15:50:49 +00:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-04-05 15:55:06 +02:00
2024-06-20 19:39:19 +02:00
2024-06-20 19:39:19 +02:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-04-20 17:24:01 +02:00
2024-08-09 13:25:04 +01:00
2025-03-26 13:38:28 +01:00
2025-01-29 16:56:47 +01:00
2023-11-09 14:42:07 +08:00
2023-09-15 09:54:38 -07:00
2024-08-09 13:25:04 +01:00
2024-08-26 07:56:45 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-11-26 09:22:12 -05:00
2024-12-05 14:36:40 +01:00
2024-12-05 14:36:40 +01:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-12-05 14:36:40 +01:00
2024-11-07 07:52:14 +08:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-12-05 14:36:40 +01:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-11-07 07:52:14 +08:00
2024-08-09 13:25:04 +01:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2025-03-27 10:23:30 +01:00
2024-09-08 23:09:20 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2025-03-14 15:50:49 +00:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2024-05-15 15:29:08 +02:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-05-15 15:29:08 +02:00
2023-11-15 11:12:59 -08:00
2023-11-15 11:12:59 -08:00
2024-05-15 15:29:08 +02:00
2023-09-15 09:54:38 -07:00
2024-05-15 15:29:08 +02:00
2023-09-15 09:54:38 -07:00
2024-11-07 22:41:41 -08:00
2023-07-12 14:35:55 +02:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-12-05 14:36:40 +01:00
2024-11-07 22:41:32 -08:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2024-09-12 10:45:20 -07:00
2024-11-21 15:07:17 +01:00
2024-11-07 22:41:32 -08:00
2024-11-07 22:41:32 -08:00
2024-05-24 23:57:12 -07:00
2023-09-15 09:54:38 -07:00
2023-09-15 09:54:38 -07:00
2025-03-14 15:50:49 +00:00