<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/57138>57138</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            llvm-reduce crash due to ReduceBasicBlocks.cpp
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm-reduce
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          regehr
      </td>
    </tr>
</table>

<pre>
    here's an input that crashes llvm-reduce without `--abort-in-invalid-reduction` cc @arsenm @aeubanks 

repro like this:
```
llvm-reduce --test=/usr/bin/true reduced.ll --delta-passes=basic-blocks
```

```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @KeccakP1600_ExtractAndAddBytes(ptr nocapture %0, ptr %1) {
  br i1 false, label %3, label %28

3:                                                ; preds = %2
  br i1 false, label %4, label %5

4:                                                ; preds = %3
  br label %23

5:                                                ; preds = %3
  br label %6

6:                                                ; preds = %6, %5
  %7 = phi i64 [ 0, %5 ], [ %11, %6 ]
  %8 = getelementptr inbounds i64, ptr %0, i64 %7
  %9 = load i64, ptr %8, align 8
  %10 = getelementptr inbounds i64, ptr %1, i64 %7
  store i64 0, ptr %10, align 8
  %11 = add nuw nsw i64 %7, 1
  %12 = icmp eq i64 %11, 0
  br i1 %12, label %13, label %6

13:                                               ; preds = %6
  br i1 false, label %14, label %21

14:                                               ; preds = %13
  br i1 false, label %15, label %16

15:                                               ; preds = %14
  br label %22

16:                                               ; preds = %14
  br i1 false, label %17, label %21

17:                                               ; preds = %16
  br i1 false, label %18, label %21

18:                                               ; preds = %17
  br i1 false, label %19, label %21

19:                                               ; preds = %18
  br i1 false, label %20, label %21

20:                                               ; preds = %19
  br label %21

21:                                               ; preds = %20, %19, %18, %17, %16, %13
  switch i32 0, label %23 [
    i32 0, label %22
    i32 17, label %22
    i32 12, label %22
    i32 8, label %22
    i32 1, label %22
  ]

22:                                               ; preds = %21, %21, %21, %21, %21, %15
  br label %23

23:                                               ; preds = %22, %21, %4
  br i1 false, label %27, label %24

24:                                               ; preds = %23
  br label %25

25:                                               ; preds = %25, %24
  br i1 false, label %26, label %25

26:                                               ; preds = %25
  br label %27

27:                                               ; preds = %26, %23
  br label %36

28:                                               ; preds = %2
  br i1 true, label %36, label %29

29:                                               ; preds = %28
  br label %30

30:                                               ; preds = %._crit_edge, %29
  switch i32 0, label %32 [
    i32 0, label %31
    i32 17, label %31
    i32 12, label %31
    i32 8, label %31
    i32 2, label %31
    i32 1, label %31
  ]

31:                                               ; preds = %30, %30, %30, %30, %30, %30
  br label %32

32:                                               ; preds = %31, %30
  br label %33

33:                                               ; preds = %33, %32
  br i1 false, label %34, label %33

34:                                               ; preds = %33
  br i1 false, label %35, label %._crit_edge

._crit_edge:                                      ; preds = %34
  br label %30

35:                                               ; preds = %34
  br label %36

36:                                               ; preds = %35, %28, %27
  ret void
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1WN1y8yYQfRr5hpFHgPXjC1_EdXPTm077ABkksEUjIxVQft6-gC1bKLKUL6NmPATYhXOA3WVFXtPPXckkC1CqABGAi6bVQJdEg0ISVTIFqurtHEpG24KBd67L2igESRSGJK-lDrkwvzdScXpR0rwWRgyKAgSbiEjFxNnVWJsT8apAEB2C6OlSStbIGlT8lRlMrgJ87TcTXH-u2acQhpopHeBDgJ5bJU2Zc2FKLVsGLjp0XVVGj7JKk7AhSjEz8yEnihdhXtXFqxpFGe3URJ6YBpRoUpFPt3Z8AAFCLDwbuixsUBqZCkausE3oN20t2bgi5F3lmNlBEGWhyGwl6cYY2d-m2wB4-FrypmId9keWvBjFVryK-l2EFRftR3gS7W3UpaTsyAUDbzWn9gT-YEVBXv-ESRS9_P6hJSn0k6BPlO4_zZYGKGu0BKIuSKNbabBQHAXoN2B7TR0GaAuCdH-ZGoBcAg7BkVSKWa2K5KyyethrmZX0CGGzQPCLfwHeg8acq7ouPkZzDDZeK-4T2CxBAPcI3BeK-zjx_4aT9GGSJWASu133jQK2njphU3JgLBYE8R5EnZZpHVzddFqzgFdB4gT3KTI3hbFdVrEzE9qaERd53QoDbf3gblpubgdkkHtTbN0UVU3oYEBm6ybknATIevow-j4mHMNUujaGb3s9y48ewEEHRygFon0HQr3fJzQDYF8VOVVenBvA_u3ULnsX-fbstD0Lhr5LeRYAf-BSIxYw41HQdykEPQo_cKovFCCe5RD7TX8bfuBwXzlsRh3bC6nwBy43DTS-2HRqw9MlOMwfejbFIVuCQzrLYTvFYbsEh2yOA4omOKBoCQ7bUcPzgeACQKiL4pd9vR3yzeIuhnGt3FxSmbSvKAHHCAz2AttroFMDYxrIlw4NeyhGk-JsevAD6e1euu4kWmInu2vvOxUYj56vlzGgJQI5QkPo2UiDBgey8UgtEdrReL7k5WVoifiN4m7186tO_KZPZokYj8bPPPWAlgjkqPPX8X3G3j2JlgjbgwTcfnj5XwCDzd16DJYI2igbXar3HYeXiMzrl0Jy_cLoiXW7fIvVD6Oi6ZiJihgOIlc6LUaT4mxSOj0WPpAOYiZe4vbB3e3zzcrYEXvJGF4ikmM4jehFabxElMa4Q5z9lMV-4j0gs0R0xrOJN_YT775L9Mj0u7_L6iuZ0Qx84NdLXBUPgLxYiZe4BvDtTuoSLXRLeiXT7m3mCpp2Htc9QK3YDiZJtIk2MI5WdIfpFm_JSnNdsV3_Scy91AHaMqBr8Jfr29vHrr1761oXTbNqZbUrtW7cExt6Nr8T12Wbr4v6bBp2tuu_sJH1P6zQpsmVau3D0HOcQpytyh2jSZwXJqEh8RHTI9rQlGRHmtECQ1SkycptpdrZ8IdQj6J9mIoPK75DEUJRBjE0uQrarllqUpQtNROmhOEsCjYROxNere3YdS1PK3lZad6elBFWXGl1FxKlzEc5Yw7QzE9aXdZyJ9mJlXLl6O8c9_8Ae1_eew">