<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/135997>135997</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
need help on the code in RegAllocGreedy.cpp->tryAssign()
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
BaoshanPang
</td>
</tr>
</table>
<pre>
I am trying to understand this part of code:
```
568 │ // If we missed a simple hint, try to cheaply evict interference from the
569 │ // preferred register.
570 │ if (Register Hint = MRI->getSimpleHint(VirtReg.reg()))
571 │ │ if (Order.isHint(Hint)) {
572 │ │ │ MCRegister PhysHint = Hint.asMCReg();
```
The 'Hint' is always 'virtual register' as when it is set by setSimpleHint it's type is forced to be 'virtual':
```
847 │ Register getSimpleHint(Register VReg) const {
848 │ │ assert(VReg.isVirtual());
849 │ │ std::pair<unsigned, Register> Hint = getRegAllocationHint(VReg);
850 │ │ return Hint.first ? Register() : Hint.second;
851 │ }
```
But the function "Order.isHint" would only return true when 'Hint' is phsical register:
```
113 │ /// Return true if Reg is a preferred physical register.
114 │ bool isHint(Register Reg) const {
115 │ │ assert(!Reg.isPhysical() ||
116 │ │ │ │ │ │Reg.id() <
117 │ │ │ │ │ │ │ │static_cast<uint32_t>(std::numeric_limits<MCPhysReg>::max()));
118 │ │ return Reg.isPhysical() && is_contained(Hints, Reg.id());
119 │ }
```
How this code can works? isn't the code dead actually?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykVU1v6zYQ_DX0ZfEMidTnQQfHL25yCBqkRa4BRa0ktjIpkFRc_fuCkizbifF6KEDAhLXcnZ2dIbm1slGIBYkfSPxzwwfXalM8cG1brl65ajalrsbiGfgRnBmlasBpGFSFxjquKnCttNBz40DXIHSFhO1IMK0kWFawi5MMyCMleUQyCoQeCD3Acw0nhKO0FivgYOWx7xBaqRyhe1_NlxIt8r4bAT-lcCCVQ1OjQSUQaqOP4FokwQ4gTvLvFXqDNRqDFRhspHVotnNwGlwFyxoIzd6WCHiSygFhP-Hl7fkHYY8Nuj8maE8TsuxdGveGzdZgQ2hGaL6sOXF4jeJLid9NhWYr7ZJo_vFngaQPy3l69_xl97Jfgb62o13B-s2W2-nzAos9fB8ECXZ_tgiEpnP1FKQF3p34aP2fn9K4gXcrXT6AWzi1qEA6H2vRQTn6nwspIH0mC27s0cfU2gis_PRKvMpKaLqI4wpQFqVX3a29fSV9_fA-9ZeD0Mq6lbcsyu6yxa1FMw3NT0za9zOS89zY-Xx-97x1lYfMdj2XhrD9oCa_VF6gZ0iEPV4006DXxq7rtOBOanXWzIx6LRcHd8sZdINR8yxraXyD7HApNKEGwnZzhEWhVXXJeSO99OcXoh8G580C9aCERwaE0ltBUjjpoatAq248Q3FmwHn8t5LpWyvFtVC-DRbCkH1zpDfl21VmWfvuJg1embVvx9vss2vDMLpKWGrdweqlVR935RGG8a_lQWg4C-R1KX3mOt37NedI_sOav9xN6at1hOec6f_JeW9nHXdSfAhunderVI7RD0fYI6HZqmY1HNFI8dHJo3SWsP3L3jfuuWOPc8iR_3Nzu7Ezk_eNtsjlPok0ITQBaT-EVo7LyT_T7WcXH63M3FTKv-v5i8RIsHvSp_kN8m8PCK7gpM3f1vtGWkVoOqt--lohr4ALfwN0I2GHTVWwKmc532ARplGU0TTO2aYt8roswzyIRZimaVoGYSKiElPBgjpO0jrbyIIGNA6iMAmzMI_ZNg5FWTNeJnEYhUlckijAI5fdtus-j1ttmo20dsAiZHGep5uOl9jZ86trCh_1oxwaS6Kgk9bZyzknXYeFQqygxa4HrS4NyYnx6bb5zSBW41b0vX-znBl309M-07oZTFe0zvXWD3eyYSNdO5RboY-EHnyx5edHb_RfKByhhwmxJfSwgP4s6L8BAAD___ECVVc">