Nick Desaulniers
329ef60f3e
[Clang] support for outputs along indirect edges of asm goto
...
Initial support for asm goto w/ outputs (D69876) only supported outputs
along the "default" (aka "fallthrough") edge.
We can support outputs along all edges by repeating the same pattern of
stores along the indirect edges that we allready do for the default
edge. One complication is that these indirect edges may be critical
edges which would need to be split. Another issue is that mid-codgen of
LLVM IR, the control flow graph might not reflect the control flow of
the final function.
To avoid this "chicken and the egg" problem assume that any given
indirect edge may become a critical edge, and pro-actively split it.
This is unnecessary if the edge does not become critical, but LLVM will
optimize such cases via tail duplication.
Fixes: https://github.com/llvm/llvm-project/issues/53562
Reviewed By: void
Differential Revision: https://reviews.llvm.org/D136497
2023-02-16 17:58:34 -08:00
..
2023-01-31 09:57:23 -05:00
2022-11-01 19:31:51 -07:00
2023-02-16 14:05:16 +08:00
2017-01-26 23:07:59 +00:00
2023-02-16 17:58:34 -08:00
2022-02-10 16:06:03 -05:00
2022-07-21 17:42:04 -07:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2018-07-18 23:21:19 +00:00
2022-12-15 22:46:41 -08:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2022-01-16 18:54:17 +09:00
2022-04-07 12:09:47 +02:00
2022-04-07 12:09:47 +02:00
2023-01-20 10:18:18 -06:00
2022-11-17 18:31:32 -08:00
2023-01-19 15:58:31 -06:00
2022-07-12 23:45:53 +08:00
2022-07-12 23:45:53 +08:00
2022-09-22 05:53:59 -07:00
2022-07-12 23:57:44 +08:00
2022-07-22 15:24:54 -04:00
2016-12-06 00:40:17 +00:00
2022-07-21 17:42:04 -07:00
2022-11-29 12:17:36 -08:00
2022-11-29 12:17:36 -08:00
2022-11-29 12:17:36 -08:00
2022-12-01 07:21:07 -08:00
2022-11-29 12:17:36 -08:00
2022-11-29 12:17:36 -08:00
2022-02-10 16:06:03 -05:00
2022-07-26 21:07:41 +08:00
2020-06-12 10:29:01 -07:00
2022-02-25 09:33:14 +00:00
2022-06-29 12:48:48 +08:00
2023-02-16 15:22:38 +08:00
2022-04-11 11:30:45 +01:00
2022-04-08 10:57:27 -07:00
2022-04-08 10:57:27 -07:00
2022-04-08 08:57:37 +01:00
2022-04-08 10:57:27 -07:00
2022-04-08 10:57:27 -07:00
2022-02-26 11:27:08 +00:00
2022-02-26 11:27:08 +00:00
2022-08-21 10:19:46 +01:00
2021-08-04 13:46:40 +02:00
2023-02-16 15:22:38 +08:00
2022-03-25 09:17:14 +00:00
2022-03-26 10:17:17 +00:00
2022-03-26 10:17:17 +00:00
2022-04-03 11:39:00 +01:00
2022-03-27 09:38:06 +01:00
2022-03-28 07:38:22 +01:00
2022-03-26 10:17:17 +00:00
2023-02-08 16:45:00 +08:00
2023-02-16 15:22:38 +08:00
2023-01-22 10:22:36 +00:00
2022-07-21 17:42:04 -07:00
2022-11-18 11:11:17 +08:00
2022-02-23 10:26:42 +00:00
2022-02-24 09:01:09 +00:00
2023-02-08 16:45:00 +08:00
2022-02-24 09:01:09 +00:00
2022-07-08 19:02:59 +01:00
2022-07-12 19:24:17 +03:00
2018-07-04 02:25:38 +00:00
2022-12-12 11:25:19 -08:00
2015-06-16 00:08:24 +00: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-02 09:44:15 -08:00
2015-10-08 04:24:12 +00:00
2022-12-12 11:25:19 -08:00
2022-06-15 17:46:16 -07:00
2023-02-02 15:16:20 -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
2015-06-16 00:08:24 +00:00
2023-01-31 09:57:23 -05:00
2022-02-10 16:06:03 -05:00
2022-07-18 15:46:26 +08:00
2022-07-18 15:46:26 +08:00
2022-07-18 15:46:26 +08:00
2023-01-13 18:38:11 -08:00
2022-09-20 17:55:37 -07:00
2022-06-29 12:48:48 +08:00
2023-02-16 14:05:16 +08:00
2023-02-16 14:05:16 +08:00
2022-04-20 11:30:12 -04:00
2022-12-12 11:25:19 -08:00
2022-02-10 16:06:03 -05:00
2022-09-15 23:58:57 +00:00
2022-11-23 11:27:49 -08:00
2022-07-15 15:57:04 +08:00
2019-05-22 21:58:17 +00:00
2022-12-15 22:46:41 -08:00
2022-10-06 16:20:24 -07:00
2021-08-06 14:48:28 +02:00
2016-10-20 23:11:45 +00:00
2016-06-23 15:07:32 +00:00
2022-02-23 14:46:23 +01:00
2016-04-12 20:20:33 +00:00
2015-08-18 23:42:50 +00:00
2016-08-29 20:46:59 +00:00
2022-06-29 12:48:48 +08:00
2023-02-16 17:02:04 +08:00
2023-02-16 15:22:38 +08:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2015-11-03 18:33:07 +00:00
2022-02-10 16:06:03 -05:00
2017-05-18 19:34:55 +00:00
2022-10-12 11:10:08 -07:00
2022-07-21 17:42:04 -07:00
2022-02-10 16:06:03 -05:00
2023-02-06 17:17:09 +08:00
2023-02-02 07:16:41 -08:00
2022-07-21 17:42:04 -07:00
2022-06-06 19:12:26 -07:00
2015-02-13 23:50:20 +00:00
2023-01-20 10:18:18 -06:00
2023-01-20 13:37:36 -08:00
2022-07-21 17:42:04 -07:00
2017-04-12 03:58:58 +00:00
2022-11-15 17:21:48 +08:00
2022-08-24 14:36:06 -07:00
2022-02-11 11:22:50 +08:00
2022-02-10 16:06:03 -05:00
2023-02-16 14:05:16 +08:00
2022-02-10 16:06:03 -05:00
2022-10-08 17:44:04 +08:00
2022-07-21 17:42:04 -07:00
2022-07-21 17:42:04 -07:00
2022-07-13 00:13:56 +08:00
2022-07-21 17:25:05 +08:00
2015-02-24 03:30:14 +00:00
2022-09-13 23:10:55 +00:00
2022-07-26 18:30:48 +08:00
2023-01-20 10:18:18 -06:00
2022-12-08 11:37:00 -08:00
2022-12-14 11:30:12 +08:00
2023-02-16 17:02:04 +08:00
2015-11-04 19:26:32 +00:00
2022-02-10 16:06:03 -05:00
2022-02-10 16:06:03 -05:00
2022-05-04 08:35:47 -04:00
2022-10-05 13:12:43 -07:00
2022-12-12 11:25:19 -08:00
2022-07-25 14:43:38 +02:00
2022-07-25 14:43:38 +02:00
2022-07-27 12:31:20 +02:00
2022-07-29 10:50:27 +08:00
2016-04-08 19:57:40 +00:00
2022-12-12 11:25:19 -08:00
2022-02-10 16:06:03 -05:00
2015-06-16 00:08:24 +00:00
2015-06-16 00:08:24 +00:00
2022-12-12 11:25:19 -08: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
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2022-12-15 15:32:46 +08:00
2018-05-24 20:03:51 +00:00
2022-04-19 14:48:42 -07:00
2022-08-09 12:17:41 +02:00
2022-08-09 12:17:41 +02:00
2015-06-16 00:08:24 +00:00
2016-04-29 19:04:05 +00:00
2023-01-20 10:18:18 -06:00
2023-02-16 14:05:16 +08:00
2015-09-19 05:32:57 +00:00
2022-08-19 09:13:22 +01:00
2020-04-17 22:49:58 -07:00
2022-10-08 16:44:51 +08:00
2022-02-10 16:06:03 -05:00
2022-12-12 11:25:19 -08:00
2022-12-12 11:25:19 -08:00
2015-06-23 18:20:18 +00:00
2022-12-12 11:25:19 -08:00
2022-02-10 16:06:03 -05:00
2015-09-02 20:16:09 +00:00
2022-02-10 16:06:03 -05:00
2022-06-29 12:48:48 +08:00
2021-12-22 11:09:41 +08:00
2021-12-23 21:14:13 +08: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-04-20 11:30:12 -04:00
2022-12-12 11:25:19 -08:00
2020-04-28 18:41:14 -07:00
2023-02-07 14:09:46 +08:00
2023-02-07 14:09:46 +08:00
2022-07-27 11:10:54 +02:00
2019-04-19 23:04:05 +00:00
2018-06-28 01:57:04 +00:00
2015-06-16 00:08:24 +00:00
2022-02-10 16:06:03 -05:00
2022-02-10 16:06:03 -05:00
2022-12-12 11:25:19 -08:00
2020-01-27 22:08:37 -05:00
2018-09-05 22:14:46 +00:00
2022-07-27 11:10:54 +02:00
2018-01-06 03:20:59 +00:00
2018-09-04 22:53:19 +00:00
2023-01-12 10:24:50 +01:00
2021-12-22 11:50:47 +08:00
2022-02-10 16:06:03 -05:00
2022-02-10 16:06:03 -05:00
2022-12-12 09:58:38 -08:00
2022-11-03 08:29:59 -04:00
2022-07-22 17:03:38 +08:00
2022-12-12 11:25:19 -08:00
2023-01-09 10:40:23 +08:00
2016-03-30 22:18:29 +00:00
2016-03-30 20:16:03 +00:00
2018-07-04 02:25:38 +00:00
2016-05-24 12:10:36 +00:00
2016-05-17 22:44:15 +00:00
2016-07-22 21:08:24 +00:00
2016-08-18 06:15:19 +00:00
2017-01-12 09:16:26 +00:00
2023-01-03 13:37:57 +08:00
2022-08-12 11:50:35 +08:00
2022-12-07 10:52:02 +08:00
2023-01-18 14:15:27 +08:00
2023-02-14 17:15:33 +08:00
2023-01-16 15:08:16 +08:00
2023-02-03 10:27:02 +08:00
2023-02-16 17:14:16 +08:00
2022-02-10 16:06:03 -05:00
2022-02-10 16:06:03 -05:00
2022-07-26 23:58:07 +08:00
2017-06-02 01:55:39 +00:00
2019-09-18 19:09:41 +00:00
2023-02-10 16:14:37 +08:00
2015-11-05 15:24:47 +00:00
2022-06-29 12:48:48 +08:00
2022-06-29 12:48:48 +08:00
2022-08-21 10:19:46 +01:00
2022-06-29 12:48:48 +08:00
2022-06-29 12:48:48 +08:00
2022-06-29 12:48:48 +08:00
2022-06-29 12:48:48 +08:00
2015-06-16 00:08:24 +00:00
2022-12-12 11:25:19 -08:00
2022-02-10 16:06:03 -05:00
2022-07-28 11:32:47 +08:00
2022-07-08 11:10:51 +08:00
2022-07-08 11:10:51 +08:00
2022-07-08 11:10:51 +08:00
2022-05-12 07:29:37 -07:00
2022-02-10 16:06:03 -05:00
2015-06-16 00:08:24 +00:00
2022-07-21 17:42:04 -07:00
2022-07-21 17:42:04 -07:00
2022-11-03 08:29:59 -04:00
2022-11-03 08:29:59 -04:00
2022-11-03 08:29:59 -04:00
2022-11-03 08:29:59 -04:00
2022-11-03 08:29:59 -04:00
2022-11-03 08:29:59 -04:00
2022-07-21 17:42:04 -07:00
2022-03-31 11:21:58 +08:00
2016-01-08 22:36:45 +00:00
2020-11-18 11:55:29 -08:00
2018-01-05 02:33:18 +00:00
2016-09-13 01:20:40 +00:00
2022-02-10 16:06:03 -05:00
2018-11-05 12:46:02 +00:00
2023-01-31 09:57:23 -05:00
2023-01-31 09:57:23 -05:00
2022-02-10 16:06:03 -05:00
2017-12-22 02:53:30 +00:00
2022-07-21 17:42:04 -07:00
2022-08-05 12:24:40 -07:00
2022-09-02 19:09:15 -07:00
2020-04-28 18:41:14 -07:00
2022-07-21 17:42:04 -07:00
2021-11-24 14:03:49 -05:00
2022-06-29 12:48:48 +08:00
2022-01-11 10:16:26 +08:00
2022-06-29 12:48:48 +08:00
2022-12-14 11:30:12 +08:00
2015-06-16 00:08:24 +00:00
2022-12-12 17:11:46 +01:00
2023-01-31 09:57:23 -05:00
2015-08-12 02:17:52 +00:00
2023-02-01 10:34:35 -08:00
2022-02-10 16:06:03 -05:00
2022-09-04 05:29:32 +00:00
2022-12-12 11:25:19 -08:00
2016-01-12 20:34:32 +00:00
2015-10-13 00:23:25 +00:00
2022-05-04 08:35:47 -04:00
2022-10-12 11:10:08 -07:00
2015-06-16 00:08:24 +00:00
2022-02-10 16:06:03 -05:00