<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/130484>130484</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Question] Is (volatile long double) 0 output from 'ta v' command a bug?
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kaixinlalala
</td>
</tr>
</table>
<pre>
When using the `ta v` command in LLDB, the output for a variable is `(volatile long double) 0`. I am not sure if this is expected behavior or a potential bug, so I would like to confirm with the developers.
Test Case:
```
#include<functional>
#include<tuple>
#include<variant>
#include<type_traits>
#include<any>
#include<utility>
#include<iostream>
class Container_1 {
private:
unsigned char member_5;
public:
unsigned char member_4;
// Constructor
Container_1(unsigned char member_4_val, unsigned char member_5_val)
: member_4(member_4_val), member_5(member_5_val) {}
// Destructor
~Container_1() {}
};
class Container_2 : public Container_1 {
public:
long long member_6;
double member_7;
Container_1 member_11;
// Constructor
Container_2(long long member_6_val, double member_7_val,
unsigned char member_4_val, unsigned char member_5_val)
: Container_1(member_4_val, member_5_val),
member_6(member_6_val), member_7(member_7_val), member_11(member_4_val, member_5_val) {}
// Destructor
~Container_2() {}
};
// Container_3 class implementation
class Container_3 : public Container_1 {
public:
float member_8;
double member_9;
double member_10;
// Constructor
Container_3(float member_8_val, double member_9_val, double member_10_val,
unsigned char member_4_val, unsigned char member_5_val)
: Container_1(member_4_val, member_5_val),
member_8(member_8_val), member_9(member_9_val), member_10(member_10_val) {}
// Destructor
~Container_3() {}
};
float func8(int p_0)
{
float var335 = 0.5f, var336 = 1.5f, var337 = 2.5f;
int var338 = p_0 + static_cast<int>(var337);
float var339 = var335 + var336 + var337;
for (int i = 0; i < 10; ++i) {
float var340 = 3.5f, var341 = 4.5f, var342 = 5.5f;
float var343 = var335 + var336 + var337 + var339;
int* var344 = &p_0;
}
return var336;
}
template<typename T1>
long double func10(T1 p_0,int p_1,double p_2)
{
static volatile long double var36 = 0.0;
static volatile double var37 = p_2 + p_1;
static volatile double var38 = p_2 * var37;
if (var38 > 100.0) {
static volatile long double var39 = var38 + p_1;
static volatile long double var40 = var37 * p_2;
static long double var41 = p_1 * var39;
static volatile T1 var42 = p_0 + var38;
static volatile long double var43 = var36 + var39 + var40 + var41;
static volatile float var44 = func8(p_1);
if (var43 > 200.0) {
static volatile long double var45 = var43 * 1.5;
static volatile long double var46 = var45 / 2.0;
static volatile long double var47 = var46 - var43;
static volatile int* var48 = &p_1;
static volatile float* var49 = &var44;
func8(*var48);
var44 = *var49;
}
}
return var36;
}
// Global variables
unsigned long int var505;
unsigned int var506;
int var507;
unsigned int* var508;
Container_3 var509(1.5f, 2.5, 3.5, 10, 20);
long int var510;
long double var511;
int main()
{
// Local variables updating global variables
var505 = 100;
var506 = 200;
var507 = 300;
var508 = &var506;
var510 = 400;
var511 = func10(var509.member_10, var507, var509.member_9);
var509.member_4 = static_cast<unsigned char>(var509.member_4 + var511);
if (var509.member_9 > var509.member_10) {
unsigned long int var512 = 500;
unsigned int var513 = var506 + *var508;
unsigned int var514 = var506 + *var508 + var513;
var509.member_9 = 4.5;
var509.member_10 = 5.5;
var509.member_8 = 6.5f;
var509.member_8 = static_cast<float>(var510);
var510 = static_cast<long int>(var509.member_9);
} else {
// Alternative block
}
return 0;
}
```
The result printed by lldb:
```
(lldb) target create "./test_case_0.o"
Current executable set to '/home/hzw/debugger-test/gen_progs/1740728492_BG85H39g/reduced_test_case/test_case_0.o' (x86_64).
(lldb) b func10
Breakpoint 1: where = test_case_0.o`long double func10<double>(double, int, double) + 21 at test_case_0.cpp:82:5, address = 0x00000000000014b5
(lldb) r
Process 290875 launched: '/home/hzw/debugger-test/gen_progs/1740728492_BG85H39g/reduced_test_case/test_case_0.o' (x86_64)
Process 290875 stopped
* thread #1, name = 'test_case_0.o', stop reason = breakpoint 1.1
frame #0: 0x00005555555554b5 test_case_0.o`long double func10<double>(p_0=3.5, p_1=300, p_2=2.5) at test_case_0.cpp:82:5
79 {
80 static volatile long double var36 = 0.0;
81
-> 82 static volatile double var37 = p_2 + p_1;
83 static volatile double var38 = p_2 * var37;
84
85 if (var38 > 100.0) {
(lldb) ta v
Global variables for /home/hzw/debugger-test/gen_progs/1740728492_BG85H39g/reduced_test_case/test_case_0.cpp in /home/hzw/debugger-test/gen_progs/1740728492_BG85H39g/reduced_test_case/test_case_0.o:
(int) ::var507 = 300
(long) ::var510 = 400
(unsigned int *) ::var508 = 0x0000555555558070
(Container_3) ::var509 = {
Container_1 = (member_5 = '\x14', member_4 = '\n')
member_8 = 1.5
member_9 = 2.5
member_10 = 3.5
}
(unsigned int) ::var506 = 200
(unsigned long) ::var505 = 100
(std::ios_base::Init) std::__ioinit = <incomplete type "std::ios_base::Init">
(long double) ::var511 = 0
(lldb) p var36
(volatile long double) 0
(lldb) n
Process 290875 stopped
* thread #1, name = 'test_case_0.o', stop reason = step over
frame #0: 0x00005555555554f1 test_case_0.o`long double func10<double>(p_0=3.5, p_1=300, p_2=2.5) at test_case_0.cpp:83:5
80 static volatile long double var36 = 0.0;
81
82 static volatile double var37 = p_2 + p_1;
-> 83 static volatile double var38 = p_2 * var37;
84
85 if (var38 > 100.0) {
86 static volatile long double var39 = var38 + p_1;
(lldb) fr v
(double) p_0 = 3.5
(int) p_1 = 300
(double) p_2 = 2.5
(lldb) n
Process 290875 stopped
* thread #1, name = 'test_case_0.o', stop reason = step over
frame #0: 0x0000555555555530 test_case_0.o`long double func10<double>(p_0=3.5, p_1=300, p_2=2.5) at test_case_0.cpp:85:9
82 static volatile double var37 = p_2 + p_1;
83 static volatile double var38 = p_2 * var37;
84
-> 85 if (var38 > 100.0) {
86 static volatile long double var39 = var38 + p_1;
87 static volatile long double var40 = var37 * p_2;
88 static long double var41 = p_1 * var39;
(lldb)
Process 290875 stopped
* thread #1, name = 'test_case_0.o', stop reason = step over
frame #0: 0x000055555555554a test_case_0.o`long double func10<double>(p_0=3.5, p_1=300, p_2=2.5) at test_case_0.cpp:86:9
83 static volatile double var38 = p_2 * var37;
84
85 if (var38 > 100.0) {
-> 86 static volatile long double var39 = var38 + p_1;
87 static volatile long double var40 = var37 * p_2;
88 static long double var41 = p_1 * var39;
89
(lldb) fr v
(double) p_0 = 3.5
(int) p_1 = 300
(double) p_2 = 2.5
(lldb) p var39
(volatile long double) 0
(lldb) q
Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n] y
```
Compilation command:
```
clang++ test_case_0.cpp -O0 -o test_case_0.o -g
```
Compile Version: clang version 19.1.7
Debugger Version: lldb version 19.1.7
Operating System Version: Ubuntu 22.02
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWktz47i1_jXw5pRVAEiK5MILSmrN7aqumjt1-yaVlQoiYQlpimBAULazyG9P4cGnZFvOzDiTqLssCueB8_hwcACJNY04VJw_oGiFos0da_VRqocfTDyLqmTm391eFi8Pfz7yCtpGVAfQRw5oiTWDM1piyOXpxKoCRAXfvm1WiK4th2x13Wp4lAoYnJkSbF9yEI0RRTQ5y5JpUXIoZXWAQrb7kiOaAkZLvICvwE5QSQ1NqziIR9BH0Rhh_lzzXPMC9vzIzkIqsPprqXmlBSth3x6MBY2Er_Ak27KAUvzgoCXksnoU6gRPQh-thQU_81LWXDULhDOEs--80bBmDUdftmi1Rmnmxo3F7j_OEA1ElZdtwVGwfmyrXAtZsRIFX-ZE3dYlvzJuY1HpaxIvNd9pxYRurlBZ9XJltNWiFPoaRchGK85OnoSzvGRNA2tZaSYqrnYEULxCOKuVODPNUWCYAADayoKigPzIFJz4ac_VLkKBZW73pcjf4Q0dr2dBdIvo1kzcaNXmWipPGJmCaHJd0-7MSpPQ6zY5aur12cmCbLCCJlM1qdHU-9NTOzU2HvFmavaGz6z-x9TsiZz527k-Dze1trn4XcvCLLB2Xdg_3sql02xobrl0hHggjNV6KiEfTQZFNLmcvUvEbG4_PMpA9_rt8jkN-FzTXHZmTB-9XnJ5CYZ4oMaXVHLDtB_GDn0LO0OWPHcADk7iVJf8xCvNTN25grLgYyh7LCXTnS_JawhLXyMQ_FFwBYgm00mvAyu9PkzwfwrgkkEyuYRUOlDTK4DDA7nz-OMIC95CmMuB2cCMoaLSUO-wi4RDyoCOM1NBEAEKNoAX0aOx0w4t7RAZD8V2iJqhHjFGtyUmlljvMCC6gsZAON_lrNFms3IbIk2cGmNIcMWK1KroDKKr3pDucVQLTefhXRPOeBSs7OMaLG6NFKIr0cVoSOIwY4itaDByMiR2KBwPUTsUTfyeKQreNX14TKdaTHBo5tSEVg2iS5OunmvAheK6VZVX7rPtko8zzU91aXd622pU7MThO3H9wagNs6iwEPxOHCrWDh8E0bVnqU39moLFJRSuNXbWnKVH0MjsuciIO_ZgoTYqZu5bpJKRlAtYPClQ4hE8xgznFyDY2HOR__dcGWCYXJp3gwKPKu8nzWw4rymYyxHvH-n9S9-e-DuxcnSy9KzhHzN4QO-A2LR7Cnu14Ttx6NeDx3FXfyy20kmqJumy838Bej1dtzgQdQ4YVTQzZWtq6i1Klr0Ss4S3QMdgvlVJ3CtZwr2z6H0lQwkIk6ECkPcFbcQ70bQTtRm4CLetWD4jiGZ2skkl7l5DAj3bjGe0TV0rTPO65Peyn0q5Z2V_VmwQzvpN2wbR7yQR9qnrqT3Ba-4_x5eMPhYR9itg3DrZcbM1d5saXUTmLXBvpiaugeI-JhOrul5olu-oa8AN34mJyu3Kk9LpA_BN5mP_oa0Lps2J-3AZGZ-GCDtgEzxCoguF24ovxh38govxZISNPpAdlbiCFc6lCOmXsd0wXAAXozZm3SWie-qp6QRaU5oD17RFmDRwfbMwFXJVyIR8rLsvI-PZbUG5tHdeW64jkPgNH8_W_wUiSV84bUboyq-YHn6vS4avSg5-zirHpYu2T3mLyWc2epvLgWN50d9c45pmzdWfPlsEXxSUEb6mol3Er-V6Ch4Ub4CXDZ_lzi-rrNRcVUyLM4d9KfMfr9UmPKlL40sfnH0_clC8aUsNtRKVvYJ6gbIs9m9eFiWWg6agmTpwDbniTHNAlC4Q3WreaOMt3-GFRJSactQqxSsN_JnnrbZ3Zg3XoCUgGiO6PcoTN29_f0J0W_B9ezhwdW8UIbo98GpXK3loEN2SOMQxTcKU7lY_JdH_BOkB0a3iRZvzYtfPfGmF6UiS52S5W4aIpoupG_tureNspTj7UUuDV2IOTU9HrrhN41ThEl_pLQPfSLrcdtd_a1eg16P7QAN1SoDpida8rlGQJRQFma3MrCgUbxrXYT7j0YuE-2jqgjkp_a-SueGnKU7iCErWVvmRF8aNf0-YL21qtKxrXljbM9BHxVkBiAamCQfburt6Hc_12utPLWtQnDWysmz7Ua4WpDsgKauFBtj47cIWda9wH308j_ZMsvG7pW1PNmajsR8oCjZ2O03fTKY1LU7t8vRrOcG3dVZXThgJAUA4uze1PqGvqLnp1JEE70u_evow8qG1xDxFXtM7h5FJ8YAzwtm8QfJH3N8brHldg6g-YSLp7qXcod0GIshQkM3aFhcZWR2mHKMWxXJMNlREs5m-ZFQrOswnOPbCk0uUiZxvoT02Jxdsdjn2d8rd8kTR-pmEfl1O2htHrCzJ3UBN9lFzQhkNpt3VyniQ9NcTw741dX1m_tAVTjkv4zlqLC1rowtHFLLZ7U3y7KevlbBz9OTdTkhRCe1cDNaiyuWpLrnmoF9qu_W9qYp2X2Uks2-GRqkm_j5nskjqrgbY0de_X5oIVb9z4W00r0Geubqp5j6ST665wVBzf32VNU__eo11NfrTq6xhXb5xfr756mcEqkdly_WosUnd3cuwVPsSV_vK0Ve2sQgdrfkxaMF6-YfBbRTgT8ZthIIs_dWQ--22dQfez4acURTfrujNW8ckuVR08-3jCJt_KFyG7JNxuRzh8tNLmQPhfxeyjHwK8Ln1tfYWfKSR-Juryb-0Qtsru2_fNit4EmUJP8wfWXGQCk5Scajd-uDNAjYSXmRrAF6WL_DEKnvStwz-NBqt_oLotkLRBl4ubyXW8lSL0n4X3P0O543riLxkpstbmVTPG_z7nzHcy-lygfvDa1Ny-BNXjZCVMdLqhbMbAJIuyCJGONv4A8KY1YTrkvPnmit30_l_L43mp7HE_-_bSrdA6QLTu-IhKNIgZXf8gcQhiUgSh-Hd8eExyveEcZKkLIx4TEhOo2WSpwUu8GO0D-_EA8U0wgFOCSGUhgucL6NknyZ5GOTLIghRiPmJiXJRlufTQqrDnWialj-QAIdJeFeyPS8b-yspSiv-BJZqutVoc6cejND9vj00KMSlaHQzqNFCl_bnVb-0vLFf2kcb-NrAW9Dqfzyl5MlWRnP-o3H_Uytmf-YUbO9aVT4cta4b0xzb266D0Md2v8jlCdGtMcK_3ddK_pXn5qBmTbenNOfb-YH-MwAA__8pGPEP">