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

    <tr>
        <th>Summary</th>
        <td>
            [debuginfo]the value of DW_OP_deref_size generated by clang is incorrect
        </td>
    </tr>

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

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

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

<pre>
    lldb and gdb parse the parameter p_1 of function func_10 incorrectly.

``` cpp

(gdb) s
func10 (p_0=p_0@entry=5, p_1=<error reading variable: That operation is not available on integers of more than 8 bytes.>)
    at /home/hzw/Downloads/debugger-test/gen_progs/1735837458_IuQuWMTj/src_2/prog3.cpp:35
35       Container_0* var319 = new Container_0(1.0, 2.0)

(lldb) b func10
Breakpoint 1: where = test_case_3`func10(short, double) + 6 at prog3.cpp:10:27, address = 0x0000000000001146
(lldb) r
Process 50488 launched: '/home/hzw/Downloads/test_cases/1735837458_IuQuWMTj/test_case_3/test_case_3' (x86_64)
Process 50488 stopped
* thread #1, name = 'test_case_3', stop reason = breakpoint 1.1
    frame #0: 0x0000555555555146 test_case_3`func10(p_0=5, p_1=<unavailable>) at prog3.cpp:10:27
   7     short int var317 = p_0; 
   8        int var318 = 10; 
   9    
-> 10            Container_0* var319 = new Container_0(1.0, 2.0); 
   11   
   12    if (p_1 > 0) {
   13           double var320 = var319->member_1 + var318;
(lldb) fr v
(short) p_0 = 5
(double) p_1 = <Invalid address size for DW_OP_deref_size: 16
>

(short) var317 = 5
(int) var318 = 10
(Container_0 *) var319 = <variable not available>

```
```
cd test_case
clang++ -I  . prog3.cpp test_case3.cpp -O1 -o test_case3 -g
clang++ --version
clang version 19.1.5 (https://github.com/llvm/llvm-project.git ab4b5a2db582958af1ee308a790cfdb42bd24720)
Target: x86_64-unknown-linux-gnu
```

When this program is compiled on arm64-apple-darwin, lldb can correctly parse the value of p_1. But it behaves incorrectly on Ubuntu.

[test_case.zip](https://github.com/user-attachments/files/18306083/test_case.zip)

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVk-Po7gT_TTOpRRk7BDgkAPpTPTrw089q52dOSKDHfAMsZFt0tP96Vdl8relXmkXRQHbRfn51asqhPe6M0ptSLYl2W4hptBbt3l--f7y_X9_Lhor3zbDIBsQRkInGxiF8wpCr_BJHFVQDsY6BXuAw2TaoK2JD3VKQZvWOqfaMLwlhFb4W9P5B-04nqdY0cmGsBI8oRW-mlIgrBhrSvgO_1dUmeDeCN9lhD3hboTvCH9SzlkHTgmpTQcn4bRoBkV4Bd96EcCOyomIR3swNoA4CT2gCeCcCapTziPwo3V4JGGggOYtKJ8Q_oWwktAKAEAEIGzf26PC2_srYfudfTWDFdITtpeqmbpOuWVQPhC275SpR2c7XEtznhU8X2VF_Tz9Mf34_7efhO29a2tG2B6teIJM8IpnhMa_Ep6sCUIb5WpKWIUH42kJhO_AqNfH1SJNKHLC8FZeCcWIIaMNzHwSWm2dEr9Gq02AFCl67ZVT0SnCrlvhVc3Jmp5fYIXvrQvoW9oJaWUlELaFNdJxDzylhFcsR0shpVPeR6_0N7270nS1foTmCK2-OtuifUZXRQGDmEzbK4noCDr8nPIr5M85vj_Vh1GO8vpdrOv1aibtEYcPdhyVjHArCD0KDAjjKR7RiOPMGmH5o1NcxVdRkN6aaNTckZ6kZzkdXPTBOBJ35im7XOlq_VlA5oR4TIHJXEU9S_az6MStcwBAgcXQYgbM2soj1uh-C7NlcbYEuJkV0Sy9sypnK0KrJeFfAPN2fue_K_jqO00vvnHAZjj6MFeGFHA_GjWZb882_AoZr1m1cWtG49YzCkR6VMdGOfTCtuezEb591OfBwWmeOSdCiQxFR9k8f8uLGdAOCH96NicxaHlNBa_fFRysg92P-uVrLZVThxonMfZpzAn-5Zq3163u4nLeTZvbwjUSceWOTiCsulqVF0yXyvhYBG_7Xmryh-dW3pSIw0GYjrAtcrZ8BkhuOrvZzcPlSwpLezcLy-6jh-VJOa-tuczDeQxpmaRJhnHuQxg94RVheyyrOvRTk7T2SNh-GE6X23J09qdqQ9LpAKJZNZlgsskKVmaFOKRKcVqIvKTtQTYr1ki2ytm5WH4TrlMBIzFXg-Vkfhn7apaDNtPvZWemj_TQ6kevDIRe-3h8J47YXVp7HPWgJDYW4Y7r1VKM46CWUrhXbVDesYe2wsC1I9510pMYJoWNaKzTBLZTAB2gUb04KX_fRNH9X81kwnRpp9n2SnLyrkeS7f6Zt8krtxQhiLY_KhOwfB70MJfRgtM1LR6qZfQZqVrIDZclL8VCbbDglnlBc77oN1LmvFi1UhaFlLJdM3poRNZm8iBFW2ZsoTeMsoymdEULmmc8WfGmEAVbtzlrRZvm2N-PQg8JRjOxrlto7ye1SVm6ZuViEI0afPw-YewsIYafKm4Tw99MnScrOmgf_M1F0GGIHzWxO2tzsCTbPXD9MSGhUwY_GJSE5g1mTeo7-heTGzb_TpKE7eNRIr3zaU4b9ncAAAD__1wu0s8">