<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110095>110095</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LLD] [X86_64] Adjust symbol value/size after optimize basic block jump
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ywgrit
</td>
</tr>
</table>
<pre>
After basic block jump optimization on X86_64, symbol size may need to be adjusted.
Is the `def->value <= OldSize` should be `def->value <= NewSize`?
```CPP
static void fixSymbolsAfterShrinking() {
// ...
if (def->value + def->size > NewSize && def->value <= OldSize &&
def->value + def->size <= OldSize) {
LLVM_DEBUG(llvm::dbgs()
<< "Shrinking symbol " << Sym->getName() << " from "
<< def->size << " to " << def->size - inputSec->bytesDropped
<< " bytes\n");
def->size -= inputSec->bytesDropped;
}
//...
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVFtvmzAU_jWHl6MgeswlPPCQhGaalHWVok17qwx2wC1ghE269NdPXJI2q7rOigIcn9v3-fPhxqiikTKBYA1B6vDelrpLTs9Fp6yTaXFKVgcrO8y4UTlmlc6f8LGvW9StVbV64VbpBnWDv5bhQ-gDbdCc6kxXaNSLxJqfsJFSoNWYSeTisTdWChe8FLzVV4O2lAihJ-RhAez2yKteIrANsBS_V2KvXiSEHqIpdV-JIcUHznfyeXYGtp2yz_-hN_029_eTxVhuVY5HrQQe1O_92K4ZYe7LTjVPqimAlkAxQrTGKQgRgbZAW3Rd99WmDgi0vG6I1jgbRgqA3Z67Q6AQKMR_oJ1dLgXm9UmFK76mvucMu93Pbw_p7frHF6BlVR1rYCtgK5EVZsL4d6XLGrNuEIgurJyPFojO2_tTPfRRSHvHa3mm7RKKh07Xw8tnZd7hmcKtflvsrdMCVdP2di_zwZSdrDRpp9tWiv9AhKM_BJtmaI1iYOvrqKtKA7kfFruOhCidPye1uO4s9cvGRY-OSJiIWcwdmdxEFDGfMT9yyiTyl4JyP6BDHOd5Hi5ZHImM4lD6y5xHB0cl5JHvxRR6MQv8yPU5RcSEF8fczyQJ8D1Zc1W5w4G7uiscZUwvk5sbz4sDp-KZrMz5ynfJ4LXI-sKA71XKWPMaZ5WtxuGw26UQpAjBer7oQYqr8TafRTFqE2g7csbHoTHPCPluejh9VyWlta0Z5DgyVShb9pmb6xpoOwp1eizaTj_K3AJtRxAGaDvjOCb0JwAA___T6Vfr">