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

    <tr>
        <th>Summary</th>
        <td>
            UndefinedBehaviorSanitizer: undefined-behavior ../lib/Analysis/LoopCacheAnalysis.cpp:711:30
        </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: f9563967cad

Reproduce with: ```opt -passes=loop-interchange bbi-72190.ll -o /dev/null```
Note: opt needs to be compiled with UBsan!
Result:
```
../lib/Analysis/LoopCacheAnalysis.cpp:711:30: runtime error: signed integer overflow: 100 * 1000000000000000000 cannot be represented in type 'long'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../lib/Analysis/LoopCacheAnalysis.cpp:711:30 in 
```
It's the multiplication in this loop in LoopCacheAnalysis.cpp that overflows:
```
  CacheCostTy LoopCost = 0;
  for (const ReferenceGroupTy &RG : RefGroups) {
    CacheCostTy RefGroupCost = computeRefGroupCacheCost(RG, L);
    LoopCost += RefGroupCost * TripCountsProduct;
  }
```
[bbi-72190.ll.gz](https://github.com/llvm/llvm-project/files/9308901/bbi-72190.ll.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VMFuozAQ_RpzsYIMDhAOHJJGrVZqV6u0PezRwADedWxkm1Tp1--YNNm06h52D4uQMR7Pe29mPK5Ne6yUOuxpY_Z76Qlf067Mcl7mRSNawraErU_jDkZr2qkB-iL9EDaSnJ1eM3q6GIVz4AjfKmPGhdQebDMI3QOta7ko0qRksVJ0YShJb1s44KgnpS4gJ5avxkPADpAaoHXUG1pDkDdKBe1MTp83TmiSJmdlblJB-pvc94hxjExK1jiutVBHJx1O71HkjWgGOK_FzTgiRJEkOHIWNNhJe7kHCtYaGxac7DVKCLH1YKk5gO2UeQmmhDGMa_5-fGgjtDY-RGExh-AA_QMK9ccR0KtQRvf4Oel9fH54WO--B9Bn3UInkXIDgzhIYx-Fll6-wqxmOlsX9ZuZ_lusQcqnqfviURVWYAC6xwzLUclGeGn0LH6QjoZah59PKXCL8JcsuT8ViNLZ88Y4_3Q8IeGU4kmiWIbNeVOH8ZF01RiNxh10YEE3cGfNNKIbSfPdHQ1pQdO8iJGXlBQX__c0510XqnDAJg-X9fNepNzdkfSG3iPelRx6pTTdBIT3kHgWnqzEHzxE7tvcOf7KnRTbT5NBss11u8T9K8m2qGHwfpwzmN7i22MTTHWMmkO9sX3fPgts0R-AROlth90Sil9ytipZgrOPuBjOTBlBleQ5S1O-5FnUVrwteSkiL72C6j8dwWiyqvrrGKVz0xxkVrBVEQ1Vvsw45wU0BW8KVuSMlUmX11kO5ZIXXR0pUYNyFWaZpKmGFzpD4ByzHMkqxSywVZIkPGF8GQvO6xVbpss865ouy8iSwV5IFQcdsbF9ZOfLc1FPvUOjks6730a8EMOFATMd4ovJD8ZWe_lTgBqM2oOOZv5q1v8LPEW1GQ">