)]}'
{
  "commit": "3db020600d47180dc097f405d1dd7cfcafe24d43",
  "tree": "ba586ab98e249a4938c58964d355b249bed03d49",
  "parents": [
    "7decbb57670c3c0f6136be00456fe9c8a41f7aed"
  ],
  "author": {
    "name": "Aldy Hernandez",
    "email": "aldy@quesejoda.com",
    "time": "Tue Jul 14 17:27:25 2026 +0000"
  },
  "committer": {
    "name": "Aldy Hernandez",
    "email": "aldy@quesejoda.com",
    "time": "Mon Aug 03 15:08:19 2026 +0200"
  },
  "message": "[frange] Implement set_nonzero and nonzero_p.\n\nExcluding an interval is now expressible, and excluding zero is just\nthe [-0.0, +0.0] case of it, so say so.\n\nFor some stupid historical reason which I can\u0027t remember, the irange\nand prange nonzero_p() predicates returns true only for ~[0,0], so\neven [5,5] returns false.  When we want to test whether a range\ncontains a zero, we usually use the contains_p() idiom.  I think this\nis idotic, but perhaps there is a reason for it.\n\nI\u0027ve implemented the frange version the same way, with the wrinkle\nthat the constructor for ~[-0.0, +0.0] includes the possibility of\n+-NAN, which means that nonzero_p() must ignore the NAN bits,\notherwise anything but a strict ~[-0.0, +0.0] +-NAN would return\nfalse.  For example, this:\n\n\tx \u003d frange(0.0, VR_ANTI_RANGE);\n\tx.clear_nan();\n\tx.nonzero_p();\t\u003c-- would return false\n\nTested on ppc64le Linux: regstrap and LAPACK.  Surprisingly there are\nno changes to generated output in my Fortran files, presumably because\nintersect/union are enough to fold inequalities away, and also because\nthere are no callers to nonzero_p() for frange.  Every nonzero_p()\ncall is guarded by prange or irange checks, but it\u0027s nice to\nimplement these since they are pure virtuals from the base vrange\nclass.\n\ngcc/ChangeLog:\n\n\t* value-range.cc (frange::set_nonzero): Implement.\n\t(frange::nonzero_p): Implement.\n\t(range_tests_excluding): Test set_nonzero and nonzero_p.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b4c097343d93b88f2985655bc68fea67128007dc",
      "old_mode": 33188,
      "old_path": "gcc/value-range.cc",
      "new_id": "69d89f342272a938ca187f26ed1898595ae6db7e",
      "new_mode": 33188,
      "new_path": "gcc/value-range.cc"
    }
  ]
}
