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

    <tr>
        <th>Summary</th>
        <td>
            Assertion `Denominator > 0 && "Denominator cannot be 0!"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            loopoptim,
            new issue,
            crash
      </td>
    </tr>

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

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

<pre>
    Looks like LoopPredication doesn't properly handle the case where all of branch weights are zero.
Run with `opt -loop-predication-skip-profitability-checks=false -passes='require<scalar-evolution>,loop-mssa(loop-predication)'`
```llvm
; ModuleID = 'reduced.bc'
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: nocallback nofree nosync willreturn
declare void @llvm.experimental.guard(i1, ...) #0

define void @foo() {
entry:
  br label %Header

Header: ; preds = %Latch, %entry
  %j2 = phi i64 [ 0, %entry ], [ %j.next, %Latch ]
  call void (i1, ...) @llvm.experimental.guard(i1 false, i32 0) [ "deopt"() ]
  %j.next = add i64 %j2, 1
  br i1 false, label %Latch, label %exit

Latch: ; preds = %Header
 %speculate_trip_count = icmp ult i64 %j2, 0
  br i1 %speculate_trip_count, label %Header, label %common.ret, !prof !0

common.ret: ; preds = %exit, %Latch
  ret void

exit: ; preds = %Header
  br label %common.ret
}

attributes #0 = { nocallback nofree nosync willreturn }

!0 = !{!"branch_weights", i32 0, i32 0}
```

https://godbolt.org/z/PzGY5ox3h
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVV1v6jgQ_TXmZUSUTD6ABx5Kueyu1JWu9m2fKsceiC_GztpOof31KzspTau7HxJS4uHkzJxjz5h7r06GaMvqHUOU3CjNL5ohsnq_4EPorNu-Rxetla_bJ2vPHrQ6EzxZ2393JJXgQVkD0pI3DFcBemd7cvoVOm6kJggdgeCe4NqRI-Bagz1C67gRHVxJnbrggTuCN3I2Y_me5Q9_DAauKnTAmtz2AZba2n7Zf-Rb-rOKAXtUgbdKq_C6FB2Js2fl_si1J1j23HuKa4YrR38NyhErH73gmrslvVg9RCZWfmP4mPgv3nOG66-5GG4YrliTj7XFl_TT-uUyhcod_G7loOm3PbByDymjHATJrBXx4wQL3J0oQHCq1zTh8LZunptqOZizsVez1MoMt-XJDHEfRvJ7isNgRDL7IQTnWfkAxgqudcvFGYw9OiIw1r8aAVeltaMwODN-Lkno6PGLVRJYlWrP6NaTUxcygevsNHAnGa5VwfARsixjuAGGZT6vQtJRmQ-Wo7UM1wm42o0IMsG9snLCA7QONG9JA8P6V-KS3JxvipQPEPVFz_3kS_3Eg-hiKQzrkXRiZFj_wITqOwWqqYDVO8jnUGD1Pq3rXYJnhm5hAiTeBJj4ooOToq_q_90nSOcs4lWJsYDNlBAl2T7EDZzM-Uh2ryYJ4FKOAqKkSFTMbJsnuFt4d-UeoZsKc0tHxM8cndsf174nMWge6DmeyGdhBzOWpcSlh0GHz7Xln2v7B4JPtU0Z5yFhLxdrMkfTfhSxh-Pz0zmboX6mJGmebed7ZY5C2sk5VcL-px2fzuks-0i02s8ZeQhOtUMgn_pj5Fvt_k8zwheqqHuqp4gthAVDHEfj8zQa0zG6H7H3lzvN-zCas3Yh9HE8MDwwPJysbK0OmXUnhoc3hofvb7_8Wdtb2S3ktpSbcsMXtC2aTbXKETfFottW5SaXeX2kplk3x6rh2HLRHuuWik1Vy3ahtphjmW-KqqjKdVFkdV4161xUK6wLQixZldOFK52lDrLutFDeD7RtmnKNi2S1n26eOG9tH9RllMoQDV0hwe8R4bjvpqvJbSPnsh1OPnao8sF_ZAkqaNo-eE8ujUrW5Hsy9qIMD9YBK79BDgwbhk3s1Pl_ghtjA7QUjS5S6hUcudIks8Xg9PaLryp0Q5sJe2F4SHfB-Ii30g8SgeEhafAMD0n13wEAAP__h344pQ">