<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63385>63385</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Incorrect cached computation in ConstantMultipleCache for (-1 * (zext i16 {0,+,6}<nuw><%for.body> to i64))<nuw><nsw> : Computed -6 but cache contains -2!
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mikaelholmen
</td>
</tr>
</table>
<pre>
llvm commit: 6826d3c513b
Reproduce with:
```opt -verify-scev -passes="loop(loop-unroll-full),loop-mssa(licm<allowspeculation>,indvars,loop-rotate)" bbi-83618.ll -o /dev/null```
Result:
```
Incorrect cached computation in ConstantMultipleCache for (-1 * (zext i16 {0,+,6}<nuw><%for.body> to i64))<nuw><nsw> : Computed -6 but cache contains -2!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: build-all/bin/opt -verify-scev -passes=loop(loop-unroll-full),loop-mssa(licm<allowspeculation>,indvars,loop-rotate) bbi-83618.ll -o /dev/null
#0 0x0000559131df4b57 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x2dcdb57)
#1 0x0000559131df287e llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x2dcb87e)
#2 0x0000559131df51ef SignalHandler(int) Signals.cpp:0:0
#3 0x00007f99968be630 __restore_rt sigaction.c:0:0
#4 0x00007f9994005387 raise (/lib64/libc.so.6+0x36387)
#5 0x00007f9994006a78 abort (/lib64/libc.so.6+0x37a78)
#6 0x0000559130fd59e6 llvm::ScalarEvolution::verify() const (build-all/bin/opt+0x1fae9e6)
#7 0x0000559132928606 llvm::FunctionToLoopPassAdaptor::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x3901606)
#8 0x000055913200fe9d llvm::detail::PassModel<llvm::Function, llvm::FunctionToLoopPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x2fe8e9d)
#9 0x0000559131803f34 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x27dcf34)
#10 0x000055912fcb358d 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>&) (build-all/bin/opt+0xc8c58d)
#11 0x000055913180831e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x27e131e)
#12 0x000055912fcb332d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0xc8c32d)
#13 0x00005591318030c4 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x27dc0c4)
#14 0x000055912f8ec8ee llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (build-all/bin/opt+0x8c58ee)
#15 0x000055912f8fafbe main (build-all/bin/opt+0x8d3fbe)
#16 0x00007f9993ff1555 __libc_start_main (/lib64/libc.so.6+0x22555)
#17 0x000055912f8e7040 _start (build-all/bin/opt+0x8c0040)
Abort (core dumped)
```
[bbi-83618.ll.gz](https://github.com/llvm/llvm-project/files/11786331/bbi-83618.ll.gz)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWF1v2zoS_TX0C2GDIi2JevCD48TYYhts0BT7alDkyOaWIgWSSpr76xeU7dRynI_evcXuFnAhlRzOzDlzOCElQtBbC7BA-RXKryeijzvnF63-JsDsnGnBTmqnnhbGPLRYurbVEbElLjgtFJN5xmpErhFZfoHOO9VLwI867hBb7odRQfY_10U8fQCvm6dpkPCAp50IAQJi14hS41yHKE-PaW-9M2ba9MYgWiG6GkbbEESy0LJFbCWMcY-hA9kbEbWziN0gutJWPQgfjku8iyLC4IPiutZTzoqMz4zBU4cRXSt4QHRtU5xjlkcsoTfxJYb9fz9Z6bwHGbEUcgcqsdL1ccgDa4tXzoYobLztTdSdgVWywo3zGFE-zTCiy_T2B3yPWGcFRuUVQXSF6BWiqwKV14itbP-YILEVonnj_CyVALEbHB3WxXyAVJ2a2ZBecKrMasgGFJ4WuO4PSWLpbBTaBjyliGZ7IHefb5b3Nzj0dasjFrjut9hD53xMcXYxdiFxQNeIrrc67vp6Jl2L6Dpp4fCYdt79C2REdK1D6CEgusbCKqytNL0CHFNwL8IO10J-i15ImO3D30chv2HVt90z02SGSHXn3daLFgu_7VuwMSWB614bNRVJEutaW0TXbwjq16rpHSkNQDCijGDynRBC8rzKWKaaeZ2XeKCOLRFbhqewf7nz2saBjK-JnZTWs5EXjxsXogfRIlogusLaxpQDovwiJYheke9USVXnZcL7nE12lg3lJVzK5ktv7_XWCvM3YZWBhJ9_JGDNSxgFpGcB8wwaPHKNKD-g2Q-HmeySFsjw79kROzgqm6qqCl5DwQjebDyE6DxsfMRBb4VMhZvJl8vnp8vnhOSMl9gLHQAP0NZG12lLpaecBTcrBkisYHzMYH7mqBAlx6JO2-VNR6Uo-chRccoMaVReQXFSinspjPA3D870ezGmwb3QD7WQqcO8XZGsEVBBMYpbnsalFeUFOY277u1A4lf32bnuToSwVKKLzh-k2NuRNI_mB13-mFhaYZ6CDrfCii14xFYXFqUdVryrK1aRrCBjFHyEgpAGKnUSXUEU2hx2lgjh1ikwl3MYZf06-pHZnYcA_gHUHmXqd38Ge_r9t0ilDXCo1IjUarRZOWENm5-iTkS-Ffn_j4RSyYbNn0lIHfK0YdNG1iznf4Wyfhl5v5swJZc5V6OSZGe65Cw7_at161Rv4Ks7Bnq3ae0X_BSIw5KPygoylsEIAz2XFaM_J6tj0qsPIv-rdPED-Wuq-NV0Si4ZHSuCnXcqIj_SqS5x-L-NPXUoIscdaj6SEgfJ4XQ7-H7QwZ3uwGg7PkneR6_t9gs0l3T0AsVX4bcQb4XcDX6Wl2Y_69oL__TJNu5T25mXVs6Zf_Sx6-NamwtO_qPpV-AsvRdPafSU9oET02-1fdE1XRc30bnD9tvH-7u26i2rf6ajmAZ_tKvTzIef71Q9tUAY9498XPRGNDXgVmj7jifFmnrsqTg9wbKmyfI8x5tNOq9uQhQ-bo5uXz3NUprn-chpeabJkswJ3rt7Dyohc_Lsa3k8SUvnYbgWwsnOH1_BUX51egmbbf9A-TWi_KfvrI02w5U1y0peMJalJM8cH1OYqAVTFavEBBZZwcusyOeET3YLVvE5hwag5hJqaJRoiCpy0bAsJ5yXE72ghDJSZBWpCKN81mScNY3IIZsTldcVmhNohTazlN3M-e1kuEsvCsZ4PjGiBhOGDzSUWnjEwySiFOXXEz98mJnW_TagOTE6xPDDS9TRwOI3-F4x6b1Z_PkPEgOP_w4AAP__h9-2bA">