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

    <tr>
        <th>Summary</th>
        <td>
            Incorrect of debug informaiton of a structure variable compiled with "clang -g -O3" 
        </td>
    </tr>

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

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

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

<pre>
    
We compile the same source code from #83839, with different optimization level "-g -O3".  After stepping in, we got the following information.  The value of "a.f5" is not 7, but 50792199, and all the others are correct.
```
 thread #1, name = 'bug_02_O3.out', stop reason = breakpoint 1.1
    frame #0: 0x0000555555555141 bug_02_O3.out`main at bug_02.c:30:5
   27   int main(void)
   28   {
   29       struct S0 a = fun_b();
-> 30            printf("%d\n",a.f5);
   31    return 0; 
   32   }
   33   //local_vars_info: [23, 24]
(lldb) fr v
(S0) a = (f0 = 2, f1 = -1, 0, f2 = 3, 0, f3 = 5, f4 = -6, f5 = 50792199)
(lldb) s
7
Process 3279674 stopped
* thread #1, name = 'bug_02_O3.out', stop reason = step in
    frame #0: 0x0000555555555154 bug_02_O3.out`main at bug_02.c:31:5
   28   {
   29       struct S0 a = fun_b();
   30       printf("%d\n",a.f5);
-> 31            return 0; 
   32   }
   33   //local_vars_info: [23, 24]
   34   
(lldb) fr v
(S0) a = (f0 = 2, f1 = -1, 0, f2 = 3, 0, f3 = 5, f4 = -6, f5 = 50792199)

```
`cat bug_02.c`
```
#include <stdio.h>
struct S0 {
   unsigned f0 : 7;
   signed f1 : 2;
   signed f2 : 29;
 unsigned f3 : 20;
   signed  f4;
   unsigned f5 : 26;
};

static int a = -1;

static int fun_a(int  p)

 return a;
}

static struct S0 fun_b(void)

    int b = 2;
    int *c = &a;
    struct S0 d = {2,-1,3,5,-6,7};
    (*c) = fun_a(b);
    return d;
}

int main(void)
{
    struct S0 a = fun_b();
    printf("%d\n",a.f5);
    return 0; 
}
```

In LLVM 18.1.2 context, Reproduce with:

```
clang -g -O3 bug_02.c -o bug_02_O3.out
lldb bug_02_O3.out
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVl9v2zYQ_zT0y8ECddTfBz04SQMU6NBhHbbHgBIpmxstCiTldvv0AylZctJ0yFYMWBBY1O_-kMf73em4c-o4SNmQ_I7kDzs--ZOxjRTT2Ri_a434oyH0gdDDrxI6cx6VluBPEhw_S3Bmsl3AhYTemjMQZBWrWE3wHj4rfwKh-l5aOXgwo1dn9Sf3ygyg5UVqIIj7I-w_MoKYABx6Ly04L8dRDUdQQ_Qi4Wh83LI3WpvPs6g39hxdJQA_nyRcuJ4kmD745EmfE0RQDgbjoQxu2slDTssa0zoejg8CuNbRr_EnaR1wGyKxVnY-mUMmBV3-4yv4k5VchCDT4GMIV0DYAxAs2-n4RPHpI0vM5AnGPZ03I1jJnRmiWmsl_300avCQJuniEwB6Gx0ho4QdgH6hlNL8-pdmKTx3XtAzVwNwv-BJR9gh2uarTywBCK3DVkGZYHUxShCsN40qapDyboPqCIUjOW-nzsMnCjwevZ-Gp5ZgFTywxWJP2DtgdLUZrRp8H5WQYC5Ifj_E5f2ckM0SAFg621npJzsAJewONiEuZ3vYIDZD-EjwUZuO66cLt-4pMCHcGsnvkIVLx4zkixnBSmvREqyht3BZwU80QHxJXdXTuAoHhT6N633ML40IRoRtAItAHtfZrF7El3wWrCyrvzqGm5FyfvxoTSedA4ZlXZRZ5MsoxdXqu_kWKilU0RuJlmdvIlr6nGjfTaOQ3H9Dopl-6Wr5XzIpmGWz2f-KWa91KVLQ7jZlN_gzNWRq6PQkAqXunRfKJCfC3s3SLXG3mZ2G-LEQEAM7QHmbxKsojSJ8TYSz6Cb3m0c2y-grdtBnt-hmk882xSoNeV7XSyDcqw5CI-TXBHxTI9CTE6zCGsbtmsuVUQvJ-LMdv3a2Xd-V8c_a741DgLhzuxDlJsyIEzx0C5sK_ky6bSFmhfIu8CzyK1AqsCiyp7y9lGAZi-vQBaZeazIE3b4oymus4luxfuvjcsuYt3aAf_bxeKXWt7O9oHn8fT_Ahw-__ABplaQJQmcGL7_4UFo_ydEaMXUyjiuEHf6msjrNhyPME8taX7A3L9pm1A3t4TX8hcudaJioWc13sknLNEda0KLYnZqibdu2xF4U2FelkCUvcmzrMqtEWhVtuVMNUsxoTitEWmZF0tVV36ZdxvOMZkXLSUblmSudaH05J8Yed8q5STZ1mme407yV2sWpDzEGFm47f9jZJujv2-noSEa1ct5tHrzyWjbvh2VMCvOWkO20DmTKmyGAfMn7ZMNkZhVv9To9inkwvG4L6wQIu8nq5uT96EIeYn8-Kn-a2qQz59Cs9eX62I_W_CY7T_AxRuUIPsbA_goAAP__1gPZQg">