<?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>126612</bug_id>
          
          <creation_ts>2014-01-07 18:35:45 -0800</creation_ts>
          <short_desc>CStack Branch: ARM64 DFG produces the wrong answer for X % 0</short_desc>
          <delta_ts>2014-01-08 08:11:37 -0800</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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126172</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965288</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-07 18:35:45 -0800</bug_when>
    <thetext>When running the test js/script-tests/dfg-mod-by-zero-and-then-or-zero-interesting-reg-alloc.js, the DFG generated code for ARM64 mod produces the wrong answer for X % 0.

The function foo is defined as:
function foo(c, d, a, b) {
    return (c + d) + ((a % b) | 0);
}

Here is partial test output, the transition to DFG generated code is where the errors start.
...
PASS foo(0, 0, 76, 0) is 0
PASS foo(0, 0, 77, 0) is 0
PASS foo(0, 0, 78, 0) is 0
PASS foo(0, 0, 79, 0) is 0
FAIL foo(0, 0, 80, 0) should be 0. Was 80.
FAIL foo(0, 0, 81, 0) should be 0. Was 81.
FAIL foo(0, 0, 82, 0) should be 0. Was 82.
FAIL foo(0, 0, 83, 0) should be 0. Was 83.
FAIL foo(0, 0, 84, 0) should be 0. Was 84.
FAIL foo(0, 0, 85, 0) should be 0. Was 85.
FAIL foo(0, 0, 86, 0) should be 0. Was 86.
...

We aren&apos;t properly handling the case of X % 0.  It should be NaN or 0 is we know we&apos;ll use the result as an Int32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965302</commentid>
    <comment_count>1</comment_count>
      <attachid>220583</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-07 19:37:28 -0800</bug_when>
    <thetext>Created attachment 220583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965339</commentid>
    <comment_count>2</comment_count>
      <attachid>220583</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-07 21:59:29 -0800</bug_when>
    <thetext>Comment on attachment 220583
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965489</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-01-08 08:11:37 -0800</bug_when>
    <thetext>Committed r161504: &lt;http://trac.webkit.org/changeset/161504&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220583</attachid>
            <date>2014-01-07 19:37:28 -0800</date>
            <delta_ts>2014-01-07 21:59:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>126612.patch</filename>
            <type>text/plain</type>
            <size>3499</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNDc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE0LTAxLTA3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENTdGFjayBCcmFuY2g6IEFSTTY0IERGRyBwcm9kdWNlcyB0aGUgd3JvbmcgYW5zd2VyIGZv
ciBYICUgMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI2NjEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgY2hlY2sgZm9yIHplcm8gZGl2aXNvci4gIElmIHNob3VsZENoZWNrT3ZlcmZsb3coKSBp
cyB0cnVlLCB0aGUgemVybyBkaXZpc29yCisgICAgICAgIGNoZWNrIGlzIGFuIG92ZXJmbG93IHNw
ZWN1bGF0aW9uIGNoZWNrLiAgSWYgc2hvdWxkQ2hlY2tPdmVyZmxvdygpIGlzIGZhbHNlLCBhCisg
ICAgICAgIHplcm8gZGl2aXNvciBjYXVzZXMgdXMgdG8gc2V0IHRoZSByZXN1bHQgdG8gMC4KKwor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZCk6CisKIDIwMTQtMDEtMDcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSB0cnVuayByMTYxNDY1LgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDE2MTQzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDc2LDYgKzM0NzYsMTcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICBHUFJSZWcgcXVv
dGllbnRUaGVuUmVtYWluZGVyR1BSID0gcXVvdGllbnRUaGVuUmVtYWluZGVyLmdwcigpOwogICAg
ICAgICBHUFJSZWcgbXVsdGlwbHlBbnN3ZXJHUFIgPSBtdWx0aXBseUFuc3dlci5ncHIoKTsKIAor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKKyAgICAgICAgCisgICAgICAgIGlm
IChzaG91bGRDaGVja092ZXJmbG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRl
c3QzMihKSVRDb21waWxlcjo6WmVybywgZGl2aXNvckdQUikpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlbm9taW5hdG9yTm90WmVybyA9IG1faml0LmJy
YW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9uWmVybywgZGl2aXNvckdQUik7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKGRpdmlzb3JHUFIsIHF1b3RpZW50VGhlblJlbWFpbmRlckdQUik7CisgICAg
ICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgZGVub21pbmF0
b3JOb3RaZXJvLmxpbmsoJm1faml0KTsKKyAgICAgICAgfQorCiAgICAgICAgIG1faml0LmFzc2Vt
YmxlcigpLnNkaXYocXVvdGllbnRUaGVuUmVtYWluZGVyR1BSLCBkaXZpZGVuZEdQUiwgZGl2aXNv
ckdQUik7CiAgICAgICAgIC8vIEZJWE1FOiBJdCBzZWVtcyBsaWtlIHRoZXJlIGFyZSBjYXNlcyB3
aGVyZSB3ZSBkb24ndCBuZWVkIHRoaXM/IFdoYXQgaWYgd2UgaGF2ZQogICAgICAgICAvLyBhcml0
aE1vZGUoKSA9PSBBcml0aDo6VW5jaGVja2VkPwpAQCAtMzQ5Miw2ICszNTAzLDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZAogICAgICAgICAgICAgbnVtZXJhdG9y
UG9zaXRpdmUubGluaygmbV9qaXQpOwogICAgICAgICB9CiAKKyAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisgICAgICAgIAogICAgICAgICBpbnQzMlJlc3VsdChxdW90aWVudFRoZW5SZW1haW5k
ZXJHUFIsIG5vZGUpOwogI2VsaWYgQ1BVKEFSTTY0KQogICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKQEAgLTM1MDIsNiArMzUxNSwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhNb2QoTm9kCiAgICAgICAgIEdQUlJlZyBxdW90aWVudFRoZW5SZW1haW5kZXJHUFIg
PSBxdW90aWVudFRoZW5SZW1haW5kZXIuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBtdWx0aXBseUFu
c3dlckdQUiA9IG11bHRpcGx5QW5zd2VyLmdwcigpOwogCisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBkb25lOworICAgIAorICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2Rl
LT5hcml0aE1vZGUoKSkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIGRp
dmlzb3JHUFIpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBkZW5vbWluYXRvck5vdFplcm8gPSBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Ok5v
blplcm8sIGRpdmlzb3JHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShkaXZpc29yR1BSLCBx
dW90aWVudFRoZW5SZW1haW5kZXJHUFIpOworICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQu
anVtcCgpKTsKKyAgICAgICAgICAgIGRlbm9taW5hdG9yTm90WmVyby5saW5rKCZtX2ppdCk7Cisg
ICAgICAgIH0KKwogICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5zZGl2PDMyPihxdW90aWVudFRo
ZW5SZW1haW5kZXJHUFIsIGRpdmlkZW5kR1BSLCBkaXZpc29yR1BSKTsKICAgICAgICAgLy8gRklY
TUU6IEl0IHNlZW1zIGxpa2UgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHdlIGRvbid0IG5lZWQgdGhp
cz8gV2hhdCBpZiB3ZSBoYXZlCiAgICAgICAgIC8vIGFyaXRoTW9kZSgpID09IEFyaXRoOjpVbmNo
ZWNrZWQ/CkBAIC0zNTE4LDYgKzM1NDIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhNb2QoTm9kCiAgICAgICAgICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKCZtX2ppdCk7
CiAgICAgICAgIH0KIAorICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKwogICAgICAgICBpbnQz
MlJlc3VsdChxdW90aWVudFRoZW5SZW1haW5kZXJHUFIsIG5vZGUpOwogI2Vsc2UgLy8gbm90IGFy
Y2hpdGVjdHVyZSB0aGF0IGNhbiBkbyBpbnRlZ2VyIGRpdmlzaW9uCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cg==
</data>
<flag name="review"
          id="244326"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>