<div dir="ltr">Hi Renato and Rafael,<br><br>I think there is a design level issue as I asked in my code review email thread.<br><br>In assembly code parsing stage, the code tries to call <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
</div>EvaluateAsAbsolute without knowing MCAsmLayout. I think it is unsafe and incorrect, Originally the code simply return<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
ed</div> <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">"</div>Success<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
"</div> even if EvaluateAsAbsolute returns false<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">.</div> <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
T</div>he logic was <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline"></div>wired<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
</div>, I think.<br><br><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">I</div>n <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
e</div>ncoding stage<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline"> of MCStreamer</div>, we can call <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
</div>EvaluateAsAbsolute to <div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">detect if the SO is really constant, but I think it's too late to do so, because we can do nothing except assertion failure if </div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;display:inline"></div>EvaluateAsAbsolute<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline"> returns false in this stage, while assertion failure implies compiler crash.</div>
<br><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline"><br></div></div><div><div class="gmail_default"><font face="arial, helvetica, sans-serif">I think the correct solution is we should introduce MCAsmLayout in assembly parsing stage to make </font><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline">
</div>EvaluateAsAbsolute return true/false appropriately. This way, we could detect invalid SO expression at the earliest time, and would be able to avoid introducing assertion(compiler crash) in encoding stage.</div></div>
<div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;display:inline"><br></div></div><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">
Thanks,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">-Jiangning</div></div></div>