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

    <tr>
        <th>Summary</th>
        <td>
            [avr] Wrong code using R1 for avrtiny core family.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Compile the following C code
```c++
char func (long xx)
{
    return xx > 1;
}
```
with `--target=avr -Os -save-temps -mmcu=attiny40`. This will spit out
```none
*.s:18:11: error: invalid register on avrtiny
        cpc     r23, r1
                     ^
*.s:23:11: error: invalid register on avrtiny
        mov     r24, r1
                     ^
```
A correct code is to use `__zero_reg__` instead of `r1`.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydkk2PpCAQhn8NXioaBW314KE_Zq-TTDbZYwcUlQ2KAeye3l-_hd2dSc9tlxChLIr3oaqE6W7N0UyL0hL8KKE3Wpurmgc4Qms6SdITSfdkl95nS-ghzO1vO3IL_Tq3QGilDcZ8fhJaP0LKxynAYaVf7YxuIOwNMsIOz0OnbwJ386r8CGjFsed2kJ6wE79YiN8dxI5fZOzltOB-mto1-LxX8y0P8Qn8HJWDq9Ia3KI8mNV_k5jN_HwW3SeOsH1WhQ9i7UFaa2zYqPnCteoQfVDOSwtmBmQIQl_vCqNd2m21lBF6BJu9ul8GKd5elTHm_5Unc3ko5_-g_JrpPVbZWtn6rdqAqfMGVidD9s_nP9KaM3Kcz2giGOLwDkwfvCiH6b7fEskm2-3KOi2zqoi6hnU1q3nkldeyIcUB8Ulxgl82NMkmtLrQYx8ZNpx9vi6gYAfySelbEq1WN6P3S0gToT9wDtgVq0haM6Gh9eW5xIs1v_EJaCrnVulwU1RVWUQjYnV9xSTPO1G3Mu1LyniZF6JndVqVoog0F1K7AImEkWpoSmmWpVWWMZYWSSd2gta5YEUmasl7kqdy4konQTgxdohsszGIdXDo1Fgy9-XkzqlhlvJ5P1_9aGzjFqtmLK0T0UbcbLh_AaxYBr0">