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

    <tr>
        <th>Summary</th>
        <td>
            [CorrelatedValuePropagation] Assertion `RHS.U.VAL != 0 && "Divide by zero?"' failed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Please note: this issue might be a duplicate of https://github.com/llvm/llvm-project/issues/55390

This bug was found by Azul FuzzGen IR test generator.

https://godbolt.org/z/6zWxzan3b

Run opt with -passes=correlated-propagation:

```
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "gen_1284_correlated-propagation"
target triple = "x86_64-unknown-linux-gnu"

define void @function_0(i1 %val_i1_6) {
entry_1:
  %val_i1_31 = sdiv exact i1 %val_i1_6, undef
  %val_i64_35 = select i1 %val_i1_31, i64 undef, i64 undef
  unreachable
}
```

Stacktrace:
```
opt: /root/llvm-project/llvm/lib/Support/APInt.cpp:1576: llvm::APInt llvm::APInt::udiv(const llvm::APInt&) const: Assertion `RHS.U.VAL != 0 && "Divide by zero?"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=correlated-propagation <source>
 #0 0x000055b7aaf7fcaf PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055b7aaf7d6dc SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fbeecb533c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #3 0x00007fbeec62003b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4303b)
 #4 0x00007fbeec5ff859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007fbeec5ff729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007fbeec611006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
 #7 0x000055b7aae9874f llvm::APInt::udiv(llvm::APInt const&) const (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x349874f)
 #8 0x000055b7aae98b30 llvm::APInt::sdiv(llvm::APInt const&) const (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3498b30)
 #9 0x000055b7aa5b1e9d llvm::ConstantRange::sdiv(llvm::ConstantRange const&) const (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2bb1e9d)
#10 0x000055b7aa5b8473 llvm::ConstantRange::binaryOp(llvm::Instruction::BinaryOps, llvm::ConstantRange const&) const (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2bb8473)
#11 0x000055b7a9da7ba0 std::_Function_handler<llvm::ConstantRange (llvm::ConstantRange const&, llvm::ConstantRange const&), (anonymous namespace)::LazyValueInfoImpl::solveBlockValueBinaryOp(llvm::BinaryOperator*, llvm::BasicBlock*)::'lambda0'(llvm::ConstantRange const&, llvm::ConstantRange const&)>::_M_invoke(std::_Any_data const&, llvm::ConstantRange const&, llvm::ConstantRange const&) LazyValueInfo.cpp:0:0
#12 0x000055b7a9db5c2a (anonymous namespace)::LazyValueInfoImpl::solveBlockValueBinaryOpImpl(llvm::Instruction*, llvm::BasicBlock*, std::function<llvm::ConstantRange (llvm::ConstantRange const&, llvm::ConstantRange const&)>) LazyValueInfo.cpp:0:0
#13 0x000055b7a9db7c51 (anonymous namespace)::LazyValueInfoImpl::solve() LazyValueInfo.cpp:0:0
#14 0x000055b7a9db8bc8 (anonymous namespace)::LazyValueInfoImpl::getValueInBlock(llvm::Value*, llvm::BasicBlock*, llvm::Instruction*) LazyValueInfo.cpp:0:0
#15 0x000055b7a9db8d82 llvm::LazyValueInfo::getConstant(llvm::Value*, llvm::Instruction*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x23b8d82)
#16 0x000055b7aabf40ac runImpl(llvm::Function&, llvm::LazyValueInfo*, llvm::DominatorTree*, llvm::SimplifyQuery const&) CorrelatedValuePropagation.cpp:0:0
#17 0x000055b7aabf5a81 llvm::CorrelatedValuePropagationPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x31f5a81)
#18 0x000055b7ab2a9341 llvm::detail::PassModel<llvm::Function, llvm::CorrelatedValuePropagationPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x38a9341)
#19 0x000055b7aa70315a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2d0315a)
#20 0x000055b7a8a779b1 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x10779b1)
#21 0x000055b7aa702b6a llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2d02b6a)
#22 0x000055b7a8a78311 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x1078311)
#23 0x000055b7aa701494 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2d01494)
#24 0x000055b7a86b2b4a llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xcb2b4a)
#25 0x000055b7a85efdc3 main (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xbefdc3)
#26 0x00007fbeec6010b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#27 0x000055b7a86a626a _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xca626a)
Compiler returned: 139
```



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlWdtS47gW_ZrwokrKtnxJHvIQoDlDTVPDAKfPo0uy5UQHR3LJMk34-tmSnWCZAKFJz0zNUBBiS3tp7bUvlm0q8838umSkZkhIzUZ4gfSK14jXdcPQmi9XGlGGCMqbquQZ0QzJAq20rmqYOwou4HfJ9aqhk0yu4aAsH7b_xpWS_2eZhkMLV8OXKMIzb-Sdj7xF-3lnVqPNEn0nNSpkI3JEN2jx1JToonl6-g8T6PIGaVZrtGSCKaKlmvQBBlxkTmWpJ1It4egJ_uKn_z0-EYFp3-imEUhWGn0H6mhckboGdvg8k0qxEpzMDfeKLInmUhjwnu0o9rrf9hCfoiuZNyW7PEeAgUZBAv5Ukgs9VixvMkCr-RrkKzjLJzSDCa1pLRuVsbTgJRNkzTrrAPxM_WAapq_QCYLWXBO1ZBppxatyZ_w4jdM4HDfiXsjvYlxy0TyOl6LZWbWfOSu4YOhB8hyNQq9oRGawU28UTLkPQNEDKVPup_EomKFRctqaMaHVJvV3iqDeTOxbDnXOHxB7JJlGQ6AzBOFlxdA0DlMctbasZEM77BtDmNQZOwcdUiMUI9mK0JJ1Tibn-4NlP281ye61Ihl7Dq07D3LDlAKkj5JSv8znbZZzCp-3TVVJZU4vri-FnmRVBcZ-lMQGw06FZfDCjg6P268NiAbKZ1LUL2cENgZ2zAAuIFmVCRYCuje_3E7-O_m2-ApcfSOhh-z82OTCOX_gOTP19MSUHOELkwRBggoCGZd3VXT99cvi9guqG7rmGgrd1KJixiGk5ScqHREoZS6ysgEKesVQpki9QnQr_aQXC-gu62oXCw-GZtdKLhVZI8jxZg1pV3fxMJEJLoBBBT6oMXusSqmYMudKIpZjslWnHmsFVQADlIvWEI2lgSAQHzhudNXoSY3Gt-92AEjOs7ZYR_hLl3SjAHvIe_TgJ4poQkiRFBkp0LWCwrde3Rk3b_lSkPIXEKM0LKem4kbBwkS0Haq7fPHs3w7bH2DncZ6hIRg32fEOUNABJQVlLKMRxpmH0lRBRwXhUggzAO1yuWsfvbZhBiq9ggLLJ7WcQIM49R79EFBg6edlsLNMHHgepkgRDheW9_Ezgxxb5BCDoYMcOshRUUyjGSJUHsS8hxwEYOggR0PkxPS6j2GCiYMZuzr4vufFH8PEIZg4mImTC2w2TcLizT4y7Dlt7-j1kY7RZ4qp42rJOGynQ7YUCmUv2_ovYAtkHLYzh21EfTbLe2zPzPpE6BtYgL3C2pnz89gH1JLbsTdNwhuwn4YJfps9YBK1-a1yPLiEaarJtpsdvDjtZtXmcvtXeGoccTx1-uEsJwklHqp13hJLL7YbmFXXHPHZa7QPit1BXptpgEaEFJu1bGpkdnF1ZfYVMGhtv5KnzTdSNuxSFPISNoFdDsnygZ2WMru3g6f7grI92e557TWjz-qU1DyzEO3lpD0Ll_eSrGlOPLPLPJ6ncNlrhb5KuXiQ9-Dh9Fn9hdikOdHkg7CHpZYj4ctrnEmOwE0OGmUBOW5k7ITXSuad0Jw95-l2n_3npCcE7TD98EC_JIv8z-hn-8BBK4eDlac0m_7gynAv1J3tpO_paAfej9Pr4T3ImWjoTD4NepgOwo7zNnwH8H1J6lgNF1uuTsONnUsLLUKPZAisX1TCtvW-SEzX36Ez53INtQWd7U6xl67etjfMm98bpjZOOzjb7dAt9vXzLn1_UJKBHxGZ-k71vAZ3DbK1c8DrwzxewDZ8U_P6igiyHFyEdkamKuMjBg_71icneM4ejAZkhsO-0znTcAvYfjduXsmclfvZDlrNm2I5c6_hDoOpB5a3orD6x6TaXnj-5jGYWomdGLg7y8SD_kD6-hjd3-L4D5YryK0afbkCZys7JUkyo8dI2Z8m87832X3PBseJnj9I9oDG_WRvH5DeyS0nE5VFTiqzsd3rcWvwIX87k5-Qq8YZx9tgkKtTc3_ykVzdund2oEbHSrZnjV5Ltb-P8JBmRldHeDxIMz-chQcU-z65_ykyQX4aFRyZnF31NKYBDfvVCDhGqWtesZIL5jh2qxUXy5v2Qfu7_t7ZVxBXJFtZnMW-0a-cKriH2m3WX8ySsvzNPoy94OUekE8Nv-LOQimyMWf7AXqeO2zve6dbCctmycWL-RCbVAOx9qil9ysX-VuzvjFlXhCp7TxqRt79f7Q0ymySOFnk3M5MI1bkGUZrwsWx1qQW0llz8PjU8z2KUZqaJ6Qp3CYpnfYIHPqQNgQQZ5XErQ8SB3C1avGPpqcF3a161iEhxXSjBDPPA5CPt5z2vaVqP0_yOc5neEZONNclm4-i09d34aPo_Hivh04aVc4_8aY3xhifrObU92chJdQLs8DPY5qzBM_iGM88ykLC8ElJKCtr4xisL9j39t2z4RKdn_B54AWBB53e9_wo9CYkjxIPwAIvI3RWBKPQY5AS5cTwMK99T9TcUqLNsobBkte6fh6EuPGlYFZHg08avZJqLqDy63uyISd28bkl_wdnOaOe">