bors
21b4a9cfdc
Auto merge of #92889 - tmiasko:unbounded-recursion, r=ecstatic-morse
...
Ignore unwinding edges when checking for unconditional recursion
The unconditional recursion lint determines if all execution paths
eventually lead to a self-recursive call.
The implementation always follows unwinding edges which limits its
practical utility. For example, it would not lint function `f` because a
call to `g` might unwind. It also wouldn't lint function `h` because an
overflow check preceding the self-recursive call might unwind:
```rust
pub fn f() {
g();
f();
}
pub fn g() { /* ... */ }
pub fn h(a: usize) {
h(a + 1);
}
```
To avoid the issue, assume that terminators that might continue
execution along non-unwinding edges do so.
Fixes #78474 .
2022-01-27 06:21:53 +00:00
..
2022-01-12 18:51:32 +01:00
2021-11-14 14:38:42 -03:00
2021-11-20 19:19:31 +00:00
2021-10-15 02:36:58 -05:00
2021-10-03 16:16:28 +09:00
2021-12-09 22:03:52 +00:00
2022-01-21 17:38:21 +01:00
2022-01-17 20:04:37 +00:00
2021-11-20 19:19:31 +00:00
2021-11-20 18:54:31 +00:00
2022-01-15 02:25:14 +01:00
2022-01-12 18:51:31 +01:00
2022-01-23 09:16:32 +00:00
2022-01-17 10:38:30 -08:00
2021-12-14 13:32:42 +01:00
2022-01-12 08:28:41 -08:00
2021-11-18 12:09:34 -03:00
2021-12-11 16:02:49 +01:00
2021-12-14 01:19:10 +03:00
2021-08-11 09:46:24 +00:00
2021-10-15 02:36:58 -05:00
2022-01-12 18:51:31 +01:00
2021-11-20 18:54:31 +00:00
2021-08-16 17:47:22 +00:00
2022-01-21 22:03:12 +01:00
2021-12-08 23:18:03 +01:00
2022-01-23 17:05:48 -05:00
2021-12-11 02:32:15 +00:00
2021-10-13 10:53:44 +00:00
2022-01-17 10:38:30 -08:00
2021-11-20 19:19:33 +00:00
2021-11-18 12:09:34 -03:00
2021-12-10 14:34:00 -08:00
2021-11-18 12:09:34 -03:00
2022-01-21 18:22:21 -03:00
2021-11-05 14:49:26 -07:00
2021-12-11 02:32:15 +00:00
2022-01-16 11:44:10 -05:00
2021-08-11 09:46:24 +00:00
2022-01-20 17:10:35 +01:00
2021-08-08 13:59:36 +03:00
2022-01-26 00:48:01 +11:00
2021-12-01 21:59:54 +00:00
2021-12-14 22:38:51 -05:00
2021-09-26 04:07:44 +02:00
2021-07-19 08:43:35 -07:00
2021-08-21 18:30:25 -07:00
2021-09-23 12:16:51 -07:00
2021-11-09 08:21:10 +00:00
2022-01-15 21:02:50 +01:00
2021-11-06 15:35:20 -03:00
2021-12-15 12:41:42 +00:00
2022-01-18 12:23:43 +01:00
2021-10-15 02:36:58 -05:00
2021-08-12 09:52:38 +00:00
2021-10-15 02:36:58 -05:00
2021-12-09 22:03:52 +00:00
2021-11-18 12:09:34 -03:00
2021-12-11 02:32:15 +00:00
2021-08-11 09:46:24 +00:00
2021-07-18 07:55:57 -07:00
2021-12-04 23:13:58 +01:00
2021-09-26 04:07:44 +02:00
2021-12-04 23:13:58 +01:00
2021-11-22 02:15:25 +00:00
2021-11-23 11:05:07 -08:00
2021-11-06 15:35:20 -03:00
2021-12-01 19:59:15 +00:00
2022-01-18 12:23:43 +01:00
2021-10-15 15:30:43 +00:00
2021-10-13 10:53:44 +00:00
2022-01-18 19:38:17 -03:00
2021-10-15 02:36:58 -05:00
2021-12-11 21:57:19 +00:00
2021-12-14 00:04:15 +11:00
2022-01-18 22:00:42 +01:00
2021-12-09 09:09:39 -08:00
2022-01-21 22:03:12 +01:00
2021-11-21 08:15:21 -06:00
2021-11-18 12:09:34 -03:00
2022-01-05 15:22:22 -08:00
2021-11-25 18:04:33 +00:00
2021-10-22 10:50:07 -07:00
2022-01-23 02:20:50 +00:00
2022-01-23 20:13:06 +01:00
2021-12-10 19:21:25 +00:00
2021-12-29 13:02:14 -08:00
2021-09-25 10:00:41 -05:00
2021-11-30 12:05:34 +11:00
2021-12-29 18:53:40 -05:00
2021-12-11 02:32:15 +00:00
2022-01-19 18:00:10 +00:00
2021-12-10 03:08:25 +00:00
2021-12-17 02:33:25 +00:00
2021-12-21 08:33:39 +01:00
2021-12-27 23:34:52 -08:00
2022-01-14 20:34:38 -08:00
2022-01-11 21:13:45 -08:00
2021-10-13 00:00:00 +00:00
2021-12-05 21:38:37 +00:00
2021-08-16 17:47:22 +00:00
2021-10-15 02:36:58 -05:00
2022-01-26 00:48:01 +11:00
2021-09-25 09:03:15 -07:00
2021-12-01 15:56:59 +00:00
2022-01-21 22:03:16 +01:00
2021-12-09 22:03:52 +00:00
2021-10-19 23:00:18 +09:00
2021-09-26 04:07:44 +02:00
2021-08-11 09:46:24 +00:00
2021-11-17 03:52:38 +09:00
2021-11-20 19:19:33 +00:00
2021-12-13 14:02:41 +11:00
2021-11-25 08:11:01 -03:00
2022-01-01 15:53:11 -08:00
2021-10-29 17:13:15 -05:00
2021-11-18 12:09:34 -03:00
2022-01-26 13:46:01 +01:00
2021-12-12 11:20:03 +00:00
2021-10-29 17:13:15 -05:00
2021-12-13 10:24:05 -06:00
2021-09-25 13:04:00 -05:00
2021-10-15 02:36:58 -05:00
2022-01-18 22:00:43 +01:00
2021-09-25 08:11:10 -07:00
2021-11-20 18:54:31 +00:00
2022-01-21 22:03:12 +01:00
2021-09-13 16:31:12 +00:00
2021-12-10 00:40:41 +01:00
2022-01-18 19:38:17 -03:00
2021-11-03 16:43:12 +01:00
2022-01-21 23:13:00 -05:00
2021-12-14 00:04:15 +11:00
2021-11-20 19:19:34 +00:00
2021-11-20 10:47:33 +09:00
2021-11-28 23:45:15 +01:00
2021-12-14 11:32:06 -08:00
2021-09-16 12:12:27 +00:00
2021-08-30 11:51:27 +02:00
2021-12-14 11:32:06 -08:00
2022-01-21 23:52:58 +00:00
2021-08-16 17:47:22 +00:00
2021-12-09 22:03:52 +00:00
2021-12-03 01:00:09 +00:00
2021-12-31 18:42:54 -05:00
2021-09-25 10:00:41 -05:00
2021-08-30 11:00:21 +02:00
2021-11-20 19:19:31 +00:00
2021-12-14 18:05:02 +01:00
2021-12-14 11:32:06 -08:00
2021-11-18 12:09:34 -03:00
2021-12-09 16:48:51 -05:00
2021-12-14 00:04:15 +11:00
2021-07-10 15:43:05 +02:00
2022-01-08 00:57:59 +01:00
2022-01-25 11:11:13 -08:00
2022-01-18 19:38:17 -03:00
2022-01-01 15:53:11 -08:00
2021-09-28 00:00:00 +00:00
2022-01-14 02:59:16 +00:00
2022-01-23 17:05:48 -05:00
2021-11-18 12:09:34 -03:00
2021-08-11 09:46:24 +00:00
2021-10-20 11:09:06 +09:00
2021-12-29 13:02:14 -08:00
2021-11-21 19:30:17 -08:00
2022-01-26 13:46:01 +01:00
2021-10-15 02:36:58 -05:00
2021-12-31 18:42:54 -05:00
2021-12-01 13:50:13 -08:00
2021-08-11 09:46:24 +00:00
2022-01-19 18:00:10 +00:00
2021-12-28 19:43:36 -06:00
2021-11-06 15:35:20 -03:00
2021-10-03 16:16:28 +09:00
2021-12-09 22:03:52 +00:00
2021-09-25 10:00:41 -05:00
2021-11-26 19:27:40 -08:00
2021-12-12 11:20:03 +00:00
2021-10-13 10:53:44 +00:00
2022-01-22 17:45:45 -03:00
2021-10-03 16:16:28 +09:00
2022-01-22 17:45:45 -03:00
2021-12-01 13:50:13 -08:00
2022-01-18 22:00:42 +01:00
2022-01-26 00:48:08 +11:00
2021-12-20 10:39:02 +08:00
2022-01-12 18:51:31 +01:00
2022-01-23 17:05:48 -05:00
2021-11-03 20:00:00 -07:00
2021-11-24 21:57:18 +01:00
2021-10-03 16:16:28 +09:00
2021-07-27 19:50:14 -03:00
2022-01-20 17:10:35 +01:00
2021-12-09 22:03:52 +00:00
2021-09-26 04:07:44 +02:00
2022-01-04 01:45:42 +00:00
2021-08-11 09:46:24 +00:00
2022-01-21 22:03:15 +01:00
2022-01-21 00:28:07 +01:00
2022-01-12 23:41:28 +01:00
2021-11-22 20:06:22 +01:00
2021-11-25 18:04:33 +00:00
2021-11-20 17:02:37 -08:00
2021-11-18 12:09:34 -03:00
2022-01-18 16:38:06 -08:00
2021-12-14 11:32:06 -08:00
2021-12-09 22:03:52 +00:00
2022-01-18 12:23:43 +01:00
2021-12-01 02:05:17 +00:00
2022-01-24 09:07:47 +01:00
2022-01-18 16:38:06 -08:00
2021-12-09 22:03:52 +00:00
2021-09-15 14:03:27 -03:00
2021-12-09 22:03:52 +00:00
2021-08-23 16:57:59 +02:00
2021-10-27 07:46:42 +02:00
2022-01-17 20:07:02 +01:00
2022-01-09 23:31:57 +00:00
2021-11-20 19:19:31 +00:00
2021-11-28 23:45:15 +01:00
2021-11-20 19:19:31 +00:00
2022-01-18 15:22:35 +01:00
2021-12-11 02:32:15 +00:00
2021-11-16 20:40:35 +00:00
2022-01-18 12:23:43 +01:00
2021-11-06 15:35:20 -03:00
2022-01-18 12:23:43 +01:00
2021-08-12 09:52:38 +00:00
2021-11-20 19:19:31 +00:00
2021-11-06 15:35:20 -03:00
2021-09-02 19:08:59 +02:00
2021-12-10 03:08:25 +00:00
2021-10-30 23:44:02 -04:00
2021-09-26 04:07:44 +02:00
2021-12-02 23:27:08 +01:00
2021-09-26 04:07:44 +02:00
2022-01-12 18:51:31 +01:00
2021-12-25 01:33:13 +08:00
2021-10-25 12:23:52 -07:00
2021-11-03 20:00:00 -07:00
2021-11-28 23:45:15 +01:00
2021-12-31 18:42:54 -05:00
2021-08-11 09:46:24 +00:00
2021-11-18 12:09:34 -03:00
2021-12-31 18:42:54 -05:00
2021-11-20 18:54:31 +00:00
2021-08-04 10:48:30 +02:00
2021-08-16 17:47:22 +00:00
2021-09-26 04:07:44 +02:00
2021-12-09 22:03:52 +00:00
2021-09-26 04:07:44 +02:00
2021-09-25 10:00:41 -05:00
2021-12-09 22:03:52 +00:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2021-12-09 22:03:52 +00:00
2021-09-26 04:07:44 +02:00
2021-10-15 02:36:58 -05:00
2021-07-15 18:17:27 +02:00
2021-07-15 18:17:27 +02:00
2021-08-11 09:46:24 +00:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2022-01-15 21:02:50 +01:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2021-12-12 21:11:15 +00:00
2021-10-05 23:34:13 +00:00
2021-09-16 12:12:27 +00:00
2021-08-04 10:48:30 +02:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2021-10-15 02:36:58 -05:00
2021-10-15 02:36:58 -05:00
2021-07-21 13:31:47 +01:00
2021-08-11 09:46:24 +00:00
2021-10-03 16:16:28 +09:00
2021-11-03 20:00:00 -07:00
2021-08-11 09:46:24 +00:00
2021-08-12 09:52:38 +00:00
2021-11-25 18:04:33 +00:00
2021-11-25 18:04:33 +00:00
2021-09-25 08:11:10 -07:00
2021-12-02 16:12:25 -08:00
2021-07-30 09:26:31 -07:00
2021-07-30 09:26:31 -07:00
2021-09-26 04:07:44 +02:00
2021-12-31 21:13:07 -08:00
2021-09-26 04:07:44 +02:00
2021-09-09 19:49:07 +02:00
2021-09-26 04:07:44 +02:00
2021-09-16 12:12:27 +00:00
2021-09-25 08:11:10 -07:00
2021-10-25 12:23:52 -07:00
2021-09-16 12:12:27 +00:00
2021-10-25 12:23:52 -07:00
2021-09-16 12:12:27 +00:00
2021-12-17 20:14:30 +08:00
2021-08-16 17:47:22 +00:00
2021-08-16 17:35:49 +02:00
2021-08-16 17:35:49 +02:00
2021-10-15 02:36:58 -05:00
2021-11-20 19:19:31 +00:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2022-01-11 21:13:45 -08:00
2021-09-26 04:07:44 +02:00
2022-01-11 21:13:45 -08:00
2021-08-11 09:46:24 +00:00
2021-11-29 09:12:01 +01:00
2021-09-26 04:07:44 +02:00
2021-11-25 18:04:33 +00:00
2021-08-11 09:46:24 +00:00
2021-08-11 09:46:24 +00:00
2021-09-09 14:24:33 +00:00
2021-09-16 12:12:27 +00:00
2021-08-12 09:52:38 +00:00
2021-08-11 09:46:24 +00:00
2021-08-27 12:43:07 +02:00
2021-08-27 12:43:07 +02:00
2021-09-13 16:31:12 +00:00
2021-08-18 10:25:15 +00:00
2021-11-26 14:22:45 +00:00
2021-11-26 14:22:45 +00:00
2021-11-26 14:22:45 +00:00
2021-10-18 16:28:09 -07:00
2021-12-12 11:20:03 +00:00
2021-08-11 09:46:24 +00:00
2021-12-14 11:32:06 -08:00
2021-11-15 12:37:01 +09:00
2021-11-15 12:37:01 +09:00
2021-08-11 09:46:24 +00:00
2021-08-12 09:52:38 +00:00
2022-01-11 21:13:45 -08:00
2021-07-24 17:33:43 -04:00
2022-01-21 00:28:07 +01:00
2021-08-02 23:03:16 -04:00
2021-08-16 17:47:22 +00:00
2021-08-03 20:29:30 +02:00
2021-09-26 04:07:44 +02:00
2021-11-20 19:19:31 +00:00
2021-09-26 04:07:44 +02:00
2021-10-19 02:33:38 +09:00
2021-09-06 13:18:05 +02:00
2021-09-25 10:00:41 -05:00
2021-12-29 13:02:14 -08:00
2021-12-04 23:13:58 +01:00
2021-12-04 23:13:58 +01:00
2021-09-26 04:07:44 +02:00
2021-09-26 04:07:44 +02:00
2021-12-09 22:03:52 +00:00
2021-10-29 17:13:15 -05:00
2021-10-10 02:19:30 -04:00
2021-12-14 22:38:51 -05:00
2021-08-12 09:52:38 +00:00
2021-08-04 10:48:30 +02:00
2021-08-04 10:48:30 +02:00