<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>228068</bug_id>
          
          <creation_ts>2021-07-18 19:59:14 -0700</creation_ts>
          <short_desc>Compiler Incorrect Optimization</short_desc>
          <delta_ts>2021-07-19 17:49:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="zhiyi">vulbugs</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vulbugs</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1777799</commentid>
    <comment_count>0</comment_count>
    <who name="zhiyi">vulbugs</who>
    <bug_when>2021-07-18 19:59:14 -0700</bug_when>
    <thetext>OS: ubuntu18.04
Architecture: &lt;x64&gt;

./jsc bug.js

expected output
-Infinity
-Infinity

actual output
-Infinity
Infinity


bug.js
##################################
function f() {
  v0 = (-0.0).toLocaleString();
  return parseInt(v0);
}
let a0 = f();
print(1 / a0);

for (let i = 0; i &lt; 0x1000; i++) { f(); }
let a3 = f();
print(1 / a3);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777887</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-19 09:44:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/80788603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778023</commentid>
    <comment_count>2</comment_count>
      <attachid>433828</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-07-19 15:31:39 -0700</bug_when>
    <thetext>Created attachment 433828
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778025</commentid>
    <comment_count>3</comment_count>
      <attachid>433828</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-19 15:35:10 -0700</bug_when>
    <thetext>Comment on attachment 433828
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=433828&amp;action=review

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:206
&gt; +    if (static_cast&lt;double&gt;(asInt) == input) {
&gt; +        if (asInt || !std::signbit(input))

I think it is worth putting `LIKELY`.

if (LIKELY(static_cast&lt;double&gt;(asInt) == input &amp;&amp; (asInt || !std::signbit(input))))
    return JSValue::encode(jsNumber(asInt));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778027</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-07-19 15:36:22 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 433828 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433828&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:206
&gt; &gt; +    if (static_cast&lt;double&gt;(asInt) == input) {
&gt; &gt; +        if (asInt || !std::signbit(input))
&gt; 
&gt; I think it is worth putting `LIKELY`.
&gt; 
&gt; if (LIKELY(static_cast&lt;double&gt;(asInt) == input &amp;&amp; (asInt ||
&gt; !std::signbit(input))))
&gt;     return JSValue::encode(jsNumber(asInt));

OK, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778031</commentid>
    <comment_count>5</comment_count>
      <attachid>433830</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-07-19 15:44:25 -0700</bug_when>
    <thetext>Created attachment 433830
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778069</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-07-19 17:49:45 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r280060: &lt;http://trac.webkit.org/r280060&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433828</attachid>
            <date>2021-07-19 15:31:39 -0700</date>
            <delta_ts>2021-07-19 15:44:25 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-228068.patch</filename>
            <type>text/plain</type>
            <size>2748</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAwNTApCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBERkcncyBwYXJzZUludFJlc3VsdCgpIHNob3VsZCBjaGVjayBmb3IgbmVn
YXRpdmUgemVyby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODA2OAorICAgICAgICByZGFyOi8vODA3ODg2MDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9kZmctcGFyc2VJbnRSZXN1bHQt
c2hvdWxkLWNoZWNrLWZvci1uZWdhdGl2ZS16ZXJvLmpzOiBBZGRlZC4KKwogMjAyMS0wNy0xOSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEluQnlT
dGF0dXMgLyBJbkJ5VmFyaWFudCBzaG91bGQgdmlzaXQgQ2FjaGVhYmxlSWRlbnRpZmllcgpJbmRl
eDogSlNUZXN0cy9zdHJlc3MvZGZnLXBhcnNlSW50UmVzdWx0LXNob3VsZC1jaGVjay1mb3ItbmVn
YXRpdmUtemVyby5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9kZmctcGFyc2VJbnRS
ZXN1bHQtc2hvdWxkLWNoZWNrLWZvci1uZWdhdGl2ZS16ZXJvLmpzCShub25leGlzdGVudCkKKysr
IEpTVGVzdHMvc3RyZXNzL2RmZy1wYXJzZUludFJlc3VsdC1zaG91bGQtY2hlY2stZm9yLW5lZ2F0
aXZlLXplcm8uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gYXNz
ZXJ0RXEoeCwgeSkgeworICAgIGlmICh4ICE9IHkpCisgICAgICAgIHRocm93ICJGQUlMRUQ6IGV4
cGVjdCAiICsgeSArICIsIGFjdHVhbCAiICsgeDsKK30KK25vSW5saW5lKGFzc2VydEVxKTsKKwor
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBhc3NlcnRFcSgxLjAgLyBwYXJzZUludCgiLTAuMCIpLCAi
LUluZmluaXR5Iik7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKQorICAgIHRlc3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjgwMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA3LTE5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBERkcncyBwYXJzZUludFJlc3VsdCgpIHNob3VsZCBjaGVj
ayBmb3IgbmVnYXRpdmUgemVyby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyODA2OAorICAgICAgICByZGFyOi8vODA3ODg2MDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIHRvIGNoZWNrIGZv
ciBuZWdhdGl2ZSB6ZXJvIGV4cGxpY2l0bHkgYmVjYXVzZSBDKysgZXZhbHVhdGVzIDAuMCA9PSAt
MC4wCisgICAgICAgIGFzIHRydWUuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cGFyc2VJbnRSZXN1bHQpOgorCiAyMDIxLTA3LTE2ICBZaWpp
YSBIdWFuZyAgPHlpamlhX2h1YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRXh0ZW5kVHlw
ZSB0byBBaXI6OkFyZyBJbmRleCB0byBmdWxseSB1dGlsaXplIGFkZHJlc3MgY29tcHV0YXRpb24g
aW4gbWVtb3J5IGluc3RydWN0aW9uIGZvciBBUk02NApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODAwMjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDIsOCArMjAyLDEwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcHV0V2l0aFRoaXMoSlMK
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJs
ZSBpbnB1dCkKIHsKICAgICBpbnQgYXNJbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGlucHV0KTsKLSAg
ICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihhc0ludCkgPT0gaW5wdXQpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYXNJbnQpKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
ZG91YmxlPihhc0ludCkgPT0gaW5wdXQpIHsKKyAgICAgICAgaWYgKGFzSW50IHx8ICFzdGQ6OnNp
Z25iaXQoaW5wdXQpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihhc0ludCkpOworICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGlu
cHV0KSk7CiB9CiAK
</data>
<flag name="review"
          id="456181"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433830</attachid>
            <date>2021-07-19 15:44:25 -0700</date>
            <delta_ts>2021-07-19 15:44:25 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-228068.patch</filename>
            <type>text/plain</type>
            <size>2639</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODAwNTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA3LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBERkcncyBwYXJzZUludFJlc3VsdCgpIHNob3VsZCBjaGVjayBmb3IgbmVn
YXRpdmUgemVyby4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODA2OAorICAgICAgICByZGFyOi8vODA3ODg2MDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogc3RyZXNzL2RmZy1wYXJzZUludFJlc3VsdC1z
aG91bGQtY2hlY2stZm9yLW5lZ2F0aXZlLXplcm8uanM6IEFkZGVkLgorCiAyMDIxLTA3LTE5ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW5CeVN0
YXR1cyAvIEluQnlWYXJpYW50IHNob3VsZCB2aXNpdCBDYWNoZWFibGVJZGVudGlmaWVyCkluZGV4
OiBKU1Rlc3RzL3N0cmVzcy9kZmctcGFyc2VJbnRSZXN1bHQtc2hvdWxkLWNoZWNrLWZvci1uZWdh
dGl2ZS16ZXJvLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2RmZy1wYXJzZUludFJl
c3VsdC1zaG91bGQtY2hlY2stZm9yLW5lZ2F0aXZlLXplcm8uanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3MvZGZnLXBhcnNlSW50UmVzdWx0LXNob3VsZC1jaGVjay1mb3ItbmVnYXRp
dmUtemVyby5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBhc3Nl
cnRFcSh4LCB5KSB7CisgICAgaWYgKHggIT0geSkKKyAgICAgICAgdGhyb3cgIkZBSUxFRDogZXhw
ZWN0ICIgKyB5ICsgIiwgYWN0dWFsICIgKyB4OworfQorbm9JbmxpbmUoYXNzZXJ0RXEpOworCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGFzc2VydEVxKDEuMCAvIHBhcnNlSW50KCItMC4wIiksICIt
SW5maW5pdHkiKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwOyArK2kpCisgICAgdGVzdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODAwNTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDctMTkgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgorCisgICAgICAgIERGRydzIHBhcnNlSW50UmVzdWx0KCkgc2hvdWxkIGNoZWNr
IGZvciBuZWdhdGl2ZSB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI4MDY4CisgICAgICAgIHJkYXI6Ly84MDc4ODYwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgV2UgaGF2ZSB0byBjaGVjayBmb3Ig
bmVnYXRpdmUgemVybyBleHBsaWNpdGx5IGJlY2F1c2UgQysrIGV2YWx1YXRlcyAwLjAgPT0gLTAu
MAorICAgICAgICBhcyB0cnVlLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OnBhcnNlSW50UmVzdWx0KToKKwogMjAyMS0wNy0xOSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEluQnlTdGF0dXMg
LyBJbkJ5VmFyaWFudCBzaG91bGQgdmlzaXQgQ2FjaGVhYmxlSWRlbnRpZmllcgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODAw
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBw
dXRXaXRoVGhpcyhKUwogc3RhdGljIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcGFyc2VJ
bnRSZXN1bHQoZG91YmxlIGlucHV0KQogewogICAgIGludCBhc0ludCA9IHN0YXRpY19jYXN0PGlu
dD4oaW5wdXQpOwotICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGFzSW50KSA9PSBpbnB1dCkK
KyAgICBpZiAoTElLRUxZKHN0YXRpY19jYXN0PGRvdWJsZT4oYXNJbnQpID09IGlucHV0ICYmIChh
c0ludCB8fCAhc3RkOjpzaWduYml0KGlucHV0KSkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGFzSW50KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihpbnB1dCkpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>