<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJylVEuP0zAQ_jXOxUrkOM3rkEO7FeIAAgECtJeV7bipwYkr2-my_55x0nTVsluQiKJMRt_M-PO8uGmfmncf33_HyuHBeMyOTCvGtcRmAMUieof56PHOWOz3EqTW5lENHb7DwrQSkS0ia1SQ0zupR6NasDSIVmrwGNH1IcQJ_wzRGqNyMxvi0-M880rgh4edZm4PgQfnZ3NrUb5B-RajbBv8UpqFUDRbBbHKiyCKEpVblF0FPYAnWVznQAzUs13weYn9_N2MSrdYefyofGDU92xoX7QXmkE6WCJw_CHD8TemNY5jz2wnPRwNScRx34sx_PuauCpPcxx_vnH2l4tEM-dkz_VTKFEnB2mZly8zCSnPzve_9UASMFqR4DAHCjrNOU_IP0Q4WcvB26fLnGunJ2kpvQSsWYDsqvQjV4sHlDLWpoK2AWJJKBmtr6y5UEuYYL1Xt6x7c5wPzUiw_oPUM57O-BU3fehnPK0Cfo_o5jWDeja4ffzqL8fn11Mxy_sJBQ5XaLugm9k_vbq-hf57vcnemkd5lPNUAxSucr5GQTCX2gydw97gnWR-tBJPewKmIDSi0lp2TIctsf76ieId65V-SqK2ydo6q1nERr83tuFycHtFSBqNVjd77w8OGgzRN_B2MFkjT2C2QNH6uIj4YM0PKTyoyrlROvjJaVWRaN_UrMppWRdc7Iq8JaSSraBClG25o2lRlZFmwNw1YWtQypn4KWFsszWQBB3GP_p_FqqhhKYppUVKV2VWJ3KXCk5ExtNMMl4zmCzZM6WTECcxtotsM4XkY-cA1Mp59wzCgKtukLKZV13kldeTEkjD_lpyDReAEuBPv87NSOnFUjjt7KUauJVHJaSLJv7NRP432--YFw>52880</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AVR] illegal "LPM Rx, Z+" is generated on avr2 family devices
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:AVR
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
benshi001
</td>
</tr>
</table>
<pre>
LPMX is not avaliable on avr, but for the following C code
```
void foo(int *p, int a) {
static __flash const int arr[] = {123, 234, 456, 67};
p[0] = arr[a];
}
```
Build it with command
```
clang a.c -O3 -Wall --target=avr -mmcu=at90s8515 -S
```
The following assembly is generated
```
foo: ; @foo
; %bb.0: ; %entry
lsl r22
rol r23
subi r22, -lo8(foo.arr)
sbci r23, -hi8(foo.arr)
mov r30, r22
mov r31, r23
lpm r18, Z+
lpm r19, Z
mov r30, r24
mov r31, r25
st Z, r18
std Z+1, r19
ret
```
However the `lpm r19, Z` belongs to feature LPMX and is illegal on AVR2 family.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNVMGOmzAQ_RpzGYHADkk4cEg2qnpo1WpbtdVeVjY4xK3BkW2yzd93DCGrpNm0CDFY783zzHjGwtTH8sPnjz9AOeiMB37gWnGhJZgOF5bQBxC9h62x4HcSrdbmRXUNPEBlaknSDUlXZJ6e3mF5MKpGpiF0qToPhK72QSf8c0ILIIv1SITT4zz3qoLn563mbofCnfMj3VqSr0m-AcI2wS-jLEhRNgtmls-DmS_IYkPYlegePdPJdRTiuDzzgs-t6Mfvule6BuXhRfkQUdvyrr7JrzTHcvCkgvgTg_g71xri2HPbSI9bYxEhbtuqD_--SN0yz3KIv9zZ--tFoblzshX6GI6okZ203MvbkYSSs3P-9x4sApBZGhxGobCmuRBJ-h8KJ7bsvD1e1lw7PVhL6SVgzQSwq6PvhZo88ChjbZbYNhhYEo6MFldsUalJJrB36h67NYdxU5YG9l9BveLZiF_FpvftiGfLgD8Run6LUIyE-9vP_rF9fj0Vo30aUIzhCq0ndD36Z1fpW-y_t5vsvXmRBzlONUIhlXMa8xSE1KZrHHgDW8l9byUM9wROQWhEpbVsuA63xOrbI4Utb5U-JlFdsrpgBY-88lqWOHMIhyGcHAilqAOPv88VpfSis08XzyQJtTyoSrqot7rceb932KCEvsO3wcnsRYKziQutD5OJ99b8lJXHpXKulw5_crpcptGuXCxFPZszzkVRcyF4notZJgu5zeYZ5QsWaY6ZuxA4BiZ49Uvi2LNVyALbJ99EqqQpzTJK0WG2YEWCvpVIKyYyJlGW41zJliudhFgSY5vIlkNYom8cglo5715BHG_VdHKoVdDnvd8ZWwrZuZ1K0ywaciiHBP4AB9uDFA">