<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">hey<div><br></div><div>I am having a bit of a hard time understanding the connection between SVals and SymbolRefs, could someone enlighten me? As I understand it, SVals are transient, and SymbolRefs are not, which makes them handy for tracking state. However, some SVals don't have SymbolRefs. What is the recommended way of identifying an SVal with no SymbolRef at a later stage in a checker execution? All the examples I have looked at just bail when there is no SymbolRef.</div><div><br></div><div>I find that the following code has a SymbolRef for the SVal in the branch condition:</div><div><br></div><div><div style="margin: 0px; font-size: 14px; font-family: Monaco; "><span style="color: #bb2ca2">int</span> main(<span style="color: #bb2ca2">int</span> argc, <span style="color: #bb2ca2">char</span> *argv[])</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">{</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    UILabel *l = [[UILabel alloc] init];</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    <span style="color: #bb2ca2">BOOL</span> available = [l respondsToSelector:<span style="color: #bb2ca2">@selector</span>(adjustsLetterSpacingToFitWidth)];    </div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    <span style="color: #bb2ca2">if</span> (available)</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">        l.adjustsLetterSpacingToFitWidth = <span style="color: #bb2ca2">YES</span>;</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    [l release];</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; color: rgb(187, 44, 162); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">      </span></span>return<span style="color: #000000"> </span><span style="color: #272ad8">0</span><span style="color: #000000">;</span></div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">}</div></div><div><br></div><div>But the following code does not:</div><div><br></div><div><div style="margin: 0px; font-size: 14px; font-family: Monaco; "><span style="color: #bb2ca2">int</span> main(<span style="color: #bb2ca2">int</span> argc, <span style="color: #bb2ca2">char</span> *argv[])</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">{</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    UILabel *l = [[UILabel alloc] init];</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    <span style="color: #bb2ca2">BOOL</span> available = [l respondsToSelector:<span style="color: #bb2ca2">@selector</span>(adjustsLetterSpacingToFitWidth)];</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    <span style="color: #bb2ca2">BOOL</span> unavailable = !available;</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    <span style="color: #bb2ca2">if</span> (available)</div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">        l.adjustsLetterSpacingToFitWidth = <span style="color: #bb2ca2">YES</span>;</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">    [l release];</div><p style="margin: 0px; font-size: 14px; font-family: Monaco; min-height: 19px; ">    <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 14px; font-family: Monaco; color: rgb(187, 44, 162); "><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">  </span></span>return<span style="color: #000000"> </span><span style="color: #272ad8">0</span><span style="color: #000000">;</span></div><div style="margin: 0px; font-size: 14px; font-family: Monaco; ">}</div></div><div><br></div><div>Any condition that is a binary or unary operator seems to have an SVal with no SymbolRef. I would love to know why.</div><div><br></div><div>thanks.</div></body></html>