<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">