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

    <tr>
        <th>Summary</th>
        <td>
            llvm-reduce's ReduceOperandsToArgs transformation should try to replace load metadata with argument attribute equivalents
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm-reduce
      </td>
    </tr>

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

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

<pre>
    If we're reducing a case that looks like

```
  define void @foo(ptr %ptr) {
    %load = load i32, ptr %ptr, !range !{i32 0, i32 16}, !noundef !{}
 call void @bar(i32 %load)
    ret void
  }
```

to 
```
  define void @foo(ptr %ptr, i32 %load) {
    call void @bar(i32 %load)
    ret void
 }
```
We're losing the annotations which are potentially relevant to optimization. In these cases, we can substitute the noundef and range attributes for the original metadata 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycU0FvnDwQ_TXmMsoKbFjYA4dNopVy-qRPlXoeYAA3xqb2sKv011f20iRVT61kiWH0xvPmvTGGoCdL1IrqUVTPGW48O9-iD2SXrHPDW_sywo2ErD2Bp2HrtZ0AocdAwDMyGOdeAxj9SiI_x3PM95OfAQYatSW4Oj2AKPPROSGblT0IWa3shTyBqB8TFGLOOBxAqGdIgVZSyCf4jH8CIQuPdqIYiPpRKwl5zMegOIr6eQdZt9mBxh0W8_kZejTmnU2HXsgm1u2dhTztVDxxgqXfe-3nwUR-Zgd_P-2d5Ue3T8P_C7M_iX3drTIuRKN4JkBrHSNrZwPcZt3PgJ5gdUyWNRrzBp4MXdEysAO3sl70j4Q_wIuNVwRKfofI_xZjC2HrAmvemFKPX1qjHeBuDjJ73W1MAUbnE8h5PWmLBhZiHJARsqFVw0mdMKO2qEupikLJOpvbsi6rhqhUOVZ9UzXHgXpUY1UrUlRSn-lW5rLKVdEUlZR5fcirsj41qqvqY0fYVKLMaUFtDsZcl4PzU6ZD2KgtVNHIKjPYkQlp7aWMkIe03CSkjO_AtynXbVMQZW504PBxEWs21P5WVAf4P4X_reTRDuGLO_spAHu0YXR-SXpCmN1mBmD_FqX2tBrs6b7q75rcNEeHpm0hyx8yAn3f9BUNWQ7Z5k07M69BqLOQFyEvk-Z56w69W4S8RGr752H17hv1LOQlzR-EvOwSXFv5MwAA__9xQj6C">