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

    <tr>
        <th>Summary</th>
        <td>
            Watched variable has incorrect value in release conf
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          Eddie-cz
      </td>
    </tr>
</table>

<pre>
    Platform: Windows 11, MSVC 17.6.2, LLVM 16.x
Using code below in release conf, debugger shows incorrect value (0) for variable var after condition check. Internal value is however correct.
In LLVM 15.x, this works as expected.

std::shared_ptr<int> get()
{
        return std::make_shared<int>(1);
}

int main(int argc, char *argv[])
{               
        int var = 0;
        auto cond = get();
        if (cond)
                var = 10;

        //.... var is reported as 0 here...
}
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxkk99u4yoQxp8G34yKMCT-c-GLtGmkSq10pKPTXlYExjanBCLASXeffoXjNN1dy8JYnt83HzNjGaMZHGJH1vdkvS3klEYfuketDd6pn8Xe6x_dP1am3ocDERt4M077c4SyJPwBXv59fYCyphXl-fX5-fUFyop-ErYlbPNfNG4A5TXCHq0_g3EQ0KKMCMq7PiMa99MwYIA4ZlnjlA8BVYKTtBMC4Q0jvIXeBzjJYOTeYt6A7BOGrKJNMt6BGlF9UHhyCYOTdsFNhNGf8TSHzrr0Yu3JLWbX9DPbSKOJcPbhI4KMgJ9HVAn1EnxZY9JEbIjYxFEG1O_HFIh4MC4R8QgDJsIbwtuFqO-vaBswTcHBF36QH_h-0fjiCW_KDIsrVm-_pzYuwUEaR3iTtzIMKptWowxA-EaG4XTp3-8G2vlebGQwF46ILbBbItbKKfm5kPOn20G-hZg-NyLH3BLM6lfB8rtiXmG5CN8RvqOU0jm5iRDw6ENCnevMYMSAlNKvUxe6E7oVrSywK6umEqziVVuMnap6XrNVKdpm1Vc1F0zXTVPLtVhz3mgsTMcZF6xibcn4ireUtQxryfqmL1nNsCUrhgdpLLX2dKA-DIWJccKuErwsCyv3aOP1NwhdDrrbT0MkK2ZNTPGGJZMsdm8yqRH1bSpH-ff4_jHwxRRsN6Z0jHkU5tIMJo3Tnip_IHyXUyyPu2Pw_6NKhO9mm5Hw3ez0VwAAAP__tpQaZw">