)]}'
{
  "log": [
    {
      "commit": "7e5f1c2eba1426e414698071dd0de7d039eb385d",
      "tree": "3283d90de70f27392955de5a59626309f31fff8a",
      "parents": [
        "658ee8e0f63121c5029d91b4d5df169c6ddfcbb8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 16:43:05 2022 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 16:43:05 2022 -0700"
      },
      "message": "Don\u0027t remove MOD_SPECIFIER from \u0027bitwise\u0027 types\n\nI\u0027m sure there was some reason that was done, but it\u0027s trivially broken,\nand means that the signedness bits are cleared.\n\nIn particular, it means that MOD_UNSIGNED is dropped off a \u0027bitwise\u0027\ntype, and this trivial test-case shows the resulting breakage:\n\n\ttypedef unsigned int __attribute__((bitwise)) le32;\n\n\tstatic long test(void)\n\t{\n\t        return (le32) -1 \u003c\u003d (le32) 0;\n\t}\n\nand without the MOD_UNSIGNED on the bitwise type, this will end up as a\nsigned compare and return true (1):\n\n\t[torvalds@ryzen sparse]$ ./test-linearize t.c\n\ttest:\n\t.L0:\n\t\t\u003centry-point\u003e\n\t\tret.64      $1\n\nwhen it clearly should return false (0).\n\nAt the same time this bit masking was very clearly intentional, and goes\nall the way back to the original bitwise support in commit 032f492a\n(\"[PATCH] __attribute__((bitwise))\"), so there is probably some very\nreal reason for it despite the above obvious failure.\n\nIt\u0027s entirely possible that the real issue is that our signedness tests\nare very lazy, and just look at\n\n\texpr-\u003ectype-\u003ectype.modifiers \u0026 MOD_UNSIGNED\n\nwhen it\u0027s very possible that they should simply drill deeper into the\ntype, and we should just use our is_signed_type() helper everywhere,\ninstead of just looking at the top-level \u0027modifiers\u0027 value.\n\nBut we do that \u0027look at modifiers directly\u0027 quite a _lot_.\n\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "658ee8e0f63121c5029d91b4d5df169c6ddfcbb8",
      "tree": "02b4d677062252ce1f8c3ff21f9669042cc1f94d",
      "parents": [
        "18f17cde1e9835bb301e4ca64e0898166b155c90"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 16:11:27 2022 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 16:11:27 2022 -0700"
      },
      "message": "unrestricted values are unrestricted even after a cast\n\nThis isn\u0027t as tight as it should be, but it basically treats the special\nunrestricted constants (zero and all ones) as unrestricted values even\nafter they have been explicitly cast to teh restricted type.\n\nAnd yes, this should actually check that type matches too, but I think\nall the cases that care will warn about the types not matching\nseparately anyway.\n\nThis is the quick hack.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18f17cde1e9835bb301e4ca64e0898166b155c90",
      "tree": "23ebbd20b80dc718b17165e7afb3687aecf911b1",
      "parents": [
        "d618d8e6043e229de0358b24bc793ef10e3e041b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 12:34:27 2022 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 12:34:27 2022 -0700"
      },
      "message": "allow restricted ordered compares with unrestricted values\n\nIt\u0027s fine to order bitwise entities wrt the special values that have all\nbits clear or all bits set.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d618d8e6043e229de0358b24bc793ef10e3e041b",
      "tree": "470df5b66c81ceaedf56cbda9fca3a1397dee483",
      "parents": [
        "dbaf1d1fe95efa2c2d9360a09a76e0e94b7bee85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 11:44:32 2022 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 11:44:32 2022 -0700"
      },
      "message": "bitwise: allow all-bits-set as a restricted value\n\nWe\u0027ve always allowed zero (\"no bits set\") as a special case for bitwise\nrestricted types.  For the exact same reason we should allow the \"all\nbits set\" case, but it was just harder to test for, since that case\nwasn\u0027t just a simple constant value.\n\nThe previous commit now made it a simple constant value, and we can\neasily handle that case too.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbaf1d1fe95efa2c2d9360a09a76e0e94b7bee85",
      "tree": "a7eac41c8a1af91957f11ec591ed7de87e379ea3",
      "parents": [
        "d277dd67844973e8c81c25a7016b0cdc86d41766"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 11:38:27 2022 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 23 11:38:27 2022 -0700"
      },
      "message": "simplify signed constants early\n\nA constant like \u0027-5\u0027 isn\u0027t actually a \"constant\" in the C parser, it\nends up being an expression that is the negation of the constant 5.\n\nThat\u0027s very inconvenient for the bitwise type evaluation that wants to\ntreat a constant with all bits set as a special case (exactly the same\nway zero - \"all bits clear\" - is a special case).\n\nFor the same reason, we also want to handle \"~0\" early.\n\nSo make the constant simplification case for these cases available\nearly, turning these trivial \"preop of a simple constant\" into simple\nconstants at type evaluation time.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d277dd67844973e8c81c25a7016b0cdc86d41766",
      "tree": "e21c663f092a1d2fab786cb95f15c107ff38379c",
      "parents": [
        "ce1a6720f69e6233ec9abd4e9aae5945e05fda41"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 30 09:34:10 2022 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 22 15:13:56 2022 -0700"
      },
      "message": "add \"conditional context increment\" model\n\nUse a negative output parameter to the \"context\" attribute to say that\nthe context is increased conditionally.\n\nUseful for \"trylock()\" kinds of functions that return success if the\nlock operation was successful.\n\nThis is what the kernel commit 4a557a5d1a61 (\"sparse: introduce\nconditional lock acquire function attribute\") started doing for\nrefcount_dec_and_lock() and friends.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce1a6720f69e6233ec9abd4e9aae5945e05fda41",
      "tree": "c26e1e0d39f0d0f525848a72a72d8d3c032e197c",
      "parents": [
        "0e1aae55e49cad7ea43848af5b58ff0f57e7af99",
        "d42df42ec5a5f0ac7e58bfbfa6ceadd706b5517f"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:16:17 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:16:17 2022 +0200"
      },
      "message": "Merge branches \u0027unreplaced\u0027 and \u0027inline\u0027\n\n* fix \"unreplaced\" warnings caused by using typeof() on inline functions\n* cleanup related to inlining of variadic functions\n"
    },
    {
      "commit": "d42df42ec5a5f0ac7e58bfbfa6ceadd706b5517f",
      "tree": "18ffe4b93eec905205041d724b8ab40c96f0a3d9",
      "parents": [
        "1777fe6b3ce8359b49d133924f1488ce0b0cc628"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jun 25 18:05:52 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:13:20 2022 +0200"
      },
      "message": "inline: free symbol list after use\n\nWe usually don\u0027t free allocated memory because it\u0027s not known\nwhen the allocated objects aren\u0027t used anymore.\n\nBut here it\u0027s pretty obvious, so free this symbol list.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "1777fe6b3ce8359b49d133924f1488ce0b0cc628",
      "tree": "a72d0fc2728d35736e3f1e58f31cb8ba094d59fe",
      "parents": [
        "b6b0d32a94a7ae21ac28be762be8ad50b092b177"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jun 25 15:26:04 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:13:20 2022 +0200"
      },
      "message": "inline: allocate statement after guards\n\nIn inline_function(), the statement that will correspond to the\ninlined code is allocated in the function declaration but then\nit\u0027s checked if the function can be allocated or not.\n\nThis is not much memory and the checks should succeed most of the time\nbut it\u0027s clearer if the statement is allocated after the checks.\n\nSo, move the allocation after the checks.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b6b0d32a94a7ae21ac28be762be8ad50b092b177",
      "tree": "f69b841c022b132ffb8316fa65d2ef37897ea776",
      "parents": [
        "ec2e9b554d4799633ff195106280a8146647db5b"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jun 25 15:25:19 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:13:07 2022 +0200"
      },
      "message": "inline: avoid needless intermediate vars\n\nIn inline_function(), we need to iterate over the parameters\nand the (effective) arguments. An itermediate variable is used for\neach: \"name_list\" and \"arg_list\".\n\nThese confuse me a lot (especially \"name_list\", \"param_list\" would\nbe much more OK) and are just used once.\n\nSo, avoid using an intermediate variable for these.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "ec2e9b554d4799633ff195106280a8146647db5b",
      "tree": "daec3ab1ed894a8e647848b62f8ebfaf05b2bb21",
      "parents": [
        "fd3f7de6113aebe927d9bfff0f485e48a6edf68e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jun 25 15:27:17 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:12:49 2022 +0200"
      },
      "message": "inline: declaration of the variadic vars is useless\n\nWhen inlining a function call, the arguments of this call must\nsomehow be assigned to the names used in the function definition.\nThis is done via a STMT_DECLARATION associated to the top\nSTMT_COMPOUND which now correspond to the inlined code.\n\nThis is perfectly fine for the normal case of non-variadic function\nbut when inlining a variadic function there is no corresponding name\nto assign the non-fixed arguments to (such arguments must either be\nnot used at all or copied via __builtin_va_arg_pack()). What\u0027s then\nhappening is essentially that these variables are self-assigned.\nNot Good.\n\nThis seems to be relatively harmless but is confusing.\nSo only put the fixed/named arguments in the declaration list.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "fd3f7de6113aebe927d9bfff0f485e48a6edf68e",
      "tree": "65233a6f0e9fad30e37546e3554e6f8e083930c8",
      "parents": [
        "102baa11391d48e5da57519df53b7b8d7d751887"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Jun 25 11:34:21 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 27 12:09:55 2022 +0200"
      },
      "message": "inline: comment about creating node of node on variadics\n\nWhen inlining a variadic function the extra arguments are\nadded in the declaration list as SYM_NODE but these arguments\ncan already be SYM_NODEs.\n\nSparse doesn\u0027t support everywhere such nested nodes (they must\nbe merged) but in this case it\u0027s fine as the node will be merged\nwhen evaluated.\n\nAdd a comment telling the situation is fine.\nAlso, move the code to where the variadic arguments are handled\nsince the fixed one will be anyway directly overwritten.\n\nNote: Sparse doesn\u0027t really support inlining of variadic functions\n      but is fine when the arguments are not used (and such cases\n      occur in the kernel).\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "102baa11391d48e5da57519df53b7b8d7d751887",
      "tree": "774c2797c2216e2a9f98aca4c8c8ae52a060b0ed",
      "parents": [
        "4880bd1999feb9276faacd9a79647b53b6ffe8be"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 26 01:11:05 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 26 14:52:26 2022 +0200"
      },
      "message": "inline: add testcases for inlining of variadics\n\nInlining of variadic functions needs some special cases.\nAdd some testcases for this.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "0e1aae55e49cad7ea43848af5b58ff0f57e7af99",
      "tree": "4139644cb4f88995d9b6fff5474f5e9935c57123",
      "parents": [
        "4880bd1999feb9276faacd9a79647b53b6ffe8be"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jun 23 23:44:44 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri Jun 24 18:45:42 2022 +0200"
      },
      "message": "fix \"unreplaced\" warnings caused by using typeof() on inline functions\n\nCurrently, sparse do all its inlining at the tree level, during\nconstant expansion. To not mix-up the evaluation of the original\nfunction body in case the address of an inline function is taken or\nwhen the function can\u0027t otherwise be inlined, the statements and\nsymbols lists of inline functions are kept in separated fields.\nThen, if the original body must be evaluated it must first be\n\u0027uninlined\u0027 to have a copy in the usual fields.\n\nThis make sense when dealing with the definition of the function.\nBut, when using typeof() on functions, the resulting type doesn\u0027t\nrefer to this definition, it\u0027s just a copy of the type and only\nof the type. There shouldn\u0027t be any reasons to uninline anything.\nHowever, the distinction between \u0027full function\u0027 and \u0027type only\u0027\nis not made during evaluation and the uninlining attempt produce\na lot of \"warning: unreplaced symbol \u0027...\u0027\" because of the lack\nof a corresponding definition.\n\nFix this by not doing the uninlining if the symbol lack a definition.\n\nNote: It would maybe be more appropriate for EXPR_TYPE to use\n      a stripped-own version of evaluate_symbol() doing only the\n      examination of the return and argument types, bypassing the\n      attempt to uninline the body and evaluate the initializer and\n      the statements since there is none of those for an EXPR_TYPE.\n\nLink: https://lore.kernel.org/all/202206191726.wq70mbMK-lkp@intel.com\nReported-by: kernel test robot \u003clkp@intel.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "4880bd1999feb9276faacd9a79647b53b6ffe8be",
      "tree": "2afe45d8d6ed1d161352ba7f198715b296fade88",
      "parents": [
        "9212270048c3bd23f56c20a83d4f89b870b2b26e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jun 14 01:43:12 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jun 14 02:08:25 2022 +0200"
      },
      "message": "predefine __ATOMIC_ACQUIRE \u0026 friends as weak\n\nIn kernel\u0027s arch/mips/Makefile the whole content of gcc\u0027s -dM is used\nfor CHECKFLAGS. This conflict with some macros also defined internally:\n\tbuiltin:1:9: warning: preprocessor token __ATOMIC_ACQUIRE redefined\n\tbuiltin:0:0: this was the original definition\n\nFix this by using a weak define for these macros.\n\nReported-by: Randy Dunlap \u003crdunlap@infradead.org\u003e\nReported-by: kernel test robot \u003clkp@intel.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "9212270048c3bd23f56c20a83d4f89b870b2b26e",
      "tree": "3785b539c4787497f38770cd6fbc3b56afe226ba",
      "parents": [
        "29083a76efa600b02d30f32d0393ae53e37887f8",
        "53e04b3b780bbcf2dd3eb7990c17414742bbfef9"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jun 09 11:11:09 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jun 09 11:11:09 2022 +0200"
      },
      "message": "Merge branches \u0027cgcc-dash-x\u0027 and \u0027fixes\u0027\n\n* cgcc: do not die on \u0027-x assembler\u0027\n* fix crash when inlining casts of erroneous expressions\n- allow show_token() on TOKEN_ZERO_IDENT\n"
    },
    {
      "commit": "53e04b3b780bbcf2dd3eb7990c17414742bbfef9",
      "tree": "4d270f603f533506d38f8b00c4cac3c7bb426c58",
      "parents": [
        "e44f724a5ce007ad789d4688a37d03c4845032c0"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jun 07 14:22:13 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jun 09 11:06:53 2022 +0200"
      },
      "message": "allow show_token() on TOKEN_ZERO_IDENT\n\nTOKEN_ZERO_IDENTs are created during the evaluation of pre-processor\nexpressions but which otherwise are normal idents and  were first tokenized\nas TOKEN_IDENTs.\n\nAs such, they could perfectly be displayed by show_token() but are not.\nSo, in error messages they are displayed as \"unhandled token type \u00274\u0027\",\nwhich is not at all informative.\n\nFix this by letting show_token() process them like usual TOKEN_IDENTs.\nIdem for quote_token().\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e44f724a5ce007ad789d4688a37d03c4845032c0",
      "tree": "5323db16e47c5b9f4b89b4d7c39f0351358877d5",
      "parents": [
        "b3cf30ba5b47dfa7414416fe3bc5ae34db6065e7"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 06 23:49:14 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue Jun 07 14:52:37 2022 +0200"
      },
      "message": "fix crash when inlining casts of erroneous expressions\n\nSparse do inlining very early, during expansion, just after (type)\nevaluation and before IR linearization, and is done even if some\nerrors have been found. This means that the inlining must be robust\nagainst erroneous code.\n\nHowever, during inlining, a cast expression is always dereferenced and\na crash will occur if not valid (in which case it should be null).\n\nFix this by checking for null cast expressions and directly returning\nNULL, like done for the inlining of the other invalid expressions.\n\nLink: https://lore.kernel.org/r/e42698a9-494c-619f-ac16-8ffe2c87e04e@intel.com\nReported-by: kernel test robot \u003clkp@intel.com\u003e\nReported-by: Yafang Shao \u003claoar.shao@gmail.com\u003e\nReported-by: Yujie Liu \u003cyujie.liu@intel.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "29083a76efa600b02d30f32d0393ae53e37887f8",
      "tree": "28cfa31234b98b9a7b495c09cac7cad5888cf81e",
      "parents": [
        "b3cf30ba5b47dfa7414416fe3bc5ae34db6065e7"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 06 22:23:51 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Jun 06 22:40:23 2022 +0200"
      },
      "message": "cgcc: do not die on \u0027-x assembler\u0027\n\nCurrently cgcc will die if the option \u0027-x\u0027 is used with any argument\nother than \u0027c\u0027.\n\nIt makes sense since sparse can only handle C files but it can be\nuseful in a project to simply use something like:\n\tmake CC\u003dcgcc\n\nSo, instead of die()ing, avoid calling sparse if such \u0027-x\u0027 option\nis used, like already done by default for non .c files.\n\nOriginal-patch-by: Tom Rix \u003ctrix@redhat.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b3cf30ba5b47dfa7414416fe3bc5ae34db6065e7",
      "tree": "aaa635a9d12f6c282a83ce53fe2b955406a99309",
      "parents": [
        "d9c17b4dc21ef531d673d1d6e510347e141e6801",
        "b296539554213125eb8f61291c862eec190e4c9b"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 22:19:28 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 22:19:28 2022 +0200"
      },
      "message": "Merge branch \u0027riscv\u0027\n\n* riscv: small improvements of \u0027-march\u0027 parsing\n"
    },
    {
      "commit": "b296539554213125eb8f61291c862eec190e4c9b",
      "tree": "e61ded885dc846c6dc20a8331a20cc127f326024",
      "parents": [
        "dcb3887d85c10c96cc56d2715bf21566e3c31d9b"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Fri Apr 01 22:00:39 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 22:07:23 2022 +0200"
      },
      "message": "RISC-V: Remove \"g\" from the extension list\n\n\"g\" goes along with the base ISA, but it was being treated as an\nextension.  This allows for all sorts of odd ISA strings to be accepted\nby sparse, things like \"rv32ig\" or \"rv32gg\".  We\u0027re still allowing\nsome oddities, like \"rv32ga\", but this one was easy to catch.\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "dcb3887d85c10c96cc56d2715bf21566e3c31d9b",
      "tree": "25f2f88be5f8a2bc0a92f9c2c41c92644f7f5ee1",
      "parents": [
        "90feaaa967227961fc9972a0a46bb4fa51eec7b2"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Fri Apr 01 22:00:38 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 22:07:23 2022 +0200"
      },
      "message": "RISC-V: Remove the unimplemented ISA extensions\n\nThis made sense when we die()d on unknown ISA extensions, but now that\nwe\u0027re just warning it\u0027s actually a bit detrimental: users won\u0027t see that\ntheir unimplemented ISA extensions are silently having the wrong\ndefinitions set, which may cause hard to debug failures.\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "90feaaa967227961fc9972a0a46bb4fa51eec7b2",
      "tree": "683ec0180b0b7853e118a39858a92ba9e8d30487",
      "parents": [
        "e31e645f5c29b6587404c1efe534c65b4691e023"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Fri Apr 01 22:00:37 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 22:07:23 2022 +0200"
      },
      "message": "RISC-V: Match GCC\u0027s semantics for multiple -march instances\n\nGCC\u0027s semantics for \"-march\u003dX -march\u003dY\" are that Y entirely overrides X,\nbut sparse takes the union of these two ISA strings.  This fixes the\nbehavior by setting, instead of oring, the flags whenever a base ISA is\nencountered.  RISC-V ISA strings can only have a single base ISA, it\u0027s\nnot like x86 where the 64-bit ISA is an extension of the 32-bit ISA.\n\n[Luc Van Oostenryck: reset the flags at the start of the parsing loop]\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "e31e645f5c29b6587404c1efe534c65b4691e023",
      "tree": "d14510bf22917189140de439abdc72b56b82b80a",
      "parents": [
        "76d40fa9e54fdf790f9d1a4b97be93f94d26abfc"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Fri Apr 01 22:00:36 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 22:07:14 2022 +0200"
      },
      "message": "RISC-V: don\u0027t die() on -march errors, just warn\n\nParsing RISC-V ISA strings is extremely complicated: there are many\nextensions, versions of extensions, versions of the ISA string rules,\nand a bunch of unwritten rules to deal with all the bugs that fell out\nof that complexity.\n\nRather than die()ing when the ISA string parsing fails, just stop parsing\nwhere we get lost and emit a warning. Changes tend to end up at\nthe end of the ISA string, so that\u0027s probably going to work (and if\nit doesn\u0027t there\u0027s a warning to true and clue folks in).\n\nThis does have the oddity in that \"-Wsparse-error\" is ignored for this\nwarning but this option was never meant to be used at this stage of\nthe processing..\n\n[Luc Van Oostenryck: drop handling of \"-Wsparse-error\"]\n\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nBased-on-patch-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "d9c17b4dc21ef531d673d1d6e510347e141e6801",
      "tree": "121a0e8ff0b7fe17992524128a8e9ba428187449",
      "parents": [
        "56afb504c0b917a2563b44fabe2f1e92e4c14287",
        "187285b32ea71c25419a09724d9fe5f1b46aab2e"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 18:29:41 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jun 05 18:30:32 2022 +0200"
      },
      "message": "Merge branch \u0027cast-value\u0027\n\n* small improvements to cast_value()\n"
    },
    {
      "commit": "187285b32ea71c25419a09724d9fe5f1b46aab2e",
      "tree": "4cc77121deaa91575ab75bb45a3635568f63cf71",
      "parents": [
        "698360ca020e8ce4bc84eb44233dba9dbc9b598c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 15:27:37 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 15:52:42 2022 +0200"
      },
      "message": "cast_value: remove error-prone redundant argument\n\nThe last two arguments of cast_value() are the old expression and\nthe oldtype which suggest that this oldtype can be distinct from the\ntype of the old expression.\n\nBut this is not the case because internally the type used to retrieve\nthe value of the expression is the type of the expression itself (old-\u003ectype)\nthe type which is used and the two types must be the same (or at least\nbe equivalent).\n\nSo, remove the error-prone last argument and always us the type of the\nexpression itself.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "698360ca020e8ce4bc84eb44233dba9dbc9b598c",
      "tree": "c0cbb6e320bd29c91abf490651546f19ddda9ab9",
      "parents": [
        "3d1d65bfe6dad089b9c2a8d69f36ba5301a9509c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 14:56:21 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 15:49:05 2022 +0200"
      },
      "message": "cast_value: assign the new type\n\nThe first two arguments of cast_value() are the new expression and the\ntype wanted for it. This type is then used to calculate the new value.\n\nBut the type of the expression must be assigned separately (usually\nafter the cast because the old and the new expression can refer to\nthe same object).\n\nTo avoid any possible inconsistencies, assign the new type during the\ncasting itself.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "56afb504c0b917a2563b44fabe2f1e92e4c14287",
      "tree": "73cca4ee011daee4ab40a7d19db2bb91b4307682",
      "parents": [
        "5a0004b591e311cb840633144087dee6ecdade17",
        "3d1d65bfe6dad089b9c2a8d69f36ba5301a9509c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 13:53:18 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 13:53:18 2022 +0200"
      },
      "message": "Merge branch \u0027fixes\u0027 into master\n\n* fix zero/sign extension of integer character constants\n* handle clang\u0027s option \"-meabi gnu\"\n* fix infinite loop when expanding __builtin_object_size() with self-init vars\n"
    },
    {
      "commit": "3d1d65bfe6dad089b9c2a8d69f36ba5301a9509c",
      "tree": "f780af23ebc5de203303205323b33248d5b1be63",
      "parents": [
        "99a5645a0edbafac8eb667e0f341a73bebb5f34d"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun May 22 20:46:58 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Tue May 31 13:49:29 2022 +0200"
      },
      "message": "fix zero/sign extension of integer character constants\n\nAn integer character constant has type \u0027int\u0027 but, subtly enough,\nits value is the one of a \u0027char\u0027 converted to an \u0027int\u0027.\n\nSo, do this conversion.\nAlso set the type of wide character constants from \u0027long\u0027 to \u0027wchar_t\u0027.\n\nLink: https://lore.kernel.org/r/20210927130253.GH2083@kadam\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nReported-by: Rasmus Villemoes \u003clinux@rasmusvillemoes.dk\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "5a0004b591e311cb840633144087dee6ecdade17",
      "tree": "58e38a987597483c528033ac254f5f4a289516aa",
      "parents": [
        "b4fb2fd8eefb57d1888da06bd56c3b2f78f7cd04",
        "df76096c637951cf1713edf7d34940c814f8cb3d"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun May 22 11:46:26 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun May 22 11:46:26 2022 +0200"
      },
      "message": "Merge branch \u0027xtensa\u0027\n\n* cgcc: add Xtensa support\n"
    },
    {
      "commit": "df76096c637951cf1713edf7d34940c814f8cb3d",
      "tree": "bca4a43d9395d9a5b96a4f892646fcfa1959276b",
      "parents": [
        "c4706aa764f3ae68258ba60be6325a5662900362"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "guennadi.liakhovetski@linux.intel.com",
        "time": "Wed Apr 20 14:31:34 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun May 22 11:45:10 2022 +0200"
      },
      "message": "cgcc: add Xtensa support\n\nAdd support for the Xtensa architecture.\n\nSigned-off-by: Guennadi Liakhovetski \u003cguennadi.liakhovetski@linux.intel.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "99a5645a0edbafac8eb667e0f341a73bebb5f34d",
      "tree": "1cfde6d757adff168125ae4b7023ca6a90a6a966",
      "parents": [
        "b3d7fb1bac881a714fed871db33e98e67b9bf1b6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon May 23 10:55:03 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun May 22 11:39:27 2022 +0200"
      },
      "message": "handle clang\u0027s option \"-meabi gnu\"\n\nClang has an option \"-meabi \u003carg\u003e\" which is used by the kernel for ARMv7.\nThis kind of option, taking a argument without a separating \u0027\u003d\u0027, can\u0027t\nbe ignored like most other options and must this be special-cased.\n\nSo, add the special case for this option and consume the argument if it\u0027s\none of the valid one.\n\nLink: https://lore.kernel.org/r/20220331110118.vr4miyyytqlssjoi@pengutronix.de\nReported-by: Marc Kleine-Budde \u003cmkl@pengutronix.de\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b4fb2fd8eefb57d1888da06bd56c3b2f78f7cd04",
      "tree": "306ddd3da66ed458f6e338e5a32442e6e9efdccf",
      "parents": [
        "fbdc046e9561829265588582a0e5926eda1eaa88",
        "76d40fa9e54fdf790f9d1a4b97be93f94d26abfc"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 22:45:29 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 22:45:29 2022 +0200"
      },
      "message": "Merge branch \u0027riscv-zicsr\u0027\n\n* riscv: add the Zicsr extension\n* riscv: add the Zifencei extension\n"
    },
    {
      "commit": "76d40fa9e54fdf790f9d1a4b97be93f94d26abfc",
      "tree": "a0b1b6234f3b1d3b768af498ce39604db21a669f",
      "parents": [
        "54cb689f2b664d379ac070b23fa3d8c814421d3a"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Fri Apr 01 22:00:41 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 21:10:05 2022 +0200"
      },
      "message": "RISC-V: Add the Zifencei extension\n\nRecent versions of binutils default to an ISA spec version that doesn\u0027t\ninclude Zifencei as part of I, so Linux has recently started passing\nthis in -march.\n\n[ Luc Van Oostenryck: move this patch at the start of the series ]\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "54cb689f2b664d379ac070b23fa3d8c814421d3a",
      "tree": "6d8c3359af961f3fa530a9848ce26d4eeab2a16b",
      "parents": [
        "c4706aa764f3ae68258ba60be6325a5662900362"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Fri Apr 01 22:00:40 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 21:09:30 2022 +0200"
      },
      "message": "RISC-V: Add the Zicsr extension\n\nRecent versions of binutils default to an ISA spec version that doesn\u0027t\ninclude Zicsr as part of I, so Linux has recently started passing this\nin -march.\n\n[ Luc Van Oostenryck: move this patch at the start of the series ]\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "fbdc046e9561829265588582a0e5926eda1eaa88",
      "tree": "8f582ca2d8b973bc1f90dd842833789ff3cf0de4",
      "parents": [
        "618f92e7ad155144cc8c97098f7ef86a57aad39d"
      ],
      "author": {
        "name": "Richard Palethorpe",
        "email": "rpalethorpe@suse.com",
        "time": "Mon Mar 21 11:21:19 2022 +0000"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 15:05:46 2022 +0200"
      },
      "message": "Use offsetof macro to silence null ptr subtraction warning\n\nSubtracting (char *)0 is undefined behavior. Newer compilers warn\nabout this unless it is done in system headers.\n\nSigned-off-by: Richard Palethorpe \u003crpalethorpe@suse.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "618f92e7ad155144cc8c97098f7ef86a57aad39d",
      "tree": "6400ba496447aab45b8d627cee30d123d920ed17",
      "parents": [
        "b22b01e5c1c6da0a6eeb6b3bb5d538f493f696b6"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 11:53:52 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 14:47:39 2022 +0200"
      },
      "message": "fix one year off in v0.6.4\u0027s release notes\n\nBernhard Voelker noticed that the date in the release notes\nis one year off. Fix this.\n\nReported-by: Bernhard Voelker \u003cmail@bernhard-voelker.de\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b22b01e5c1c6da0a6eeb6b3bb5d538f493f696b6",
      "tree": "a939975060225ae16326fb10debf2665de53d33a",
      "parents": [
        "7d990b119a6249af9a1ef4f3df9957d8975b56b2",
        "62dafeef8ba83d210d0ce861476d4071f66fc34a"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 11:21:01 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 11:21:33 2022 +0200"
      },
      "message": "Merge branch \u0027semid\u0027\n\n* semind: Index more symbols\n  For indexing purposes, macros definitions and typedefs are added to the\n  semind database. Functions that are not used in the code are also indexed.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "7d990b119a6249af9a1ef4f3df9957d8975b56b2",
      "tree": "fd21e6b95ea88839593466e8c6f4db304f942824",
      "parents": [
        "c4706aa764f3ae68258ba60be6325a5662900362",
        "d08822184fe1d4557beca97c2e3599ffc3668e50"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 11:16:24 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 11:18:40 2022 +0200"
      },
      "message": "Merge branch \u0027next-ramsay\u0027\n\n* fix regression disabling the \u0027memcpy-max-count\u0027 check.\n* warn about a \u0027case label\u0027 on empty statement\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "62dafeef8ba83d210d0ce861476d4071f66fc34a",
      "tree": "2de4c4c3bc145b263b810b3eed5c835980c909fb",
      "parents": [
        "99fe3982ff45fc0bef5e5e414b85f87143e71ce5"
      ],
      "author": {
        "name": "Alexey Gladkov",
        "email": "gladkov.alexey@gmail.com",
        "time": "Tue Nov 02 15:06:45 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 10:59:45 2022 +0200"
      },
      "message": "dissect: Show typedefs\n\nFor indexing purposes, it is useful to see type definitions.\n\n$ semind search __kernel_ulong_t\n(def) include/uapi/asm-generic/posix_types.h 16 23 typedef unsigned long   __kernel_ulong_t;\n\nSigned-off-by: Alexey Gladkov \u003cgladkov.alexey@gmail.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "99fe3982ff45fc0bef5e5e414b85f87143e71ce5",
      "tree": "74d6d4ee443f368620fd22383205358831953690",
      "parents": [
        "2a5afb6eafe9cd781f149ab53ee6ea8f23010ee5"
      ],
      "author": {
        "name": "Alexey Gladkov",
        "email": "gladkov.alexey@gmail.com",
        "time": "Tue Nov 02 15:06:44 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 10:59:45 2022 +0200"
      },
      "message": "dissect: Show macro definitions\n\nAdd the ability to dissect to see macro definitions. The patch does not\nadd full support for the usage of macros, but only their definitions.\n\nSigned-off-by: Alexey Gladkov \u003cgladkov.alexey@gmail.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "2a5afb6eafe9cd781f149ab53ee6ea8f23010ee5",
      "tree": "1912c23af26d651e38cf34839fe8c45469b09f3d",
      "parents": [
        "c4706aa764f3ae68258ba60be6325a5662900362"
      ],
      "author": {
        "name": "Alexey Gladkov",
        "email": "gladkov.alexey@gmail.com",
        "time": "Tue Nov 02 15:06:43 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 10:59:45 2022 +0200"
      },
      "message": "dissect: Allow to show all symbols\n\nCurrently dissect sees only used symbols. For indexing purposes, it is\nuseful to see all declared symbols.\n\n$ nl -s\\  -w2 ./z.c\n 1 struct foo {\n 2         int member;\n 3 };\n 4 #ifdef OPT\n 5 static void func1(void) {\n 6         struct foo *x;\n 7         return 0;\n 8 }\n 9 #endif\n10 static inline void func2(void) { return; }\n11 void func(void) { return; }\n\n$ ./test-dissect ./z.c\n\nFILE: ./z.c\n\n  11:6                    def   f func                             void ( ... )\n\n$ ./test-dissect --param\u003ddissect-show-all-symbols ./z.c\n\nFILE: ./z.c\n\n   1:8                    def   s foo                              struct foo\n   2:13                   def   m foo.member                       int\n  10:20                   def   f func2                            void ( ... )\n  11:6                    def   f func                             void ( ... )\n\nSigned-off-by: Alexey Gladkov \u003cgladkov.alexey@gmail.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "b3d7fb1bac881a714fed871db33e98e67b9bf1b6",
      "tree": "5247da491753239aa0a7e26e7532959928348b2d",
      "parents": [
        "c4706aa764f3ae68258ba60be6325a5662900362"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri May 20 22:27:08 2022 +0200"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat May 21 10:58:37 2022 +0200"
      },
      "message": "fix infinite loop when expanding __builtin_object_size() with self-init vars\n\nexpand_object_size(), used to expand __builtin_object_size(),\nrecursively try to get the parent initializer. This fails miserably\nby looping endlessly when the object is a self-initialized variable.\n\nFor the moment, fix this in the most obvious way: stop the recursion\nand do not expand such variables.\n\nNote: I wouldn\u0027t be surprised if these self-initialized variables create\n      other problems elsewhere. Maybe we should remove their initializer\n      and somehow mark them as \"do not warn about -Wuninitialized\"\n      (well, there is no such warnings *yet*).\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "d08822184fe1d4557beca97c2e3599ffc3668e50",
      "tree": "fd21e6b95ea88839593466e8c6f4db304f942824",
      "parents": [
        "4cd76bd9eeb3777219a307893e33d072df05eb37"
      ],
      "author": {
        "name": "Ramsay Jones",
        "email": "ramsay@ramsayjones.plus.com",
        "time": "Tue Sep 28 00:45:22 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri May 20 10:55:05 2022 +0200"
      },
      "message": "parse: warn about a \u0027case label\u0027 on empty statement\n\nCommit 0d6bb7e1 (\"handle more graciously labels with no statement\",\n2020-10-26) allowed a label to appear just before the closing brace\nof a compound statement. This is not valid C (which would require\nat least a null statement). Similarly, a case label is also not\nallowed to appear just before a closing brace.\n\nSo, extend the solution of commit 0d6bb7e1 to issue a warning for\ncase labels and \u0027insert\u0027 a null statement.\n\nNote that the next C standard (C23 ?) will allow even more freedom\nin the placement of labels (see N2508 [1]) and make this placement\n(along with others) legal C.\n\n[1] https://www9.open-std.org/JTC1/SC22/WG14/www/docs/n2508.pdf\n\nSigned-off-by: Ramsay Jones \u003cramsay@ramsayjones.plus.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "4cd76bd9eeb3777219a307893e33d072df05eb37",
      "tree": "a8e28b8b6455d036385dbfbe3ac60049d507b78c",
      "parents": [
        "c4706aa764f3ae68258ba60be6325a5662900362"
      ],
      "author": {
        "name": "Ramsay Jones",
        "email": "ramsay@ramsayjones.plus.com",
        "time": "Tue Sep 28 00:43:31 2021 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Fri May 20 10:54:33 2022 +0200"
      },
      "message": "sparse: fix broken \u0027memcpy-max-count\u0027 check\n\ncommit a69f8d70 (\"ptrlist: use ptr_list_nth() instead of linearize_ptr_\\\nlist()\", 2021-02-14) replaced a call to a local helper with a more generic\nptr_list function. The local function, argument(), was used to retrieve\nthe \u0027argno\u0027 argument to a function call, counting the arguments from one.\nThis call was replaced by the generic ptr_list_nth() function, which\naccessed the ptr_list counting from zero. The \u0027argno\u0027 passed to the call to\nargument() was 3 (the byte count), which when passed to ptr_list_nth()\nwas attempting to access the 4th (non-existent) argument. (The resulting\nnull pointer was then passed to check_byte_count() function, which had\nan null-pointer check and so did not dereference the null pointer). This\neffectively disabled the memcpy-max-count check.\n\nIn order to fix the check, change the \u0027argno\u0027 of 3 to the \u0027index\u0027 of 2.\nAlso, add a simple regression test.\n\nSigned-off-by: Ramsay Jones \u003cramsay@ramsayjones.plus.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "f5d1205420aa4323aef2c93bdad973104c11df4d"
}
