<div dir="ltr"><div>Why does the SymbolReaper::markInUse only work on SymbolMetadata symbols?</div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:"JetBrains Mono",monospace;font-size:9.8pt"><span style="color:rgb(204,120,50)">void </span><span style="color:rgb(181,182,227)">SymbolReaper</span>::<span style="color:rgb(255,198,109)">markInUse</span>(<span style="color:rgb(185,188,209)">SymbolRef </span>sym) {<br>  <span style="color:rgb(204,120,50)">if </span>(isa<<span style="color:rgb(181,182,227)">SymbolMetadata</span>>(sym))<br>    <span style="color:rgb(147,115,165)">MetadataInUse</span>.insert(sym)<span style="color:rgb(204,120,50)">;<br></span>}</pre></div><div>I think it is flawed if the Symbol is a SymIntExpr holding an expression tree referring to SymbolMetadata symbols. In such case, those symbols would not be kept alive - causing some confusion on the checker developers' side and potentially losing some information about the analysis.</div><div><br></div><div>Should we walk the expression tree instead of the current implementation?</div><div>What performance impact should we expect by doing so?</div><div><br></div><div>Any ideas?</div><div><br></div><div>Balazs.<br></div></div>