)]}'
{
  "log": [
    {
      "commit": "37156835e3d725b6d750f000be33ba3814bb2310",
      "tree": "56d71c06fb4c7cba0f335d85bc051c7b7f787727",
      "parents": [
        "0e146208e5a4a6aa5cd7e52d93882eca71d8e50c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 18 00:01:19 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 18 02:38:24 2025 -0500"
      },
      "message": "lift handling of -\u003eimmutable into dup_token()\n\nWe need to make sure that any struct string with more than one token\nrefering to it will have -\u003eimmutable set; that\u0027s what de1fa7e60 (\"Make\nmacro expanded string immutable\") tried to achieve.  Unfortunately, it\nwas not enough - constructing an example where an unexpanded argument gets\nseveral copies is very easy (see the testcase in this commit).\n\nA better place for dealing with that is dup_token() - that\u0027s guaranteed\nto catch all such tokens and with sane code generation (\u003d\u003d with compiler\nmade certain that *streampos can\u0027t be altered by stores to alloc-\u003epos)\nit\u0027s quite cheap; we already have alloc-\u003epos in registers and checking\nif the lower 6 bits happen to be 001000 or 001001 (TOKEN_STRING and\nTOKEN_WIDE_STRING resp.) doesn\u0027t take much.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0e146208e5a4a6aa5cd7e52d93882eca71d8e50c",
      "tree": "a40dbca91472fd57c0937848460722ad9f5341ef",
      "parents": [
        "e588cf8393c900cfca2d36cfdc8c82f6b2c0a833"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 18 02:33:54 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 18 02:33:54 2025 -0500"
      },
      "message": "substitute(): merge TOKEN_IDENT case with default\n\nmakes for cheaper switch there, and the damn thing\u0027s hot enough\nfor that to matter...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e588cf8393c900cfca2d36cfdc8c82f6b2c0a833",
      "tree": "f5e91ba712efb09495f732cd35815546deccbcba",
      "parents": [
        "07773423cbaa25eb2f430ee4bef1760e8dc506ed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 18 02:31:27 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 18 02:31:59 2025 -0500"
      },
      "message": "constify struct token pointers in dup_token() and substitute()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "07773423cbaa25eb2f430ee4bef1760e8dc506ed",
      "tree": "d27f604268670e8649f4a485ed6acedc25b30292",
      "parents": [
        "aaf69f2a87b577be8bf299ee890315a0ad3abb23"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 12 22:47:14 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 17 16:31:08 2025 -0500"
      },
      "message": "tokenize.c: bump IDENT_HASH_BITS\n\nFrom 13 to 16.  8192 buckets is nowhere near enough for e.g.\nkernel builds - we end up with long hash chains.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aaf69f2a87b577be8bf299ee890315a0ad3abb23",
      "tree": "28ac42df60c6bdc788df013ea6923c1d1f1b41fe",
      "parents": [
        "153b13a7c931ec1a131438df044b4dfda071d1ba"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 12 22:45:31 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 17 16:30:49 2025 -0500"
      },
      "message": "create_hashed_ident(): use memcmp() instead of strncmp()\n\nWe have already verified that lengths match...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "153b13a7c931ec1a131438df044b4dfda071d1ba",
      "tree": "29f1d7753b8606719202551c0017ab31d7e9fae4",
      "parents": [
        "08ed2cbdcd971add3de7251d690271c35af0462e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 12 22:40:28 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 17 16:30:41 2025 -0500"
      },
      "message": "speed lookup_macro() up\n\nAgain, bloody awful code generation in even hotter spot - it\u0027s\ncalled for every identifier.  What we do is scan the list of\nsymbols for given identifier, looking for the first one with\nNS_MACRO or NS_UNDEF in sym-\u003enamespace, then check that it\u0027s\njust NS_MACRO.  The thing is, NS_MACRO never mixes with anything\nelse, so instead of comparison we can just check that this bit\nis set.  Result: test given bit in sym + constant offset vs.\nfetch word, shift it, mask and compare.  Microoptimization,\nbut that thing is called often enough to give measurable effect.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "08ed2cbdcd971add3de7251d690271c35af0462e",
      "tree": "e76a31f15582cddc2a3977992a3804475d6d1d44",
      "parents": [
        "2634e39bf02697a18fece057208150362c985992"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 12 22:35:26 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 17 16:26:30 2025 -0500"
      },
      "message": "speed dup_token() up\n\nIt\u0027s one of the hottest spots in the entire pre-process.c;\nunfortunately, code generation is not good.\n\nCompiler does not know that streampos won\u0027t be pointing\nto alloc-\u003epos (alloc has been freshly allocated, but...),\nso it resorts to field-by-field copying, with arseloads of\nreloads; worse, those are bitfields, so results are really\nnot pretty.\n\nBetter solution: fetch *streampos into a local variable first,\nthen copy the entire token-\u003epos to alloc-\u003epos and assign the\nfields we need to copy from *streampos.\n\nEnds up with much better code generation.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2634e39bf02697a18fece057208150362c985992",
      "tree": "494b07e70abc01d7a176489843e8c0cea4794721",
      "parents": [
        "fbdde3127b83e6d09e0ba808d7925dd84407f3c6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 16 15:01:16 2025 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 17 16:24:48 2025 -0500"
      },
      "message": "fix __builtin_strlen() constantness\n\n__builtin_strlen() is an integer constant expression iff the argument\nis a string constant; expand_strlen() does the right thing, but\nit comes too late - we need the same logics in -\u003eevaluate() for\n__builtin_strlen().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fbdde3127b83e6d09e0ba808d7925dd84407f3c6",
      "tree": "602d0e365e38d1ed99ad775784728b9135b9c68c",
      "parents": [
        "dc9efe442b8949234a6599fdc94dc7221dd040e1"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@linaro.org",
        "time": "Wed Oct 15 16:08:13 2025 +0300"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Thu Oct 16 21:52:33 2025 -0700"
      },
      "message": "builtin: implement __builtin_strlen() for constants\n\nPeople are adding compile time asserts to check whether strings are\nthe expected length.  In GCC and Clang strlen(\"foo\") is expanded at\ncompile time so this works, but in Sparse it triggers a \"bad constant\nexpression\" warning.  Implement expand_strlen() to handle string\nliterals.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@linaro.org\u003e\nLink: https://lore.kernel.org/all/CANiDSCsBAq3Yx4ybarUb_1NkQ-bvfXvWqb-DfqXatkiYJFZWiQ@mail.gmail.com/\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "dc9efe442b8949234a6599fdc94dc7221dd040e1",
      "tree": "7b5c4bb23803c125ad2b06f4b76aa4d894f3a93f",
      "parents": [
        "610d841da021200788d2200d7bc66f08bcc97c23"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@linaro.org",
        "time": "Wed Dec 04 10:24:41 2024 +0300"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Wed Oct 15 07:32:06 2025 -0700"
      },
      "message": "sparse: implement typeof_unqual()\n\nThe typeof_unqual() is a c23 operator which is similar to typeof() except\nit masks away the qualifiers, ie. MOD_CONST, MOD_VOLATILE and\nMOD_RESTRICT.  So the implementation of typeof() and typeof_unqual() is\nbasically the same except that in examine_typeof_helper() we have the mask:\n\n        mod \u0026\u003d ~MOD_QUALIFIER;\n\nWe will still preserve the MOD_ATOMIC, MOD_NOCAST and MOD_SPECIFIER\nmodifiers with both typeof() and typeof_unqual().\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@linaro.org\u003e\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "610d841da021200788d2200d7bc66f08bcc97c23",
      "tree": "2aa77ceca38606425a54cb822c9a9aae8794b0a1",
      "parents": [
        "67f0a03cee4637e495151c48a02be642a158cbbb"
      ],
      "author": {
        "name": "Changyuan Lyu",
        "email": "changyuan.lv@gmail.com",
        "time": "Sun Sep 28 17:57:27 2025 -0700"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Sun Sep 28 23:14:35 2025 -0700"
      },
      "message": "doc: update the instructions for mailing list subscription\n\nMajordomo commands are deprecated as per\nhttps://subspace.kernel.org/vger.kernel.org.html#what-happened-to-majordomo.\n\nSigned-off-by: Changyuan Lyu \u003cchangyuan.lv@gmail.com\u003e\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "67f0a03cee4637e495151c48a02be642a158cbbb",
      "tree": "259f0f0053ac1951c6fa8b5ff25425ea0aa34695",
      "parents": [
        "bb97bcbd4f7e00896ee447752dfa59bf302c7d17"
      ],
      "author": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Sat Sep 27 18:43:09 2025 -0700"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Sat Sep 27 18:43:09 2025 -0700"
      },
      "message": "doc: update maintainer\n\nChris Li is back as sparse maintainer.\n\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "bb97bcbd4f7e00896ee447752dfa59bf302c7d17",
      "tree": "434fbaeb056897244c9220f5d0cef2b6631d8633",
      "parents": [
        "366ad4b2fa3e8361001a08b3719881b6d7c87e90"
      ],
      "author": {
        "name": "wenlunpeng",
        "email": "wenlunpeng@uniontech.com",
        "time": "Mon Sep 23 16:39:44 2024 +0800"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Thu Sep 25 07:28:08 2025 -0700"
      },
      "message": "fix: Skip if symbol have no op when handle_qualifiers\n\nMissing s-\u003eop will cause a SIGSEGV when trying to get s-\u003eop-\u003etype.\n\nI encountered the issue when building with sparse in a linux kernel tree\ncontaining a vendor network driver. A simple `make` will success but a\n`make C\u003d2` will exit with exit-code 139. The coredump shows that s-\u003eop\nhere is NULL when dealing with a source code line like:\n\tu8 *byte;\n\nLines like this exist everywhere. I cannot figure out why just this file\nbreaks sparse. But I think the NULL judge is needed here.\n\nSigned-off-by: wenlunpeng \u003cwenlunpeng@uniontech.com\u003e\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "366ad4b2fa3e8361001a08b3719881b6d7c87e90",
      "tree": "7a5ff32b6ef13f119bf83e72614d4a1e7f83cb0a",
      "parents": [
        "c47766ce0620001dfaf201674c990cde2e10423e"
      ],
      "author": {
        "name": "Vincent Mailhol",
        "email": "mailhol@kernel.org",
        "time": "Sun Sep 21 15:12:30 2025 +0900"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Tue Sep 23 23:43:00 2025 -0700"
      },
      "message": "Warn about \"unsigned value that used to be signed against zero\"\n\nConsider this first pattern:\n\n  void error(void);\n  int check(void);\n\n  void foo (void)\n  {\n  \tunsigned int ret;\n\n  \tret \u003d check();\n  \tif (ret \u003c 0)\n  \t\terror();\n  }\n\nHere, the comparison against zero is a tautology: ret, which is\nunsigned, can never be negative. Thus the compiler will remove the\nerror branch causing a bug.\n\nThis pattern is caught by clang and gcc\u0027s -Wtype-limits. *However*,\nthat diagnostic has many lost bullets. It will also complain on some\nlegitimate things such as in this second pattern:\n\n  void error(void);\n\n  void bar (unsigned int val)\n  {\n  \tif (val \u003c 0 || val \u003e 42)\n  \t\terror();\n  }\n\nHere, the author just want to do a range check. Yes, the\n\n  val \u003c 0\n\ncomparison is a tautology, but that time, it does not result in faulty\ncode when optimised out by the compiler.\n\nThere is thus a need for a check that will catch the first pattern but\nthat will let the second one go through. The difference between the\ntwo patterns is that in the first one the value returned by the\ncheck() function used to be signed whereas in the second one val was\nalways unsigned to begin with.\n\nAdd a check in sparse to warn if a value which used to be signed gets\nassigned to an unsigned and then gets compared against zero, either\nval \u003c 0 or val \u003e\u003d 0.\n\nAs pointed out by Linus in his original message, a few false positives\nremain, especially when many inline functions and macros get involved,\nbut the level of noise is nothing in comparison to the -Wtype-limits.\n\nSuggested-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLink: https://lore.kernel.org/all/CAHk-\u003dwjQCbRA1UEag-1-9yn08KNNqerTj++SCbbW80At\u003drg5RQ@mail.gmail.com/\nSigned-off-by: Vincent Mailhol \u003cmailhol@kernel.org\u003e\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "c47766ce0620001dfaf201674c990cde2e10423e",
      "tree": "84c188195a70f478622e2466a3664470f1327e59",
      "parents": [
        "0196afe16a50c76302921b139d412e82e5be2349"
      ],
      "author": {
        "name": "Vincent Mailhol",
        "email": "mailhol@kernel.org",
        "time": "Tue Sep 23 00:53:21 2025 +0900"
      },
      "committer": {
        "name": "Chris Li",
        "email": "sparse@chrisli.org",
        "time": "Tue Sep 23 23:43:00 2025 -0700"
      },
      "message": "vadidation: add used-to-be-signed unit tests\n\nAdd unit tests for the new used-to-be-signed check as introduced in [1]:\n\nResults before applying [1]:\n\n  $ ./test-suite used-to-be-signed.c\n    TEST    used-to-be-signed (used-to-be-signed.c)\n  error: actual error text does not match expected error text.\n  error: see used-to-be-signed.c.error.* for further investigation.\n  --- used-to-be-signed.c.error.expected\t2025-09-23 00:50:07.079654644 +0900\n  +++ used-to-be-signed.c.error.got\t2025-09-23 00:50:07.073654719 +0900\n  @@ -1,8 +0,0 @@\n  -used-to-be-signed.c:8:19: warning: unsigned value that used to be signed checked against zero?\n  -used-to-be-signed.c:6:33: signed value source\n  -used-to-be-signed.c:11:17: warning: unsigned value that used to be signed checked against zero?\n  -used-to-be-signed.c:6:33: signed value source\n  -used-to-be-signed.c:14:20: warning: unsigned value that used to be signed checked against zero?\n  -used-to-be-signed.c:6:33: signed value source\n  -used-to-be-signed.c:17:18: warning: unsigned value that used to be signed checked against zero?\n  -used-to-be-signed.c:6:33: signed value source\n  error: FAIL: test \u0027used-to-be-signed.c\u0027 failed\n  KO: out of 1 tests, 0 passed, 1 failed\n\n...and after:\n\n  $ ./test-suite used-to-be-signed.c\n    TEST    used-to-be-signed (used-to-be-signed.c)\n  OK: out of 1 tests, 1 passed, 0 failed\n\n[1] Warn about \"unsigned value that used to be signed against zero\"\nLink: https://lore.kernel.org/linux-sparse/20250921061337.3047616-1-mailhol@kernel.org/\n\nSigned-off-by: Vincent Mailhol \u003cmailhol@kernel.org\u003e\nSigned-off-by: Chris Li \u003csparse@chrisli.org\u003e\n"
    },
    {
      "commit": "0196afe16a50c76302921b139d412e82e5be2349",
      "tree": "3eaeea56f33f93dda57250f5957648d5efd1fe6e",
      "parents": [
        "09411a7a5127516a0741eb1bd8762642fa9197ce",
        "77b30af89aa02b98420b9cff6bdc6892647e00f1"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Feb 03 17:12:35 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Feb 03 17:12:35 2024 +0100"
      },
      "message": "Merge branch \u0027riscv\u0027\n"
    },
    {
      "commit": "09411a7a5127516a0741eb1bd8762642fa9197ce",
      "tree": "8fc2899819befdac25a55e50b2ecda6dcaf6009b",
      "parents": [
        "c991e5c68b48158410ebda9cd0ae0fde065faec7",
        "2925599897b1459fa46ed95c5e4cceebc91e824a"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:14:05 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:14:05 2024 +0100"
      },
      "message": "Merge branch \u0027llvm-next\u0027\n\n* llvm: avoid trivial recursion in symbol_type()\n* llvm: enable LLVM on arm64\n"
    },
    {
      "commit": "2925599897b1459fa46ed95c5e4cceebc91e824a",
      "tree": "7020d1722fc1554b9118356bbc8f8b255a96f881",
      "parents": [
        "bf6ea1c69791eaf0ad58587f578d126b0484b688"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 17:16:35 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:13:43 2024 +0100"
      },
      "message": "llvm: allow arm64\n\nCurrently, all architectures but the i386/x86 ones are excluded\nfrom the LLVM backend, mainly because the lack of testing.\n\nSince I can test it now, allow arm64/aarch64 too.\n\nNote: this patch is somehow incomplete because the layout is not set\n      but it\u0027s not clear what exactly the layout is needed for and at\n      least it allows to run the testsuite on this architecture.\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "c991e5c68b48158410ebda9cd0ae0fde065faec7",
      "tree": "37c21b201a8de97a49d396e43c86c79fff572cca",
      "parents": [
        "1cf3d98cf171fa27944750daba5e80e17cb8e9d0",
        "0544c547682b878758eea731ef4b8e64e5ec91fb"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:11:38 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:11:38 2024 +0100"
      },
      "message": "Merge branch \u0027llvm-15\u0027\n\n* Support LLVM-15 and later\n"
    },
    {
      "commit": "bf6ea1c69791eaf0ad58587f578d126b0484b688",
      "tree": "54a55c2ace0759ff997bc0b706bf56c22824fb5a",
      "parents": [
        "0544c547682b878758eea731ef4b8e64e5ec91fb"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Wed Dec 20 00:17:15 2023 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:10:48 2024 +0100"
      },
      "message": "llvm: avoid trivial recursion in symbol_type()\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "0544c547682b878758eea731ef4b8e64e5ec91fb",
      "tree": "6f993a993d22d7ea17b2f1ede9c942b239fb7fc2",
      "parents": [
        "b753d383f731984c0789366f064f59883d30d229"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:24:12 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Mon Jan 29 18:07:23 2024 +0100"
      },
      "message": "llvm: fix LLVM 15 deprecation warnings\n\nLLVM 15 switched to opaque pointers by default and no longer supports typed pointers.\nRemove deprecated LLVM calls and update test.\n\nOriginal-patch-by: Vladimir Petko \u003cvladimir.petko@canonical.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "77b30af89aa02b98420b9cff6bdc6892647e00f1",
      "tree": "46974fcc9038399c27d037eff243ca0c647a0839",
      "parents": [
        "3500cba405b71492fee7a07ac4fed21046311928"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sun Jan 21 00:29:17 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Tue Jan 23 21:51:07 2024 +0100"
      },
      "message": "riscv: G extension implies Zicsr \u0026 Zifencei\n\nSo, add the corresponding flags.\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "3500cba405b71492fee7a07ac4fed21046311928",
      "tree": "dc7053ac5add213dbe4dc3598b6c2230666f468d",
      "parents": [
        "8264c2019f75563cf8704e4385f90b3020a468a7"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sun Jan 21 00:29:10 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Tue Jan 23 21:49:25 2024 +0100"
      },
      "message": "riscv: V extension implies F \u0026 D\n\nSo, add the corresponding flags.\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "8264c2019f75563cf8704e4385f90b3020a468a7",
      "tree": "ad2cb18b853d7a1c740bb682ce4e16f726045823",
      "parents": [
        "3a41dd055be9184e1d65ea7f3434f487847eb1dd"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sun Jan 21 02:23:40 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Tue Jan 23 21:48:09 2024 +0100"
      },
      "message": "riscv: add predefines for v_min_vlen, v_elen \u0026 v_elen_fp\n\nThese may be needed once the V extension is enabled.\nSo add them.\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "3a41dd055be9184e1d65ea7f3434f487847eb1dd",
      "tree": "cdbfe59bab132ba358ea1f7aabb50afc9e22f536",
      "parents": [
        "40c42530d7d37217a98bf9bcd28e3ad2ba4fe678"
      ],
      "author": {
        "name": "Conor Dooley",
        "email": "conor.dooley@microchip.com",
        "time": "Mon Mar 06 22:23:22 2023 +0000"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sun Jan 21 14:43:56 2024 +0100"
      },
      "message": "RISC-V: Add basic support for the vector extension\n\nI\u0027ve started hitting this in CI while testing Andy\u0027s vector enablement\nseries. I\u0027m not entirely sure if there is more to do here, other than\nsqueezing in the duplicate of what has been done for other extensions.\n\nSigned-off-by: Conor Dooley \u003cconor.dooley@microchip.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "b753d383f731984c0789366f064f59883d30d229",
      "tree": "ecf84b17c0da0a8e40f845e3b3931e4a8799bc80",
      "parents": [
        "d5a73d316e38f533d3ec61879149a1c33fac51a3"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:24:12 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:25:38 2024 +0100"
      },
      "message": "llvm: ensure SYM_NODE is stripped before accessing the return type\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "d5a73d316e38f533d3ec61879149a1c33fac51a3",
      "tree": "e76da38b72e37757fd9a12753f1fcb2e122305a3",
      "parents": [
        "d7edb6c7b7c62db1a328fd88f7888324293b005c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:24:12 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:25:33 2024 +0100"
      },
      "message": "llvm: do not duplicate strings and use their length in struct string\n\nIn 2 places, we duplicate the storage for a string (with strdup) and we\nalso calculate its length via strlen(). Both operation are unneeded\nas the length is already calculated in the struct string and the pointer\nto the string data can be safely reused since Sparse will not modify or free it.\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "d7edb6c7b7c62db1a328fd88f7888324293b005c",
      "tree": "e690670840f9b8c049d5302598efe9e566a19adf",
      "parents": [
        "453d7af76abaef3de7934bf7159443103cc56f6b"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:24:12 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:25:28 2024 +0100"
      },
      "message": "llvm: add a few testcases for integer/pointer conversion\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "453d7af76abaef3de7934bf7159443103cc56f6b",
      "tree": "04a8c06dfe47c6280582673de8851f7a8b285fad",
      "parents": [
        "eac793a4ec5e4647e8301ddeb7c13ac78cb54fe1"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:24:12 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "lucvoo@kernel.org",
        "time": "Sat Jan 20 01:25:23 2024 +0100"
      },
      "message": "llvm: suppress warnings about deprecated API\n\nLLVM-14 still support LLVMBuildCall() and friends but deprecated them via\nthe attribute, so warnings are issued when compiling.\n\nSuppress these warnings to keep builds clean.\n\nSigned-off-by: Luc Van Oostenryck \u003clucvoo@kernel.org\u003e\n"
    },
    {
      "commit": "1cf3d98cf171fa27944750daba5e80e17cb8e9d0",
      "tree": "c5230ccc96ede1bde0ed69300d4a136f13c052bd",
      "parents": [
        "04558f85973cea64651638e4e5d4e547b3bf421d",
        "5ec6e21b35d4d9fcd4071e77ed60607c21bfcc4a"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 14:41:31 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 14:41:31 2024 +0100"
      },
      "message": "Merge branches \u0027doc\u0027 and \u0027stray-t\u0027\n\n* make doc generation OK again on readthedocs\n* suppress a warning in the testsuite\n"
    },
    {
      "commit": "5ec6e21b35d4d9fcd4071e77ed60607c21bfcc4a",
      "tree": "d08214da1d7c40301d741d4e679f6dcb3df25129",
      "parents": [
        "3ddf02ddcb9f04a92b272383a252a8fe350663ab"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 13:35:56 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 13:40:44 2024 +0100"
      },
      "message": "testsuite: avoid \"warning: stray \\ before t\" message\n\nGrep (or maybe only some recent versions) complains when using the (wrong)\n\u0027\\\\t\u0027 pattern.\n\nThis pattern was used only once to check if the following pattern was at\nthe beginning of an instruction.\n\nPrefer to use the more explicit \u0027^.\u0027 pattern, already used in other tests.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "04558f85973cea64651638e4e5d4e547b3bf421d",
      "tree": "52174522364d79ff255c7e2e989fef3b543e8583",
      "parents": [
        "550130d252e71c5b5552f81b69734f6f10ae6448"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jan 04 23:08:36 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 13:28:43 2024 +0100"
      },
      "message": "add .readthedocs.yaml\n\nRead the Docs now requires a config file in the project top directory.\nSo, here it is.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "550130d252e71c5b5552f81b69734f6f10ae6448",
      "tree": "523c2e84a984140cc8300f1feebb5662d2789497",
      "parents": [
        "3f9b43dcf4975dfc4464d1f0c6053f493018d5bd"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jan 04 23:08:36 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 13:27:27 2024 +0100"
      },
      "message": "doc: set \u0027en\u0027 as language in Sphinx\u0027s config file\n\nNewer versions of Sphinx don\u0027t support \u0027None\u0027 for \u0027language\u0027.\n\nSo, set \u0027en\u0027 as language\u0027.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "3f9b43dcf4975dfc4464d1f0c6053f493018d5bd",
      "tree": "4255204a751be7a5e42562c7cd0c250d915173ec",
      "parents": [
        "3ddf02ddcb9f04a92b272383a252a8fe350663ab"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Jan 04 23:08:36 2024 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sun Jan 07 13:26:44 2024 +0100"
      },
      "message": "doc: update conf.py for more recent version of sphinx\n\nSphinx versions older than 1.7 don\u0027t need and don\u0027t support \u0027html_context\u0027.\n\nSo, set 1.8 as the minimal version and remove \u0027html_context\u0027 from the config.\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "3ddf02ddcb9f04a92b272383a252a8fe350663ab",
      "tree": "16a943b7894b943dd12dc047e320c1ebb4e80fa8",
      "parents": [
        "adceff0ab6e3d8bf43de52e2c2fbebf27db30deb"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Dec 28 14:03:50 2023 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Thu Dec 28 14:12:27 2023 +0100"
      },
      "message": "reassoc: fix infinite loop during reassociation\n\nThe infinite loop is triggered by some fairly simple code on Zephyr and is\ncaused by some exchange of pseudos done without checking the canonical order.\n\nFix this by adding the check for the canonical order.\nAlso use can_move_to() instead of the simpler one_use() to check the dominance\nof the moved pseudos.\n\nLink: https://github.com/zephyrproject-rtos/zephyr/issues/63417\nLink: https://lore.kernel.org/linux-sparse/AD16C022-C5F3-4DA2-A1A0-775E4C95A7A1@intel.com/\nReported-by: Marc Herbert \u003cmarc.herbert@intel.com\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "adceff0ab6e3d8bf43de52e2c2fbebf27db30deb",
      "tree": "54b012a888edca87c8ecc020f1bded92622f5d58",
      "parents": [
        "98b203419679a4ccb224ff6a48ed39119faf8d71"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@kernel.org",
        "time": "Mon Feb 27 14:39:27 2023 -0500"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Dec 18 14:04:46 2023 +0100"
      },
      "message": "linearize.c: fix buffer overrun warning from fortify\n\nThe resulting string from snprintf, won\u0027t be nearly 64 bytes, but \"buf\"\nis only 16 bytes long here. This causes FORTIFY_SOURCE to complain when\ngiven the right options.\n\nSigned-off-by: Jeff Layton \u003cjlayton@kernel.org\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "98b203419679a4ccb224ff6a48ed39119faf8d71",
      "tree": "7faa37f7de424d4838d3b5bd5204280e4bd4d908",
      "parents": [
        "40c42530d7d37217a98bf9bcd28e3ad2ba4fe678"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "guennadi.liakhovetski@linux.intel.com",
        "time": "Wed Nov 16 17:55:25 2022 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Dec 18 14:04:23 2023 +0100"
      },
      "message": "xtensa: switch to little endianness\n\nCurrent gcc options only support the little endian mode on Xtensa,\nswitch over to it.\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": "40c42530d7d37217a98bf9bcd28e3ad2ba4fe678",
      "tree": "9a51e837566632a9a9880cd5d44c4cdce801fbfd",
      "parents": [
        "7058eaf5677ff4b0f253d2985333d312e3d542ba"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Wed Aug 10 22:33:56 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Dec 18 13:42:39 2023 +0100"
      },
      "message": "RISC-V: Add support for the zihintpause extension\n\nThis was recently added to binutils and with any luck will soon be in\nLinux, without it sparse will fail when trying to build new kernels on\nsystems with new toolchains.\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nTested-by: Conor Dooley \u003cconor.dooley@microchip.com\u003e\nTested-by: Geert Uytterhoeven \u003cgeert+renesas@glider.be\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "7058eaf5677ff4b0f253d2985333d312e3d542ba",
      "tree": "503d88cdf95cd1068964a4377021ef5fa3c8404a",
      "parents": [
        "eac793a4ec5e4647e8301ddeb7c13ac78cb54fe1"
      ],
      "author": {
        "name": "Palmer Dabbelt",
        "email": "palmer@rivosinc.com",
        "time": "Wed Aug 10 20:31:38 2022 -0700"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Dec 18 13:38:50 2023 +0100"
      },
      "message": "RISC-V: Add support for the zicbom extension\n\nThis was recently added to binutils and with any luck will soon be in\nLinux, without it sparse will fail when trying to build new kernels on\nsystems with new toolchains.\n\nSigned-off-by: Palmer Dabbelt \u003cpalmer@rivosinc.com\u003e\nTested-by: Conor Dooley \u003cconor.dooley@microchip.com\u003e\nTested-by: Geert Uytterhoeven \u003cgeert+renesas@glider.be\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "eac793a4ec5e4647e8301ddeb7c13ac78cb54fe1",
      "tree": "5cf657f7b256d5a05aaee7cf0a62125455915c48",
      "parents": [
        "ce1a6720f69e6233ec9abd4e9aae5945e05fda41",
        "25e96501f249b27cb930a09aba5aeb33a047d14c"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Dec 16 12:12:28 2023 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Dec 16 12:12:28 2023 +0100"
      },
      "message": "Merge branch \u0027handle-cleanup-attr\u0027\n\n* teach Sparse about \u0027cleanup\u0027 attribute so that Smatch can handle it\n"
    },
    {
      "commit": "25e96501f249b27cb930a09aba5aeb33a047d14c",
      "tree": "5cf657f7b256d5a05aaee7cf0a62125455915c48",
      "parents": [
        "dc581e62b74dafb1ef4aca1ab088e37ba6fd7c94"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@linaro.org",
        "time": "Fri Dec 08 12:49:34 2023 +0300"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Dec 16 12:09:35 2023 +0100"
      },
      "message": "parse: handle __cleanup__ attribute\n\nThe kernel has recently started using the __cleanup__ attribute.  Save\na pointer to cleanup function.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@linaro.org\u003e\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\u003e\n"
    },
    {
      "commit": "dc581e62b74dafb1ef4aca1ab088e37ba6fd7c94",
      "tree": "1dd170508fa32f53eca0b98de7f8756cd48a65af",
      "parents": [
        "ce1a6720f69e6233ec9abd4e9aae5945e05fda41"
      ],
      "author": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Mon Dec 11 13:01:06 2023 +0100"
      },
      "committer": {
        "name": "Luc Van Oostenryck",
        "email": "luc.vanoostenryck@gmail.com",
        "time": "Sat Dec 16 12:06:28 2023 +0100"
      },
      "message": "parse: add testcases for __cleanup__ attribute\n\nSigned-off-by: Luc Van Oostenryck \u003cluc.vanoostenryck@gmail.com\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"
    }
  ],
  "next": "e1f6c18b602e9d5c61100c57bf675484db6c8826"
}
