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

    <tr>
        <th>Summary</th>
        <td>
            LLDB fails to show the values of a global array in a binary compiled with the -O2 and -O3 flags.
        </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>
    The behavior varies across different LLVM versions. Godbolt link [here](https://godbolt.org/z/8vxf7bEhx)

- In LLVM version 19.1.0, LLDB exhibited inconsistent behavior; it displays the value of the global array after the target create command, but failed to do so after the binary was executed.
- In the context of LLVM versions 18.1.8, 17.0.6, and 16.0.3, LLDB is unable to display the value of the global array, regardless of whether it is after the target create command or after executing the binary.

Here are the details for LLVM version 19.1.0.
```
 clang -g -O0 -o d3_O0.out d3.c

(lldb) target create d3_O3.out
(lldb) p/x g_4[6]
(uint8_t) 0x08

(lldb) b 23 
(lldb) r

* thread #1, name = 'd3_O3.out', stop reason = breakpoint 1.1
    frame #0: 0x0000555555555130 d3_O3.out`main [inlined] func_1 at d3.c:23:5
   20       int i;
   21       for (i = 0; i < 2; i++)
 22             l_2[i] = 0x814B;
-> 23            ++g_4[6];
   24    return g_7[1][5][2];
   25       }
   26   
(lldb) p g_4[6]
error: Couldn't materialize: couldn't get the value of variable g_4: failed to read memory DW_OP_piece(1) from file address 0x4028
error: errored out in DoExecute, couldn't PrepareToExecuteJITExpression

(lldb) p/x *(uint8_t*) 0x0000555555558028
(uint8_t) 0x08

```

`cat d3.c`
```
#include "stdint.h"

volatile uint32_t csmith_sink_ = 0;

union U0 {
   volatile uint32_t  f0;
   int32_t  f1;
 signed f2 : 12;
   uint16_t  f3;
   int32_t  f4;
};

static uint8_t g_4[10] = {8U, 0xB9, 8U, 0xB9, 8U, 0xB9, 8U, 0xB9, 8U, 0xB9};
static union U0 g_7[4][7][3] = {{{{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}}, {{{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}}, {{{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}}, {{{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}, {{0x5A40F2FD}, {0xD0657689}, {0x579253A3}}}};

static union U0  func_1(void)

 int16_t l_2[2];
    int32_t l_3 = 0;
    int i;
    for (i = 0; i < 2; i++)
        l_2[i] = 0x814B;
    ++g_4[6];
    return g_7[1][5][2];
    }

int main (void)
{
    int i, j, k;
 func_1();
    for (i = 0; i < 10; i++)
    {
        csmith_sink_ = g_4[i];
    }
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 7; j++)
        {
            for (k = 0; k < 3; k++)
 {

            }
        }
    }
    return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWE9z6jgS_zTi0oVLljA2Bw4Qwu5sZStzeLN7pGS7jZUYiZJkQubTb0kGbCCZ996edl_F5fKfVvev_6jbbklYK7cKcU6SJUlWI9G6Wps5lu1OazfKdfk-_1Yj5FiLg9QGDsJItCAKo62FUlYVGlQOnp7-9U84oLFSKxvB33SZ68ZBI9UrkGRZo0GSrAjLauf2lvAFYWvC1tuOL9JmS9j6T8LW2eFYpfljfSRsRuiK0EV3HcNv6koLxLMojihhD_D0tFoCHmuZS4clSFVoZaV13rCz5YQvQToopd034t2CqxEOomkRdBVeto3ORQPCGPEOonJoAtkJs0UHhUHhEAq92wlVeqV566ASssESnIZSg9UDsVwqYd7hTVjAIxatwzIaOOJZCq0cHp3XfxU9iLMojjKvI04jGk39k1AlxNOIRvzisLTQKpE3GPR3fv21W17U4FaYskFrPcdbja5G4yMj7fe8Bm1OLJ1LUm0HvkbD2fo7GgRhMIyX6IRsLFTafDSDZ8EpPZ3hFYpGqC2MtzB-pjDWUPLNM41066DkUTFURljWNGVO2OzGbi_Cvcgd356w9RG2mwlJllOfmGeGViqXbZznoUeafaImB8bhjmquuRfgaoOiBMJ47EOvxA6B8BUQlvamsdSPWaf3YFBYrQJLblC87rVUDuIoPoUEACoTQBinhC-8iZTS5HzEnA58ntKdkMpXn1SNVFiSZAVVq4pNDOIURb5gnPBFclHAKAChM6_K65aEL_ux-DLmp5KwTAZbaagtIPwBWHgkbBnOUwEDYxdBfzQb5o3y5gTxYxZPlhdFY8IffXjPEh3YYKqGFk06NoOuNQq2m5Qky9gzJcuku7FbkaRHTlc9eRrI94lylyRojP-aLOBBt02pCEsd7IRDI0Uj_0Q_UvQjPhuvatJ_QEPRely-GHxCQq7scKfNO6z-vXn-fbOXWCBhWewtqYzeQSUbBFGWxtcvPU4oy26sCg9Ygi8UqWClH7vPj0-ygV2_G9wLg9_Ow__47dvjce9hpVafZH1XNIRd1cniVCqDPMwuVn2noK4r_kIsztl5GblhZFyqomlLXwjMulIqF9WEsSHOQTfC-Wh5AzjbOCjsTrp6Y6V63VzydijSKv9R-oMCSft8uceBig4TqifHPTn8VUuoGPg5idlQwAPF0yDBPwaa9IalqxsjrRNOFnAK6yk7Y3ouJpIusz_8XNPjcubv_9XbQOtZ3zk2XY1NuuJKuxsfaL-c9JgsJnTN1isPxx4g0FZ0mqTTbDakJemMJXzBPe1C_kL4X0AYgvy_-_KF8DWnvyrC15z-egjd-fHf__w3PvXzhGUHLct-yZwuT8sTODcbXdN92w1fmo5mw296og-XAD_Z-P9Qw_-9Jv9nuvu-p--u3oFuFXQfoVs32QO8-MtrD3iJrpf7kTDE9LM4XCn0x1072nkvP_Xor_ROfljtCeGlR3gJCGl4_GQC71AGSK890mtA4uHxFukCcQ905eEd4erllAr0qkG-XiOMyjkvZ3wmRjiPU5axhLJsOqrnWTwpiikrSpYyZLTIscQkSTDLRUormo_knFE2iSmdspjHbBoVmIh0wmeTGYt5nqVkQnEnZBM1zWEXabMdSWtbnMdxzGM-akSOjQ1baYwpfIMw6tclyWpk5l5onLdbSya0kdbZHsZJ1-A87OpUYavEabC1fuuXjmG3RlxvUkkF4rzRVOjdPiwk36Srg9j4mYVdo_Ezh6oRWxuNWtPMb_bfpKvbPCr0jrC1N-d0G--NfsHCEbYOTljC1icvD3P2nwAAAP__KPojWw">