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