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

    <tr>
        <th>Summary</th>
        <td>
            Errors in generating DWARF debug information : DW_TAG_variable has an invalid location
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Clang may produce invalid location information for the local variable `l_17` when compiling with "-g -O3", "-g -O2", or "-g -O1" using LLVM versions 18.1.8, 17.0.6, and 16.0.3 in the specified test case. For the binary generated with -g -O3, the error is "`DW_TAG_variable has an invalid location: DW_OP_constu 0xc33c, DW_OP_lit0, DW_OP_convert 0x2b, DW_OP_convert 0x2f, DW_OP_lit5, DW_OP_and, DW_OP_and, DW_OP_convert 0x2f, DW_OP_convert 0x33, DW_OP_stack_valu`".  Similar errors are present in binaries generated with other optimization levels.

Reproduce it in LLVM18.1.8, 17.0.6 and 16.0.3:
```
clang -g -O3 191.c -o 191_O3.out
lldb 191_O3.out
(lldb) b main
Breakpoint 1: where = 191_O3.out`main + 16 [inlined] func_1 at 191.c:30:34, address = 0x0000000000001140
(lldb) r
[...]
* thread #1, name = '191_O3.out', stop reason = breakpoint 1.1
    frame #0: 0x0000555555555140 191_O3.out`main [inlined] func_1 at 191.c:30:34
   27       for (g_2 = 0; (g_2 >= (-21)); --g_2)
   28       { 
   29           uint64_t l_5 = 0x34F0946507E67329LL;
-> 30            (*g_10) |= (l_5 && (g_2 == (g_9 = l_6)));
   31           for (l_5 = 0; (l_5 <= 12); l_5++)
   32 { 
   33               int32_t *l_19 = &g_20;
error: 191_O3.out 0x00000000000001b4: DW_TAG_variable has an invalid location: DW_OP_constu 0xc33c, DW_OP_lit0, DW_OP_convert 0x2b, DW_OP_convert 0x2f, DW_OP_lit5, DW_OP_and, DW_OP_and, DW_OP_convert 0x2f, DW_OP_convert 0x33, DW_OP_stack_value
(lldb)
```
`cat 191.c`
```
#include "stdint.h"

union U1 {
   volatile uint8_t  f0;
   uint32_t f1;
   volatile uint64_t  f2;
};

static int32_t g_2 = 0x485BF25CL;
static int8_t g_9 = 0xF1L;
static int32_t g_11 = 0x028F4E1CL;
static int32_t * volatile g_10 = &g_11;
static int16_t g_16 = 1L;
static int32_t g_20 = 0x5BB00289L;
static union U1 g_24 = {0UL};

static int32_t  func_2(uint8_t  p_15)

    uint16_t l_17 = 0xC33CL;
    l_17 &= (p_15 & 5L);
    return (*g_10);
}

static union U1  func_1(void)

    uint32_t l_6 = 0UL;
    for (g_2 = 0; (g_2 >= (-21)); --g_2)
    { 
 uint64_t l_5 = 0x34F0946507E67329LL;
         (*g_10) |= (l_5 && (g_2 == (g_9 = l_6)));
        for (l_5 = 0; (l_5 <= 12); l_5++)
        { 
 int32_t *l_19 = &g_20;
            (*l_19) ^= func_2((g_16 = g_9));
        }
    }
    return g_24;
}

int main (void)
{
    func_1();
    return 0;
}
```



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcV0-PozoS_zTOpRRkl8O_Qw5Jp7OXXs1qdmfniAw4xDuOicCke_bTP9kQIJ30vBlp3uWhiOByVflXVT8XRrStqoyUaxJuSbhbiM4e62Yty-5U13aR1-X39ZMWpoKT-A7npi67QoIyF6FVCbouhFW1AWUOdXPqnw91A_Yo_aSGi2iUyLUEElGdsZhEFF6P0kBRn85KK1PBq7JHIIjLCpafOEEk-DSOcRjXzShiBBG61pm-vPz3n3CRTatq0wJLAhYkTpvFAQ0i9yRMCSwKaMBBGY-rPctCHZQswcrWQiFaGcB-AJ0rI5rvUEkjG2Fl2YO7InvyOrJp6gZU6wCRiO6-Zv_Z_CMbAz2KFoS5yxHhG9h9zT79Kytq09oO6FvBeeGc9mKtLJ1GRW0usrFA3zB_KD3cWIbTSJjyg8Fj60nK-SRtrSi-ZRehOxJRghgA_FudlBZNH38LopFwbmQrjXWp9ZlTsn2fu9oeZQP12aqT-n_PEC0vUrcBoTtCN_39sxy55b25wr4v56yWhA92Dlz_88PCU7UvF7CUBQUsa_eQfeJB3dleS-syvxMSTJycYAo5nIQyvXjbSPHtXCtjgbkSvh5lI4Hw3dxBRJ0BENwCi4CEW2W0MrIk4Q4OnSkyBsL2eAjfcOpuK8_Osmxk23p_9I3OLsZW9A5YM0jCbRAEJNxdFTZgj40UJRDkzPk14tSDJBjPcGLsJltbn6GRoq2N18lnIQas9wkAcGi8F_R4B3jh9WIr-igDPxn6dQ2Mob8Ofn8nVYZ9LgjfTuPnPpJkiYxg6n58C8tllaF7Hn0lgy8Sb2GSpjBdnTI2WmUWdBYOOeerPU1XUUjj5yjmmL68EL7trZeEPwOnM3sHguCmyhh15SDx04DM-8OIYDSLYpirstSvpbNoQO8DGBFyNltgyMOIb8hDP_arMRwSoLOQ4Nb_piRwvA2fc7i9lLEcMwsENzpj6UCSqMqQjqD8Bnc1nwr8jp2U5auhof2te598vwUfdh0S0WIk-Ux4o4NcmUJ3pdtR2NpSGRsc3Rtk1gU749rjF-ZqOJbwUmthlZaevUlmAQ50zp_uWtIDm4tvzDzp4YCjAol307O_t1ZYVYz8GHfi2yoJt3sMn6aNMakmXjMdNPfskc7gjrFrl8Nkv3pmD_1dqTmhd3ttIiljD4xY1C8Q9W35BxiQDhjC7ZZSTNI73bECVYarft14S7-8_Gm--maHBJOxTOeMhRNl5rvS18TDdkeiAdMT57OcOK1-EqOhkTh_bgjhy7sWAo20XWNu29NNre-Bj5EObZpgcqlV-QPAPk6d9Wl2OZkj-A0NfN65fq1T_6X9-bf05fcvpp9pw_cvHqfqAwt9RkfK-SgG_lfZRzGMPLgbDPRxnP-INe50MBxy7ngyY8GVSh8QlD5w_65Pzu6Lcs3LlKdiIdcsRs5pyFZ8cVyXCR4OcUpDwcskicuiyHmZp5If8pIWcbhQa6S4ogmjLAwReRCWNE2KMi3LuCjxgGRF5UkoHWh9OQV1Uy1U23ZyzSjGYbTQIpe69R9FiEa-gp913TrcLZq1M1rmXdWSFdWqte3kxiqr5fq5PyIrcz0Nu4-V3dfN5z2UMu-qmw-mX3iRLrpGr4_Wnlt3AsY9wX2l7LHLg6I-Edw7GMPf8tzU_5OFJbj34FuC-yG6yxr_CAAA__9xsMwx">