)]}'
{
  "log": [
    {
      "commit": "c4706aa764f3ae68258ba60be6325a5662900362",
      "tree": "0cb6acd594f5be52299fabf4af8c51fc5136e032",
      "parents": [
        "7165d0d744e103b3f155fc9b5c40d0096ce09814"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Sep 06 05:51:41 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Sep 06 05:51:46 2021 +0200"
      },
      "message": "Sparse v0.6.4\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "7165d0d744e103b3f155fc9b5c40d0096ce09814",
      "tree": "bd8936fa01ce7a71cf74d9a39a69e8a3bd8a7ba3",
      "parents": [
        "cf144c91129257e806dbd5ff6f65a82df864fb93"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Sep 01 06:07:51 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Sep 01 06:07:51 2021 +0200"
      },
      "message": "Sparse v0.6.4-rc1\n"
    },
    {
      "commit": "cf144c91129257e806dbd5ff6f65a82df864fb93",
      "tree": "f847f758110366450d2171f8b7c106ef0b359f9f",
      "parents": [
        "f0e6938bffe0e21cde6e60ff63ed8877d4d04e26"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Sep 01 05:59:11 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Sep 01 06:06:20 2021 +0200"
      },
      "message": "Add release notes for incoming v0.6.4\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "f0e6938bffe0e21cde6e60ff63ed8877d4d04e26",
      "tree": "c6d824a6734fc07e2f3656394abd76c00e6e4bb5",
      "parents": [
        "9980026aa50cd1b0971d217575a77e92834b3fc1",
        "72d04aab864fa7b847a201ebfd229ce4842386e7"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Aug 02 18:41:03 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Aug 02 18:41:03 2021 +0200"
      },
      "message": "Merge branch \u0027schecker-fixes\u0027\n\n* small fixes for the symbolic checker\n"
    },
    {
      "commit": "72d04aab864fa7b847a201ebfd229ce4842386e7",
      "tree": "fe210a92953544a8de038200a47169c463bad93e",
      "parents": [
        "732bc04e6123bd742cc569c2b06ba23fbcae3898"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Jul 09 22:13:33 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jul 29 23:15:31 2021 +0200"
      },
      "message": "scheck: fix type of operands in casts\n\nCasts were using the target type for their operands.\n\nFix this by using the new helper mkivar() for them.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "732bc04e6123bd742cc569c2b06ba23fbcae3898",
      "tree": "e9b730abc3f01560915aa9125246c3b74fdb1a65",
      "parents": [
        "918e9a4cface92c0a2ccec9479ef1ff77d75f18d"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Jul 09 22:09:07 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jul 27 00:52:20 2021 +0200"
      },
      "message": "scheck: mkvar() with target or input type\n\nMost instructions have one associated type, the \u0027target type\u0027.\nSome, like compares, have another one too, the \u0027input type\u0027.\n\nSo, when creating a bitvector from an instruction, we need to specify\nthe type in some way.\n\nSo, create an helper for both cases: mktvar() and mkivar().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "918e9a4cface92c0a2ccec9479ef1ff77d75f18d",
      "tree": "b49964d3c54138e3f416cb62f456eb4db877f155",
      "parents": [
        "a8ebc7229abe00ccf77d287c1fff8c25743512f8"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Jul 09 22:04:58 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jul 27 00:52:20 2021 +0200"
      },
      "message": "scheck: constants are untyped\n\nin sparse, constants (PSEUDO_VALs) are not typed, so the same pseudo\ncan be used to represent 1-bit 0, 8-bit 0, 16-bit 0, ...\n\nThat\u0027s incompatible with the bit vectors used here, so we can\u0027t associate\na PSEUDO_VAL with its own bitvector like it\u0027s done for PSEUDO_REGs.\nA fresh one is needed for each occurrence (we could use a small table\nbut won\u0027t bother).\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "a8ebc7229abe00ccf77d287c1fff8c25743512f8",
      "tree": "c3df65927f2b33a96ce6c089a33c7b9662a0b583",
      "parents": [
        "0b0d8b197f1e3b76434b710f8320f8cdf14816a6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon May 17 01:17:03 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jul 27 00:52:20 2021 +0200"
      },
      "message": "scheck: ignore OP_NOP \u0026 friends\n\nSome instructions have no effects and so can just be ignored here.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "0b0d8b197f1e3b76434b710f8320f8cdf14816a6",
      "tree": "7ae3e736d6e6d50a57995528c486d49eb7e281df",
      "parents": [
        "15806a1f68178a278c7a297b163d5692fe71cbf2"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon May 17 01:13:32 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jul 27 00:52:20 2021 +0200"
      },
      "message": "scheck: better diagnostic for unsupported instructions\n\nWhen reporting an unsupported instruction, display the instruction\ntogether with the diagnostic message.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "9980026aa50cd1b0971d217575a77e92834b3fc1",
      "tree": "23703ff0b44b66868846f3d8a0f68481469e0e8e",
      "parents": [
        "8af2432923486c753ab52cae70b94ee684121080"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jul 27 00:23:32 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jul 27 00:23:32 2021 +0200"
      },
      "message": "fix missing itype in SEL(x, 0/1, 1/0) --\u003e (x \u003d\u003d/!\u003d 0)\n\nSince commit 226b62bc2ee4 (\"eval_insn: give an explicit type to compare\u0027s operands\")\nit\u0027s needed to set the operands\u0027 type of every compare instructions but\nit was missing in this case where a select is transformed into a compare.\n\nSo, add the missing type.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "8af2432923486c753ab52cae70b94ee684121080",
      "tree": "1f7935b649f2325b9480af5c679903a7cf5e9310",
      "parents": [
        "09ec74f6acaf6837e18157f5b9588bb08971aafb",
        "929b10d66002e85202f446ed7e0ad8ec4c01f637",
        "32f1c1c24386e9379a8a7b3148d876e0a7cf027e",
        "df7767c6c57284ec3deda589f3694d2170b21fd6",
        "99bf609861c3bc9ba313a81642988da92838c9e2",
        "94750498b1d3ef03fd78920b70e7330072dbb4ed"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Apr 19 05:43:29 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 20 05:35:39 2021 +0200"
      },
      "message": "Merge branches misc, cmp-pow2, optim-and-cmp, cmp-and-or and optim-cast-eval into next\n\n* no needs to use MARK_CURRENT_DELETED() for multi-jumps\n* canonicalize ((x \u0026 M) \u003d\u003d M) --\u003e ((x \u0026 M) !\u003d 0) when M is a power-of-2\n* simplify AND(x \u003e\u003d 0, x \u003c C) --\u003e (unsigned)x \u003c C\n* simplify TRUNC(x) {\u003d\u003d,!\u003d} C --\u003e AND(x,M) {\u003d\u003d,!\u003d} C\n* remove early simplification of casts during evaluation\n* but this back as simplificaion of TRUNC(NOT(x)) --\u003e NOT(TRUNC(x))\n"
    },
    {
      "commit": "94750498b1d3ef03fd78920b70e7330072dbb4ed",
      "tree": "3b31f4eac1903318fdc76bbd765a787167231313",
      "parents": [
        "98075702ca78ff79e568a6b8004ee5fad7b0bfbe"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Dec 17 01:39:43 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Apr 19 00:56:42 2021 +0200"
      },
      "message": "remove early simplification of casts during evaluation\n\nThe current code will simplify away some casts at evaluation time\nbut doesn\u0027t take in account some special cases:\n* (bool)~\u003cint\u003e  is not equivalent to ~(bool)\u003cint\u003e (anything not all 0 or 1)\n* (float)~\u003cint\u003e is not equivalent to ~(float)\u003cint\u003e which doesn\u0027t make sense.\n* (int)(float)\u003cint\u003e is not a no-op if the (float) overflows\n\nThis kind of simplification is better done on the IR where the different\nkind of casts correspond to distinct instructions.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "98075702ca78ff79e568a6b8004ee5fad7b0bfbe",
      "tree": "0e0db9ea6d88682b5efb0c469eb4a92f1fd06f98",
      "parents": [
        "e1f6c18b602e9d5c61100c57bf675484db6c8826"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Dec 17 01:43:53 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Apr 19 00:56:36 2021 +0200"
      },
      "message": "simplify TRUNC(NOT(x)) --\u003e NOT(TRUNC(x))\n\nThe goal is double:\n1) be able to do the NOT operation on the smaller type\n2) more importantly, give the opportunity to the TRUNC to\n   cancel with a previous ZEXT if there is one.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "99bf609861c3bc9ba313a81642988da92838c9e2",
      "tree": "db342d7d500b04e2029f175a87ac952401db6728",
      "parents": [
        "eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 13 14:03:20 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 23:45:41 2021 +0200"
      },
      "message": "TRUNC(x) {\u003d\u003d,!\u003d} C --\u003e AND(x,M) {\u003d\u003d,!\u003d} C\n\nIt\u0027s not 100% clear than this is indeed a simplification but:\n1) from a pure instruction count point of view, it doesn\u0027t make\n   things worst\n2) in most place where it applies, the masking is made redundant\n   and is thus eliminated\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "df7767c6c57284ec3deda589f3694d2170b21fd6",
      "tree": "ad444f1cd7ec2aa07f2e6c8d7b7e5654018e5ec3",
      "parents": [
        "28cd6d609ea460c6138f8cd17f89fc9885fb7dc2"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Feb 09 02:36:14 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 17:21:37 2021 +0200"
      },
      "message": "simplify AND(x \u003e\u003d 0, x \u003c C) --\u003e (unsigned)x \u003c C\n\nSuch compares with a signed value are relatively common and can be\neasily be simplified into a single unsigned compare. So, do it.\n\nNote: This simplification triggers only 27 times in a x86-64 defconfig\n      kernel. I expected more but I suppose it\u0027s because most checks\n      aren\u0027t done against a constant or are done with unsigned values.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "28cd6d609ea460c6138f8cd17f89fc9885fb7dc2",
      "tree": "f61fcccb21475bb526aded4eb391a6471aa5ba74",
      "parents": [
        "7ae82c3a41c71c977e409dd20679bc4aec19961c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Feb 09 02:30:40 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 17:21:37 2021 +0200"
      },
      "message": "add helper is_positive()\n\nAdd a small helper to test if a pseudo is a positive (\u003d non-negative)\nconstant (for a given bitsize).\n\nIt\u0027s meant to make some conditions more readable.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "7ae82c3a41c71c977e409dd20679bc4aec19961c",
      "tree": "47c7368fe10dda65b58b42caa27c4160a7857f2b",
      "parents": [
        "48eb2ca449b7f8e8e0684a2d92c8a1d0224861da"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 22:01:05 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 17:21:37 2021 +0200"
      },
      "message": "add testcases for AND(x \u003e 0, x \u003c\u003d C) --\u003e x u\u003c\u003d C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "48eb2ca449b7f8e8e0684a2d92c8a1d0224861da",
      "tree": "18fd21d390a3d696e77fe5e78233fcfc4b019aa2",
      "parents": [
        "eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 00:45:43 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 17:18:57 2021 +0200"
      },
      "message": "canonicalize constant signed compares toward zero\n\nCurrently, signed compares against a constant are canonicalized\ntoward the smallest possible constant. So, the following\ncanonicalization are done:\n\tx \u003c 256\t\t--\u003e x \u003c\u003d 255\n\tx \u003c -2047\t--\u003e x \u003c\u003d -2048\n\nThis has two advantages:\n1) it maximalizes the number of constants possible for a given bit size.\n2) it allows to remove all \u003c and all \u003e\u003d\n\nBut it has also a serious disadvantages: a simple comparison against\nzero, like:\n\tx \u003e\u003d 0\nis canonicalized into:\n\tx \u003e -1\n\nWhich can be more costly for some architectures if translated as such ,\nis also less readable than the version using 0 and is also sometimes\nquite more complicated to match in some simplification patterns.\n\nSo, canonicalize it using \u0027towards 0\u0027 / using the smallest constant\nin absolute value.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "09ec74f6acaf6837e18157f5b9588bb08971aafb",
      "tree": "49c33de81a5edc205f477fd1fb30cf36f14db28b",
      "parents": [
        "ee17130837d9cef3e587d6dea7533903c277718c",
        "8b89204e0d7e2caaaa03ff8ed79da5bf6f2e1b36",
        "190172adee54045651babb4a9ae79d7cb4c1b1ac"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:50:26 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 14:37:35 2021 +0200"
      },
      "message": "Merge branches \u0027fix-phisrc\u0027 and \u0027insert-last-insn\u0027 into memops-prep\n\n* fix and improve the check that protects try_to_simplify_bb()\n* fix remove_merging_phisrc() with duplicated CFG edges.\n"
    },
    {
      "commit": "e1f6c18b602e9d5c61100c57bf675484db6c8826",
      "tree": "d01e007c2434007fafb2d5260380edb31e6751d8",
      "parents": [
        "eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jan 02 10:25:52 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 18 13:11:43 2021 +0200"
      },
      "message": "add testcases for simplification of casts.\n\nand remove one that didn\u0027t made much sense.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "ee17130837d9cef3e587d6dea7533903c277718c",
      "tree": "db4d60869b0ad7aef4d45a1e9b40b86db7dc08cc",
      "parents": [
        "b91ba64904a6a05d619a27a17545163eac97c2ca"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 20 16:11:40 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:43:15 2021 +0200"
      },
      "message": "memops: we can kill addresses unconditionally\n\nIn rewrite_load_instruction(), if the load instruction is converted\ninto a phi-node, its address is then no more used and must be removed.\n\nHowever, this is only done when this address is not a symbol.\nThis was explicitly done in the following commit because of the problem\nof removing an element from the usage list while walking this list:\n   602f6b6c0d41 (\"Leave symbol pseudo usage intact when doing phi-node conversion.\")\n\nBut currently rewrite_load_instruction() is only used during memops\nsimplification where the usage list is not walked.\n\nSo, kill the address\u0027 usage unconditionally.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b91ba64904a6a05d619a27a17545163eac97c2ca",
      "tree": "0c8055ecc19bcff650e2ec022de156e9a41d006d",
      "parents": [
        "3de14a1edba826afa66840798ec260ec60f6ed49"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 20 15:42:19 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:43:15 2021 +0200"
      },
      "message": "memops: avoid using first_pseudo()\n\nThe loop in rewrite_load_instruction() uses first_pseudo() to not have\nto special case the first element.\n\nBut this slightly complicates further changes.\n\nSo, simply use a null-or-no-null test inside the loop to identify\nthis first element.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "3de14a1edba826afa66840798ec260ec60f6ed49",
      "tree": "d3639daa87c45bbe0156a4a99c6fdb853fb0a6c2",
      "parents": [
        "e016f0beb9bdbf87e5acabcd475b797c2fff4608"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 20 15:44:01 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:43:15 2021 +0200"
      },
      "message": "memops: do not mess up with phisource\u0027s source ident\n\nIn rewrite_load_instruction(), when testing if all phi-sources are\nthe same, the candidate is given an identifier if it hasn\u0027t one already.\nBut doing this inside this loop is strange:\n* the pseudo may, at the end, not be selected but is changed anyway\n* the identifier should be given either when the phi-source is created\n  or at the end of the loop if selected.\n\nSo, do not change the identifier inside the selection loop.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e016f0beb9bdbf87e5acabcd475b797c2fff4608",
      "tree": "bfbe72c272f668582f62e93264fa1137b3fed090",
      "parents": [
        "015aad879799020c4bb0da458a01bebc434aba14"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 20 16:20:44 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:43:15 2021 +0200"
      },
      "message": "memops: remove obsolete comment\n\nThe comment above rewrite_load_instruction(), about comparing phi-lists\nfor equality, was (most probably) written when there was some intention\nto do CSE on phi-nodes or phi-sources.\n\nHowever, such CSE is currently not an objective at all.\n\nSo, remove this comment.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "015aad879799020c4bb0da458a01bebc434aba14",
      "tree": "0cbfa28ea4dd53702a868b312f7ec08a09c51425",
      "parents": [
        "0dd7ffba2e72bb83012c6d6e8a5a98ed31c4168e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Feb 18 00:29:52 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:43:07 2021 +0200"
      },
      "message": "memops: find_dominating_parents()\u0027s generation is redundant\n\nfind_dominating_parents() has an argument \u0027generation\u0027 used\nto check if a BB has already been visited.\nBut this argument is not needed since this generation is also\nstored in the field ::generation of the current BB.\n\nSo, remove this argument.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "0dd7ffba2e72bb83012c6d6e8a5a98ed31c4168e",
      "tree": "372dc5f797f4ac3146da2f2a52080898b80faa2b",
      "parents": [
        "e19144ebc795f522a271763b0384610da792bd1a"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Feb 18 00:17:17 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 20:43:01 2021 +0200"
      },
      "message": "memops: dominates()\u0027s first arg is redundant\n\nThe first argument of dominates(), \u0027pseudo\u0027, is simply the \u0027src\u0027\npseudo of it\u0027s second argument, the load or store instruction.\n\nIt\u0027s thus not needed to give it in a separate argument.\n\nSo, remove this redundant argument, since it makes things\nslightly clearer.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e19144ebc795f522a271763b0384610da792bd1a",
      "tree": "f9d9418332d8fb54d993bd295d3d6ceba8c44d80",
      "parents": [
        "038c1f95e46b9ce6191f191b90b8ef2655f45c84",
        "23109ddefaadf1a476ea47d123994e5f073f701e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 16:05:34 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 16:05:34 2021 +0200"
      },
      "message": "Merge branch \u0027deadstore\u0027\n\n* memops: kill more dead stores\n"
    },
    {
      "commit": "038c1f95e46b9ce6191f191b90b8ef2655f45c84",
      "tree": "07d31bbd18ab6bc22407fac637c5cc3dd352272e",
      "parents": [
        "e70440a4d126430a3cc0228b1a5d2dfaae55a9fb",
        "75c5952aece63d5c90b2adfeaff4cb77e3a47520"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 16:03:02 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 16:03:02 2021 +0200"
      },
      "message": "Merge branch \u0027linear\u0027\n\n* linear: only allocate call instructions when needed\n"
    },
    {
      "commit": "e70440a4d126430a3cc0228b1a5d2dfaae55a9fb",
      "tree": "bce4259d9bf69d61229e764beeafb99f4b4929c1",
      "parents": [
        "bb4239aafe31493a395d7777de5b3c33ea06a98d",
        "787435784e6969365223cfc3bce9dc23855eb8f3"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 15:53:03 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 15:53:03 2021 +0200"
      },
      "message": "Merge branch \u0027untyped\u0027\n\n* TODO: add some notes about pseudos being typeless\n"
    },
    {
      "commit": "787435784e6969365223cfc3bce9dc23855eb8f3",
      "tree": "2b557d67a167c12898669f5a8c91a4312c30a709",
      "parents": [
        "2cd6d34e815a7442b0b113f395504131b3a92e77"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 10 20:55:15 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 15:52:10 2021 +0200"
      },
      "message": "TODO: add some notes about pseudos being typeless\n\nPseudos are untyped. It\u0027s usually OK because their type can nevertheless\nbe retrieved in a simple way. But it also complicates things and\nworse in some cases the type is completely lost.\n\nTell a bit more about it in the TODO file.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "bb4239aafe31493a395d7777de5b3c33ea06a98d",
      "tree": "0835acb4336044b006f5180616355879b1db7501",
      "parents": [
        "2cd6d34e815a7442b0b113f395504131b3a92e77",
        "15806a1f68178a278c7a297b163d5692fe71cbf2"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 15:14:26 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 15:14:26 2021 +0200"
      },
      "message": "Merge branch \u0027schecker\u0027\n\n* add a symbolic checker\n"
    },
    {
      "commit": "15806a1f68178a278c7a297b163d5692fe71cbf2",
      "tree": "b2fdbb4fbd4fde1e274747f6dcf8c7770a0af66b",
      "parents": [
        "2e3c2464ca3522fe0a6dfc93ea36c88cbe7bf117"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 14:50:03 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 14:50:51 2021 +0200"
      },
      "message": "scheck: predefine __SYMBOLIC_CHECKER__\n\nIt can be useful to use the same testcase for the symbolic checker\nand normal sparse (or test-linearize) processing.\n\nSo, there must be a mean to somehow ignore the assertions used\nfor the symbolic checker when it\u0027s not used (since these are otherwise\nnot known to sparse).\n\nResolve this by adding a predefine, __SYMBOLIC_CHECKER__, to the\nsymbolic checker.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "2e3c2464ca3522fe0a6dfc93ea36c88cbe7bf117",
      "tree": "bad98ff1c69a4e53c17324844c01771627a6d889",
      "parents": [
        "0b0805cf17aeb6a6cd0a7ed3f47ad8f0b4a3407b"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 23:36:32 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:43 2021 +0200"
      },
      "message": "scheck: support pre-conditions via __assume()\n\nA lot of simplifications are only valid when their variables\nsatisfy to some conditions (like \"is within a given range\" or\n\"is a power of two\").\n\nSo, allow to add such pre-conditions via new _assume() statements.\nInternally, all such preconditions are ANDed together and what is\nchecked is they imply the assertions:\n\tAND(pre-condition) implies assertion 1\n\t...\n\nNote: IIUC, it seems that boolector has a native mechanism for such\n      things but I\u0027m not sure if t can be used here.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "0b0805cf17aeb6a6cd0a7ed3f47ad8f0b4a3407b",
      "tree": "dd8b12f16d1b03c88ecca62e0d97a82bda389261",
      "parents": [
        "75e72f82c8645db0f8cf6954ce3beb18a00dee37"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 18:10:44 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:43 2021 +0200"
      },
      "message": "scheck: assert_const()\n\nSince, the symbolic checker check expressions at the ... symbolic\nlevel, this can be used to check if two expressions are equivalent\nbut not if this equivalence is effectively used.\n\nSo, add a new assertion (this time not at the symbolic level) to\ncheck if an expression which is expected to simplify to a constant\nis effectively simplified to this constant.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "75e72f82c8645db0f8cf6954ce3beb18a00dee37",
      "tree": "d5f9cc1a416b73f8131cf08fba98bbe773f974bf",
      "parents": [
        "d1ab4c40982ffcfadebf3155f498469aeb1355b0"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 18:08:33 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:43 2021 +0200"
      },
      "message": "scheck: allow multiple assertions\n\nWith the SMT solver used here, by default, once an expression is\nchecked it\u0027s kinda consumed by the process and can\u0027t be reused\nanymore for another check.\n\nSo, enable the incremental mode: it allows to call boolecter_sat()\nseveral times.\n\nNote: Another would be, of course, to just AND together all assertions\n      and just check this but then we would lost the finer grained\n      diagnostic in case of failure.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "d1ab4c40982ffcfadebf3155f498469aeb1355b0",
      "tree": "3f1706a1471099852e748c2604970edde8955d04",
      "parents": [
        "7a9fab6984f7bce3fd52809ecf6e21b79f115be3"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 18:03:58 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:43 2021 +0200"
      },
      "message": "scheck: assert_eq()\n\nTesting the equivalence of two sub-expressions can be done with\nwith a single assertion like __assert(A \u003d\u003d B).\n\nHowever, in some cases, Sparse can use the equality to simplify\nthe whole expression although it\u0027s unable to simplify one of\nthe two sub-expressions into the other.\n\nSo, add a new assertion, __assert_eq(), testing the equality of\nthe two expressions given in argument independently of each other.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "7a9fab6984f7bce3fd52809ecf6e21b79f115be3",
      "tree": "f2f9d729884c61e186ac2ad82751b4e354430646",
      "parents": [
        "4806f30a473ca70ffee3b10136f7ee8ea2b36f6f"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 00:07:40 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:43 2021 +0200"
      },
      "message": "scheck: add a symbolic checker\n\nSome instruction simplifications can be quite tricky and thus easy to\nget wrong. Often, they also are hard to test (for example, you can\ntest it with a few input values but of course not all combinations).\n\nI\u0027m used to validate some of these with an independent tool\n(Alive cfr. [1], [2]) which is quite neat but has some issues:\n1) This tool doesn\u0027t work with Sparse\u0027s IR or C source but it needs to\n   have the tests written in its own language (very close to LLVM\u0027s IR).\n   So it can be used to test if the logic of a simplification but\n   not if implemented correctly.\n2) This tool isn\u0027t maintained anymore (has some bugs too) and it\u0027s\n   successor (Alive2 [3]) is not quite as handy to me (I miss the\n   pre-conditions a lot).\n\nSo, this patch implement the same idea but fully integrated with\nSparse. This mean that you can write a test in C, let Sparse process\nand simplify it and then directly validate it and not only for\na few values but symbolically, for all possible values.\n\nNote: Of course, this is not totally stand-alone and depends on\n      an external library for the solver (Boolector, see [4], [5]).\n\nNote: Currently, it\u0027s just a proof of concept and, except the\n      included tests, it\u0027s only very slightly tested (and untested\n      with anything more complex than a few instructions).\n\n[1] https://blog.regehr.org/archives/1170\n[2] https://www.cs.utah.edu/~regehr/papers/pldi15.pdf\n[3] https://blog.regehr.org/archives/1722\n[4] https://boolector.github.io/\n[5] https://boolector.github.io/papers/BrummayerBiere-TACAS09.pdf\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "4806f30a473ca70ffee3b10136f7ee8ea2b36f6f",
      "tree": "c91b9d41f117359793f94194aed4b954112e1f59",
      "parents": [
        "f7eb2ea83b2ba26032ad0f9d216dda8780165b95"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 10 14:34:44 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:43 2021 +0200"
      },
      "message": ".gitignore is a bit too greedy\n\nThe current .gitignore specifies that the generated programs\nmust be ignored. Good.\n\nHowever, this is done by just specifying the name of the program\nwhich has the effect of having any files or directories with the\nsame name to be ignored too. This is not intended.\n\nFix this using the pattern \u0027/\u003cname\u003e\u0027 instead so that they match\nin the root folder.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "f7eb2ea83b2ba26032ad0f9d216dda8780165b95",
      "tree": "28b6b0bcdc377ddecc4013ac529b729c6a71c247",
      "parents": [
        "8fd2c0b489d3fe371081ceddb1637713a452eefd"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 10 00:00:18 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 13 18:25:38 2021 +0200"
      },
      "message": "builtin: define a symbol_op for a generic op acting on integer\n\nThis can be used to define some generic (polymorphic) builtin\nwith a signature like:\n\t\u003cname\u003e(int)\n\t\u003cname\u003e(T, T)\n\t\u003cname\u003e(int, T)\n\t\u003cname\u003e(int, T, long, T, ... T)\nwhere T is some integer type which will be instantiated at each call.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "75c5952aece63d5c90b2adfeaff4cb77e3a47520",
      "tree": "bf9e9ff666ee98614e1659a574e82f8320715f73",
      "parents": [
        "2cd6d34e815a7442b0b113f395504131b3a92e77"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 14:44:37 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 10 15:51:11 2021 +0200"
      },
      "message": "linear: only allocate call instructions when needed\n\nWhen linearizing a call expression, the corresponding instruction is\nallocated very early:\n- before the valdity are done\n- before the linearization is handled to one of the specific methods\nIn both case it means that the allocated instruction is not used.\n\nFix this by doing the allocation only once it\u0027s needed.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "8fd2c0b489d3fe371081ceddb1637713a452eefd",
      "tree": "0fbfa1f22887ae9d6f7cf20cb24444c5be550a4e",
      "parents": [
        "5e674421d5f144612a8d39cafae557bbfa7026fa"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 09 23:59:30 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 10 01:13:36 2021 +0200"
      },
      "message": "export declare_builtins()\n\nMake declare_builtins() extern so that it can be used from other files.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "2cd6d34e815a7442b0b113f395504131b3a92e77",
      "tree": "9f6191c9d40be12fab6a32d7b892e82e9859108e",
      "parents": [
        "6d5d9b420b2f0e86a01dc40524f31bd80f5ec3ee"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 04 21:28:43 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Apr 04 21:36:34 2021 +0200"
      },
      "message": "fix null-pointer crash with with ident same as one of the attributes\n\nmatch_attribute() will crash when the token has the same identifier\nas one of the attributes but is not an attribute. In this case,\nthe corresponding symbol_op will be null but this is not checked.\nThis seems to happen only with old-style declarations.\n\nFix this by adding the missing null-check.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "8b89204e0d7e2caaaa03ff8ed79da5bf6f2e1b36",
      "tree": "b8b7390e92c502e625d3af68268382637ec4c76a",
      "parents": [
        "78183a155b833ded168e9f72055a8a0f01a5ad46"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 26 00:41:22 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Apr 02 20:50:34 2021 +0200"
      },
      "message": "fix remove_merging_phisrc()\n\nThe current implementation of remove_merging_phisrc() can\u0027t work correctly\nwhen these phi-sources belong to a basic block with several children\nto the same target basic block (this happens commonly with OP_SWITCH).\n\nFix this by directly scanning the source basic block for the presence\nof any phi-source. Once identified, the processing is kept unchanged:\nremove these phi-sources if a sibling phi-source will \u0027overwrite\u0027 them\nin the target block.\n\nFixes: 2fdaca9e7175e62f08d259f5cb3ec7c9725bba68\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "6d5d9b420b2f0e86a01dc40524f31bd80f5ec3ee",
      "tree": "8f2e49a6bd75bd78c40d4bc1bd7048dbb796f411",
      "parents": [
        "c089cd2dc771e5bf175a390966e454df3334955d",
        "8862279754b9c6edf8e3170d30acd54410f6c760"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 30 01:15:48 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 30 01:15:48 2021 +0200"
      },
      "message": "Merge branch \u0027testsuite-extra\u0027 (early part)\n\n* testsuite: add option \u0027-r\u0027 to \u0027test-suite format\u0027\n"
    },
    {
      "commit": "78183a155b833ded168e9f72055a8a0f01a5ad46",
      "tree": "b0dc9f4b34dc0de74d84b30d79c7c9c5ace1ab42",
      "parents": [
        "dcb199646134ae0d264c72175a9ad8314f7836c8"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 28 13:52:38 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 28 16:07:29 2021 +0200"
      },
      "message": "better check validity of phi-sources\n\nTransformations made by try_to_simplify_bb() are invalid if\nthere isn\u0027t a one-to-one correspondence between the BB\u0027s parents\nand the phi-sources of the phi-node(s) in the BB.\n\nThis correspondence is currently checked by checking if the number\nof phi-sources and the number of parent are equal, but this is\nonly an approximation.\n\nChange this check into an exact one, using the fact that BBs in\nthe parent list and phi-sources in the phi_list are in the same order.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "dcb199646134ae0d264c72175a9ad8314f7836c8",
      "tree": "c87febf1aa5ec612713bf0c2ec8b280c7a13bfc6",
      "parents": [
        "b204ead75fc624928e783da8b6658f3a8a06871c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 28 16:07:29 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 28 16:07:29 2021 +0200"
      },
      "message": "correctly count phi arguments\n\nIn a phi-node,pseudo_list_size() can\u0027t be used for counting its arguments\nbecause VOIDs must be ignored.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b204ead75fc624928e783da8b6658f3a8a06871c",
      "tree": "dc174858248da8f92a13807ee055091a7a5f9c0f",
      "parents": [
        "7b5cc7b6135733cbbce121cc94fdc4a5400f46b5"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 26 00:41:22 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 26 00:41:22 2021 +0100"
      },
      "message": "additional testcase for remove_merging_phisrc()\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "23109ddefaadf1a476ea47d123994e5f073f701e",
      "tree": "c1016ec418e923d96c64a7909cc9dad566b01077",
      "parents": [
        "e0c12f39daec8b2d13fb84e80033f7d9052374c7"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Dec 01 23:46:56 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Mar 25 00:11:53 2021 +0100"
      },
      "message": "kill redundant stores (local)\n\nA store is called \u0027redundant\u0027 when the corresponding location\nalready contains the value that will be stored.\n\nThis patch removes such stores in the case where the memops\nwhich make them redundant is in the same basic block.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e0c12f39daec8b2d13fb84e80033f7d9052374c7",
      "tree": "2dae3f674fedb04fc38893f5a69b117fd574b533",
      "parents": [
        "fece51c37252e654cd46eda5fd12938b4be7deff"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Dec 01 00:10:35 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Mar 25 00:11:53 2021 +0100"
      },
      "message": "kill parent\u0027s dead stores too\n\nkill_dominated_stores() identify and remove dead stores\n(stores unneeded because the same location is overwritten later\nby another store) only when both stores are in the same basic block.\n\nSlightly improve this by also handling the case when the dead store\nis in a parent BB of the \"live\" store.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "fece51c37252e654cd46eda5fd12938b4be7deff",
      "tree": "7fd04e6182539a61027c12ea25ecbb930b4fcddf",
      "parents": [
        "74d910d66998c7c63f0b05bcac7287b46043c720"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Dec 01 00:00:43 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Mar 25 00:10:49 2021 +0100"
      },
      "message": "volatile stores are never dead\n\nso they shouldn\u0027t be killed.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "74d910d66998c7c63f0b05bcac7287b46043c720",
      "tree": "a62face3dc6fda9d48736b16f83ac6d58acb3016",
      "parents": [
        "92169b2aecd4794b7eee21f869228967245c87e2"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Dec 01 00:10:35 2020 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 24 22:15:22 2021 +0100"
      },
      "message": "extract try_to_kill_store() from kill_dominated_stores()\n\nMove the test/replace part of the store simplification in a\nseparate function so that it can be reused.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "92169b2aecd4794b7eee21f869228967245c87e2",
      "tree": "0b75d5b1d1f135db621f20b462564a958ddca0c9",
      "parents": [
        "d549d4d55eecb394e3f69314287f91e85b19e3e3"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jan 02 22:30:40 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 24 22:14:17 2021 +0100"
      },
      "message": "add testcases for stores simplifications\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "190172adee54045651babb4a9ae79d7cb4c1b1ac",
      "tree": "70218253b74a10d00c48122ab81927a6832401ba",
      "parents": [
        "4c6929edf09a9d751b22531d899f6b10a7af0106"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 15:40:57 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 16:08:19 2021 +0100"
      },
      "message": "let ssa_rename_phi() use insert_last_instruction()\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "4c6929edf09a9d751b22531d899f6b10a7af0106",
      "tree": "9779346972b15ec980b5356ed7fe6e8c2505b8eb",
      "parents": [
        "d1011daff5abcf5dd90d4b01be6e977bd23c6411"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 15:40:40 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 16:08:03 2021 +0100"
      },
      "message": "let find_dominating_parents() use insert_last_instruction()\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "d1011daff5abcf5dd90d4b01be6e977bd23c6411",
      "tree": "551d0e7305b274be8d1a61453187bb2b910cb51e",
      "parents": [
        "f5d1205420aa4323aef2c93bdad973104c11df4d"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 15:39:15 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 16:07:31 2021 +0100"
      },
      "message": "let insert_phis() use insert_last_instruction()\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "f5d1205420aa4323aef2c93bdad973104c11df4d",
      "tree": "cfb299dcb2a2e196a25a69c9e645573455c43b73",
      "parents": [
        "438393f490d6f5b773c9074880e3a8ae3b37f842"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 15:38:23 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 16:07:05 2021 +0100"
      },
      "message": "let insert_select() use insert_last_instruction()\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "438393f490d6f5b773c9074880e3a8ae3b37f842",
      "tree": "d00e0bc3548a6c0221b180ffd52f8359d5687cb2",
      "parents": [
        "9794908e1ad570920c470a8c817abbc3b195b876"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 15:37:53 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 16:05:22 2021 +0100"
      },
      "message": "replace add_instruction_to_end() by insert_last_instruction()\n\nadd_instruction_to_end() and insert_last_instruction() do exactly\nthe same thing but with the arguments in the opposite order.\n\nSo, replace add_instruction_to_end() by insert_last_instruction().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "9794908e1ad570920c470a8c817abbc3b195b876",
      "tree": "2a7ed48868340c9ba845eada6c194749e0dc78b9",
      "parents": [
        "7b5cc7b6135733cbbce121cc94fdc4a5400f46b5"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 20 18:18:23 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 15:58:14 2021 +0100"
      },
      "message": "add insert_last_instruction()\n\nIt\u0027s relatively common to have to add an instruction at the end of a BB.\nMore exactly, at the end but just before the terminator instruction.\nWhat is done for this is:\n1) remove the terminator\n2) add the new instruction\n3) add the terminator back\n\nThis is a bit tedious, need to declare a temporary variable for the\nterminator and, more generally, it\u0027s low-level details.\n\nSo, add an helper for doing this: insert_last_instruction().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "8862279754b9c6edf8e3170d30acd54410f6c760",
      "tree": "d037b42ad5b7f088999d03862ba5b177433c6954",
      "parents": [
        "5e674421d5f144612a8d39cafae557bbfa7026fa"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 13:39:27 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 21 13:45:39 2021 +0100"
      },
      "message": "testsuite: add option \u0027-r\u0027 to \u0027test-suite format\u0027\n\nBecause laziness is a virtue, add an option \u0027-r\u0027 to the \u0027format\u0027\nsubcommand of the testsuite to quickly create a test template for\nlinearized code which should just return 1.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "7b5cc7b6135733cbbce121cc94fdc4a5400f46b5",
      "tree": "8423965a37ccfb2581846fac894fd4754ab40e12",
      "parents": [
        "a45f9140a0c237f1b2f82e66595dba6426c5b598"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Feb 19 07:25:33 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "fix phisources during SWITCH-BR conversion\n\nLike for CBR-BR conversion, when a target BB containing one or several\nphi-nodes is removed from an OP_SWITCH, the corresponding phi-source\nmust be removed from the phi-node.\n\nHowever this is not done yet.\n\nChanging this by adding some code to convert_to_jump() to remove all\nphi-sources from the discarded targets if the converted instruction\nis an OP_SWITCH.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "a45f9140a0c237f1b2f82e66595dba6426c5b598",
      "tree": "973fe7bdeb3816c60da879f6d0fe21cc51bef353",
      "parents": [
        "c59ba8c0b5d699256651755eed6f421667751d33"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Feb 19 07:26:49 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "use convert_to_jump() when converting a CBR with same targets\n\nIf a conditional branch has identical targets, it should be\nconverted to a simple jump.\n\nThis is done but using its own code.\nChange this by using the existing convert_to_jump() instead.\nThis also allows any redundant phi-sources to be removed.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "c59ba8c0b5d699256651755eed6f421667751d33",
      "tree": "d800ed8089c7f72f44afcfc56f9ee702a3c8333c",
      "parents": [
        "752914c764b6d396c8e0a7c4ab207181edf7b00e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Feb 19 07:25:33 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "fix phisources during CBR-BR conversion\n\nWhen a parent is removed from a BB containing one or several phi-nodes,\nthe corresponding phi-sources must be removed from the phi-node.\n\nHowever this is not done and consequentially:\n* it becomes impossibly to correctly reason about the flow of values\n  through these phi-nodes.\n* simplifications are missed (e.g. if-conversion).\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "752914c764b6d396c8e0a7c4ab207181edf7b00e",
      "tree": "ae22911750a1e7ba5ea882d5fcf90f81d322665d",
      "parents": [
        "4ac342d1efdbeda4c8cd3b79d53ae6b15f1f5cfc"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Feb 19 07:24:35 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "add remove_phisources()\n\nWhen a parent is removed from a BB containing one or several phi-nodes,\nthe corresponding phi-sources become irrelevant and need to be removed\nfrom the phi-nodes.\n\nAdd an helper for doing this: remove_phisources().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "4ac342d1efdbeda4c8cd3b79d53ae6b15f1f5cfc",
      "tree": "3544e4e77215960a67a7dfc49a200016110ffb50",
      "parents": [
        "ffa92f53257da38844e9f6f7ffbd71a777c6e54c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 14 15:12:21 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "rename insert_branch() to convert_to_jump()\n\nSince the existing branch is now reused, nothing is inserted anymore.\n\nSo, rename this function to the more explanatory: convert_to_jump().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "ffa92f53257da38844e9f6f7ffbd71a777c6e54c",
      "tree": "b00120716b9392e1865d8ee4e4ff445ec73406b5",
      "parents": [
        "1331214c003027c7b8af0af9bb9d8e040f8e3b4e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 29 18:42:50 2020 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "let insert_branch() return a status\n\ninsert_branch() modifies the CFG and the usage of pseudos so these\nchanges must be, in a way or another, notify to the upper layers.\nCurrently this is done by setting \u0027repeat_phase\u0027 in the function\nitself.\n\nLet this function to also report the changes via its return value\nsince this is usually useful for the caller to know and tend to\nleaner code too.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "1331214c003027c7b8af0af9bb9d8e040f8e3b4e",
      "tree": "95628ce418fc7432e507ad92088fe9232b995420",
      "parents": [
        "b2dc8031654a536313fe77951ee04c74a3017e0b"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 29 18:49:54 2020 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "move insert_branch() to flow.c\n\nNow that insert_branch() doesn\u0027t need to allocate a new instruction,\nthere is no more reasons to have it defined in linearize.c\n\nSo move it to flow.c which is more concerned with CFG changes.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b2dc8031654a536313fe77951ee04c74a3017e0b",
      "tree": "d3fd2e6316d15640af487dea1534e58178b29848",
      "parents": [
        "701775cdf99d737aeaed00419eaff65d05ef1b57"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 29 18:49:54 2020 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "let insert_branch() reuse the terminating instruction\n\ninsert_branch() changes a switch or a conditional branch into a jump.\nThis is implemented by deleting the old instruction and allocating\nthe new one. This is not needed here since no reference to the\nold instruction is kept.\n\nSo, simply reuse the terminating instruction and change it.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "701775cdf99d737aeaed00419eaff65d05ef1b57",
      "tree": "3eb0a08055d6cd673d1ab835834e203556bea44e",
      "parents": [
        "f18c259989463f9a15270f3584bdeeaae4bd9fb0"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 29 18:42:50 2020 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "fold remove_parent() into insert_branch()\n\nFold remove_parent() into its only user, insert_branch(), since it\u0027s\nnow just a wrapper around remove_bb_from_list().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "f18c259989463f9a15270f3584bdeeaae4bd9fb0",
      "tree": "fa6962a54540ee5d882096ed90f2702425727d53",
      "parents": [
        "26353a45ce03553c176cab553c3df36844e439fc"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 29 18:42:50 2020 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "simplify remove_parent()\n\nremove_parent() is a simple wrapper around remove_bb_from_list()\nwhich also set REPEAT_CFG_CLEANUP if the list becomes empty.\nBut its only user, insert_branch(), doesn\u0027t need REPEAT_CFG_CLEANUP\nto be set.\n\nSo, simplify this wrapper by keeping only the call to remove_bb_from_list().\n"
    },
    {
      "commit": "26353a45ce03553c176cab553c3df36844e439fc",
      "tree": "3aa100882b875ead9d29b14c9868278416a1aa8a",
      "parents": [
        "52f02114bad02a2a705ecc3fe5904ff449196f50"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 29 18:22:50 2020 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "remove insert_branch() redundant arg\n\ninsert_branch()\u0027s first argument must be the BB of the instruction\ngiven in the second argument.\n\nSo, remove it from the argument and simply use insn-\u003ebb instead.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "52f02114bad02a2a705ecc3fe5904ff449196f50",
      "tree": "04558b308e2a11723b4c1f1e15723d1cd433d703",
      "parents": [
        "1bd9ba3272b269a43be02ee380576e77652a563a"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 17 00:00:23 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "add testcases to check if phi-sources from removed targets are removed too\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "1bd9ba3272b269a43be02ee380576e77652a563a",
      "tree": "8c3b3efd8c7eb2664a5f4e7e92a8d49aad7a20d1",
      "parents": [
        "5e674421d5f144612a8d39cafae557bbfa7026fa"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 16 23:18:00 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 19 23:56:44 2021 +0100"
      },
      "message": "Revert \"simplify CBR-CBR on the same condition\"\n\nThe commit 7cd2ce022575 (\"simplify CBR-CBR on the same condition\")\nadded a generalization of the existing CBR-CBR simplification\nusing the dominance tree.\n\nThe problem is that as soon as a change is made to the CFG, the\ndominance tree become invalid and should be rebuilt (which is costly\nto do for each CFG changes) or updated (which is quite complex).\n\nSo, for now, revert this commit.\n\nReverts: 7cd2ce022575fbd383bb39b54f1e0fa402919da2.\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "32f1c1c24386e9379a8a7b3148d876e0a7cf027e",
      "tree": "1c6c33187971dd095ae8d9c69bfcf4170c83bb11",
      "parents": [
        "eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Mar 11 01:34:19 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 13 11:26:11 2021 +0100"
      },
      "message": "canonicalize ((x \u0026 M) \u003d\u003d M) --\u003e ((x \u0026 M) !\u003d 0) when M is a power-of-2\n\nand same for its dual: ((x \u0026 M) !\u003d M) --\u003e ((x \u0026 M) \u003d\u003d 0)\n\nBeside the canonicalization itself, these simplifications are\nuseful because the compare against 0 can often be further\nsimplified (for example when it is used by OP_CBR or OP_SELECT).\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "c089cd2dc771e5bf175a390966e454df3334955d",
      "tree": "826abdf09752fd0c2bcbb7f9b2c2b26010e8656d",
      "parents": [
        "d549d4d55eecb394e3f69314287f91e85b19e3e3",
        "eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 12 01:06:54 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 12 01:09:54 2021 +0100"
      },
      "message": "Merge branches \u0027fix-ssa\u0027 and \u0027cmp-and-or\u0027 into next\n\n* fix SSA conversion of mismatched memops\n* simplify CMP(AND(x,M), C) and CMP(OR(x,M), C)\n"
    },
    {
      "commit": "929b10d66002e85202f446ed7e0ad8ec4c01f637",
      "tree": "a894453c272eb0b9eb27833dc111afa9f4717ce5",
      "parents": [
        "2cd6d34e815a7442b0b113f395504131b3a92e77"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Apr 17 14:43:56 2021 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:42:45 2021 +0100"
      },
      "message": "no needs to use MARK_CURRENT_DELETED() for multi-jumps\n\nMARK_CURRENT_DELETED() was added for the case(s) where an element\nmust be removed from the list but the address of the other elements\nmust not be changed. In this case of effectively removing the\nelement from it list, the element is \u0027marked\u0027 as deleted in the list\nand the list walking macros will later take this in account.\n\nHowever, this is never needed for multi-jumps.\n\nSo, use the usual DELETE_CURRENT_PTR() for them.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "eb4cdd21b7d0cedbbeff7f70e24473706ccce5a6",
      "tree": "85c89a68df73271a21e5ec6fe56c88bb22e402b2",
      "parents": [
        "a0709118c62cffdecc2ec34c624884287ef3c088"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 31 23:17:24 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:42:45 2021 +0100"
      },
      "message": "simplify (x | M) cmpu C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "a0709118c62cffdecc2ec34c624884287ef3c088",
      "tree": "6da54fd4a2be22a8b5a0b781fbbf285e27ae3a4e",
      "parents": [
        "2bfb96f9259583a798306df212799c3103ab0e34"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 31 23:16:25 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:42:45 2021 +0100"
      },
      "message": "simplify (x | M) cmps C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "2bfb96f9259583a798306df212799c3103ab0e34",
      "tree": "f94099e743a26e8b8ccd5abfc711073ff28bfddd",
      "parents": [
        "cbafd33d81b31159929cc484a908868f2b6cc5bc"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 31 15:22:56 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:42:45 2021 +0100"
      },
      "message": "simplify (x | M) {\u003d\u003d,!\u003d} C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "cbafd33d81b31159929cc484a908868f2b6cc5bc",
      "tree": "ddd8af2fea4df27e8ecf1b408397001c94b7c6f0",
      "parents": [
        "e5ac481d66869dae85367311056a613ed0fcdb00"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jan 04 00:20:06 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:42:45 2021 +0100"
      },
      "message": "simplify (x \u0026 M) {\u003d\u003d,!\u003d} C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e5ac481d66869dae85367311056a613ed0fcdb00",
      "tree": "e1c8f6a85b9f21f5117ab62c1d4a07983f81a6ca",
      "parents": [
        "3289d1c73b10b46bab66ac02096e911c3b5168d7"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 03 23:40:45 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:42:42 2021 +0100"
      },
      "message": "simplify (x \u0026 M) cmps 0\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "3289d1c73b10b46bab66ac02096e911c3b5168d7",
      "tree": "c8206d6490c6a31167bc483815b1595956a8543e",
      "parents": [
        "6f00b4edb2fb746b924db536519e31199eb57908"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 03 23:56:28 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:40:19 2021 +0100"
      },
      "message": "simplify (x \u0026 M) cmpu C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "6f00b4edb2fb746b924db536519e31199eb57908",
      "tree": "eb231b603ac05d0e9264d92a03b30a79b1960257",
      "parents": [
        "b9429057955ed194b072ca181d61c47c562ebcaa"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 03 23:19:38 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 22:40:18 2021 +0100"
      },
      "message": "simplify (x \u0026 M) cmps C\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b9429057955ed194b072ca181d61c47c562ebcaa",
      "tree": "b70f4218fb3240f7f4225b180062e587336c450f",
      "parents": [
        "520454ec595c50050740d9375047c897f1cf3339"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 31 14:51:33 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 15:27:19 2021 +0100"
      },
      "message": "add testcases for constant compares against AND/OR\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "520454ec595c50050740d9375047c897f1cf3339",
      "tree": "5b70a69738e113fb4ecc6076652c12e1a742f727",
      "parents": [
        "5e674421d5f144612a8d39cafae557bbfa7026fa"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 31 14:51:33 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Wed Mar 10 11:28:20 2021 +0100"
      },
      "message": "change testing of signed compares against SMIN or SMAX\n\nThese tests are written by testing if the comparisons are equal\nto their expected value: 0 or 1. So, a compare of a compare\nbut such compares of compare have their own simplification\nwhich defeats what\u0027s tested here.\n\nSo, rewrite the test to avoid such compares of compare.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "d549d4d55eecb394e3f69314287f91e85b19e3e3",
      "tree": "fdcb6e3d39a697baf4a9ad0e94ea1d4744f61dff",
      "parents": [
        "9713796abe30c441f34d9b28d0582ce6f61002fb"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 07 10:38:55 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 09 22:17:01 2021 +0100"
      },
      "message": "ssa: remove single store optimization\n\nIt\u0027s not clear if this is an optimization or not.\nSo, remove it.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "9713796abe30c441f34d9b28d0582ce6f61002fb",
      "tree": "ce2cc7d02e6489df81f0b0f643c636d17ad54210",
      "parents": [
        "d1239bab5bc931f14f4dc7c4c55aa66f34cc79b1"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 07 15:01:35 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 09 22:17:01 2021 +0100"
      },
      "message": "ssa: fix conversion with mismatched size or offset\n\nThe SSA conversion works under the assumption that all the memory\noperations on a given symbol always refer to the same object.\n\nSo, exclude the conversion of variables where:\n* memory operations do not always match in size or offset\n* there is an implicit integer/float conversion.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "d1239bab5bc931f14f4dc7c4c55aa66f34cc79b1",
      "tree": "c3a2a27734173889ef08d4fb0e013c55a861e11b",
      "parents": [
        "e528e0755d46344f07e44bfbb3f90477747925cf"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Feb 21 17:22:51 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 09 22:17:01 2021 +0100"
      },
      "message": "ssa: avoid SSA conversion of packed bitfields\n\nPacked bitfields are incompatible with the SSA conversion\nwhich works on the assumption that memory operations are done\non the whole symbol.\n\nSo, directly exclude packed bitfields from the SSA conversion.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e528e0755d46344f07e44bfbb3f90477747925cf",
      "tree": "1bc0e3f9913140523e0605fcb851d072ddd48f51",
      "parents": [
        "0603c7e28e8063dd8e56a7f89b7222971b9d4f34"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 06 23:34:21 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 09 22:17:01 2021 +0100"
      },
      "message": "ssa: the sparse set is not needed\n\nThe implementation of a \u0027sparse set without initialization\u0027 was\nsomehow needed during the initial design but it\u0027s not needed anymore.\n\nSo, remove the implementation and replace its use by the usual\nbb-\u003egeneration mechanism.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "0603c7e28e8063dd8e56a7f89b7222971b9d4f34",
      "tree": "1f97d0c4aefa2ea80485ffb49b609dd834c37959",
      "parents": [
        "5e674421d5f144612a8d39cafae557bbfa7026fa"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Mar 07 10:34:53 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Mar 09 22:16:50 2021 +0100"
      },
      "message": "ssa: add some testcases for mismatched memops\n\nThe SSA conversion is incorrect when the size or offset of the\nmemory operations doesn\u0027t match. It shouldn\u0027t be done at all.\n\nSo, add a few testcases for this.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "5e674421d5f144612a8d39cafae557bbfa7026fa",
      "tree": "1b93765b9b5ee0d132716f3888485024bf45a84a",
      "parents": [
        "1749410ac473e918dcab1ea5e4e9e682f0ee2fe0",
        "3caeefd911a54289bbf7d293289964239a6fed96"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Mar 08 01:36:42 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Mar 08 08:56:58 2021 +0100"
      },
      "message": "Merge branch \u0027uniq-phinode\u0027\n\n* phi-sources can only have a single user (or none)\n"
    },
    {
      "commit": "1749410ac473e918dcab1ea5e4e9e682f0ee2fe0",
      "tree": "066565f693ceb00ffa731590aad15ccb37bf44c9",
      "parents": [
        "e0f904856b3d665a84b4342b79967b97a3739545",
        "f94f4a89ff6f31384cdfe77b5084601e7de2a131"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Mar 08 01:29:27 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Mar 08 01:32:25 2021 +0100"
      },
      "message": "Merge branch \u0027ptrlist-generic\u0027\n\n* ptrlist: small API improvements\n\nThese improvements will be used by various incoming series.\nThanks to Ramsay Jones for finding a bunch of typos and\nsuggesting some improved phrasing.\n\n-- Luc\n"
    },
    {
      "commit": "3caeefd911a54289bbf7d293289964239a6fed96",
      "tree": "a7353efee7b502cb2c3792919fac4676787b8583",
      "parents": [
        "60c1f2706e30eacc29296e6cb5d9327c85a01340"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Apr 18 14:49:38 2017 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Mar 08 01:30:54 2021 +0100"
      },
      "message": "phi-sources can only have a single user (or none)\n\nCurrently, OP_PHISOURCES have a list as member, \u0027phi_users\u0027,\nthat should link to all phi-nodes using them but:\n*) phi-sources are never shared between phi-nodes\n*) this list is useless because it\u0027s only created during liveness\n   and not used after.\n\nSo, replace the list by a simple pointer to hold the unique phi-node\nusing it and keep this link updated during all its lifetime.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f94f4a89ff6f31384cdfe77b5084601e7de2a131",
      "tree": "724c674f4e79bedc5888dde4e1fa4d09fc81d221",
      "parents": [
        "c50f5272ea4275b3f79d2c71115f2be014ed11ee"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Feb 14 15:11:13 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Mar 08 01:19:14 2021 +0100"
      },
      "message": "ptrlist: change return value of linearize_ptr_list()/ptr_list_to_array()\n\nThe function linearize_ptr_list() is annoying to use because it\nreturns the number of elements put in the array. So, if you need\nto know if the list contained the expected number of entries,\nyou need to allocate an array with one extra entry and check\nthat the return value is one less than this size.\n\nSo, change the function to return the total number of entries\nin the list. In other words, the return value corresponds now to\nthe number of entries that could be copied if the size would be\nunlimited, much like it\u0027s done for snprintf().\nThe number of entries effectively copied stays, of course,\nlimited by the size specified for the array.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "c50f5272ea4275b3f79d2c71115f2be014ed11ee",
      "tree": "4105d6082ab4d884d994500998cd38972e4f73a3",
      "parents": [
        "a69f8d70d4979e482214d9604ab4223dc3a00ed6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Dec 29 17:51:03 2019 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 06 23:00:02 2021 +0100"
      },
      "message": "ptrlist: make linearize_ptr_list() generic\n\nThe ptrlist API has a function to copy the elements of a ptrlist\ninto an array but it\u0027s not typed and thus needs a wrapper (or casts)\nfor each type it\u0027s used for. Also, \u0027linearize\u0027 is confusing since\nthis is unrelated to Sparse\u0027s linearization.\n\nSimplify this by adding a generic (but type-safe) macro for this\nwith a more descriptive name: ptr_list_to_array()\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "a69f8d70d4979e482214d9604ab4223dc3a00ed6",
      "tree": "810b2d2a5733c2b6698eecaea55931836f75b3d2",
      "parents": [
        "6bd31037f468ca68c1fea5463d8ff786618467cd"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Feb 14 15:17:44 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 06 22:57:53 2021 +0100"
      },
      "message": "ptrlist: use ptr_list_nth() instead of linearize_ptr_list()\n\nSparse has a few extra checkers for some functions.\nThe one for memset has its own helper to retrieve its 3rd arguments.\n\nRemove this helper and use the generic ptr_list_nth() instead.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "6bd31037f468ca68c1fea5463d8ff786618467cd",
      "tree": "7f19b701f373dd5c488959523e74eddd765655f7",
      "parents": [
        "f909765ac1e826b7360775438c34f5401e80fca0"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Dec 29 17:51:03 2019 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 06 22:57:27 2021 +0100"
      },
      "message": "ptrlist: add pop_ptr_list()\n\nSome algorithms need a stack or a working list from which the\nlast element can be removed. The ptrlist API has a function to do\nthis but it\u0027s not typed and thus needs a wrapper for each type\nit\u0027s used for.\n\nSimplify this by adding a generic (but type-safe) macro for this\nwhile also giving it a nicer name: pop_ptr_list().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "f909765ac1e826b7360775438c34f5401e80fca0",
      "tree": "c6a2b4b31752fc2066a9b61af2f64b959df03afd",
      "parents": [
        "c20e29a930e01aa884911791bce08bc447bb0239"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Feb 14 15:25:03 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 06 22:57:10 2021 +0100"
      },
      "message": "ptrlist: change TYPEOF() into PTRLIST_TYPE()\n\nThe name of the macro TYPEOF() is too generic and doesn\u0027t explain\nthat it only returns the type of the pointers stored in ptrlists.\n\nSo, change the name to something more explicit: PTRLIST_TYPE().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "c20e29a930e01aa884911791bce08bc447bb0239",
      "tree": "df99802e4199e5a42d9fc883a14be34cf1eac997",
      "parents": [
        "eaceeafad39ade20c28b6634d30379763511c6e6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Dec 29 17:50:42 2019 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Mar 06 22:56:41 2021 +0100"
      },
      "message": "ptrlist: remove one pointer level from TYPEOF()\n\nThe macro TYPEOF() return the type of the addresses of the pointers\nstored in the list. That\u0027s one level too much in general.\n\nChange it to simply return the type of the stored pointers.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e0f904856b3d665a84b4342b79967b97a3739545",
      "tree": "6bcf9d5aaed252c9416c867e508942d54b97bb65",
      "parents": [
        "41222364c4a6ba9e515df5eee96ae6262735fdc6",
        "778de2bf52a2bed588d1653aaebe2cbd25f80eac"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 05 17:36:37 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Mar 05 17:36:37 2021 +0100"
      },
      "message": "Merge branch \u0027slice\u0027\n\n* slice: small reorg of OP_SLICE in preparation for some incoming changes\n"
    },
    {
      "commit": "41222364c4a6ba9e515df5eee96ae6262735fdc6",
      "tree": "c02561191ec65386b6386a59edbf26d4139330dd",
      "parents": [
        "acc5c29877eff97d2c8dec9319d27f9dcb699a69",
        "ebda8ec1c00447a6845ce50e9f272624948f810f"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Mar 04 00:22:42 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Mar 04 00:25:59 2021 +0100"
      },
      "message": "Merge branch \u0027path-norm\u0027\n\n* pre-processing: strip leading \"./\" from include paths\n"
    }
  ],
  "next": "acc5c29877eff97d2c8dec9319d27f9dcb699a69"
}
