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

    <tr>
        <th>Summary</th>
        <td>
            What is the best way to eliminate loads which have a different GEP chain with its store(s)?
        </td>
    </tr>

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

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

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

<pre>
    Hi, in some cases the load(s) and the store(s) which are pointing to the same addresses may have different GEP chains (such as when loads and stores are from different functions but inlined together), for example in our workload:
> store double 0.000000e+00, ptr %1842, align 8
```
%1842 = getelementptr double, ptr %113, i64 %1764
%1764 = add i64 %1763, -26, !dbg !1287 
%1763 = add i64 %209, %714, !dbg !1287 
%209 = add i64 %159, %182 
%159 = sub i64 %158, %61 
%158 = mul nsw i64 %indvars.iv.next3421.i, %59 
%59 = mul nsw i64 %58, %2 
%61 = add i64 %59, %58
%182 = mul nsw i64 %indvars.iv3415.i, %58
%714 = mul nuw nsw i64 %indvars.iv.i, 25
```
> load double, ptr %2176, align 8
```
%2176 = getelementptr double, ptr %113, i64 %2175
%2175 = add i64 %2171, %163
%2171 = add nsw i64 %2170, %182
%2170 = add nuw nsw i64 %714, 5,
%714 = mul nuw nsw i64 %indvars.iv.i, 25
%182 = mul nsw i64 %indvars.iv3415.i, %58
%163 = add i64 %158, %.neg3401.i
%158 = mul nsw i64 %indvars.iv.next3421.i, %59
%59 = mul nsw i64 %58, %2
%.neg3401.i = sub i64 -31, %61
%61 = add i64 %59, %58
```
Their SCEV expressions are identical, so we know they are pointing to the same address. What would be the best practice to find the *store* base on the *load*? Is that a good idea to use SCEV in CSE passes like EarlyCSE? Thanks:))



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVU1vqzgX_jXO5qgI2xiSBYvcNnnf2Y3Uq5m1gQN4auwIm9L--5ENCf2Ye-dOo0gI-3nON8-RzqnOIJZEfCPiYScn39uxnF-0Heyuss1r-X9F2D0oA84OCLV06MD3CNrKhrC9I-wA0jTxzHk74vVw7lXdgxwRLlYZr0wH3i4wOSDIphnRBWuDfIVePiM0qm1xROPhf6ffoe6lMg6CuSkYcjD3aKJfFz1Gby56aEc7vKG3k6m9ssZBNXlQRiuDDXjboe9xJOwQUmrtCPgih4vGkJ6dRpjt-BTz4keSHgk_LT6gsVOlEdIkjT8k7FuaBhsXPwJhgu4zFl6lVp2BfeDm6fpPjysACH-ADj1qHND4QF3svjVEeax2nsW3Is9WfhFO-EOo2pvbCL5jeXgQRpuqCw_K9gXcePwjj6WHBS8Kmv2QydLDJ4fiSqR7dnUgFpibqg22X2E5vaH2ETVMGoybr0hlmmc5ukQ9JwZfPM8YTdTKDXYjd3XwgXrzcQ0k-Hof7i1asb82gf08Cp5RsQWwsgqabaxp_kH8kcXEx87zU5zXz41mtMh_OjEB8N8nhtFC3PjiU-dpQa8dzPkNt1XuTW6MFunW7Rs23bDva7HOkiDs_ot1-2qD6OcR30YwMdjxLA1z9fVJ_LVBXFCbw3ffxR2nt4_iFwf2zTx871GN8Hh_-gPw5RJkM4pbUD7VoPGqljpwnYUZ4cnYOejs67-KbwJ_9tLDbCfdQIXxvkLn4TLK2qsaA6lVq7oTdlwF_giVdAjWXM-XZXAk_Ay_hfUgPUjorG1CfDJYmRwuCSgD948nuMio_Vo9IZzkqF_vH0-B_r2X5skFAQ4qHUsf_7um5M2BH-QOS1pwJnKRHviuL_MUkWN7YG1zaGQu2ormmeA1R5FnMpU7VbKUZZQGTUszwZNC1m0tWlZkjSgyKUmW4iCVTrR-HhI7djvl3IQlpUXO-E7LCrWLG5IxgzPEW8JYWJhjGUh31dQ5kqVaOe82M155jWUssXJbcWf5GiqCWg3KSI_rSlv2ZVyE8p9WIczK96C8e7dmCT_vplGXvfeXpWxnws6d8v1UJbUdCDuHeNbH3WW0f2HtCTvHLBxh5zXN55L9HQAA___WhEqX">