{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":184234940,"defaultBranch":"master","name":"llvm-project","ownerLogin":"Ericsson","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2019-04-30T09:40:29.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/4161311?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726471515.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"728c3c9d8c0575acb144fb067736ab01873eb16e","ref":"refs/heads/charptr-ucharptr-arraybound-fp","pushedAt":"2024-09-16T07:25:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][NFC] Add a testcase documenting a borderline FP report\n\nAdd a FIXME testcase which documents less than ideal behavior of the\nanalyzer when a `const char *` is converted to `const unsigned char *`.\nThis testcase is motivated by an ArrayBoundV2 report produced on the\nsource file `id3v2enc.c` within the ffmpeg project.","shortMessageHtmlLink":"[analyzer][NFC] Add a testcase documenting a borderline FP report"}},{"before":null,"after":"0258b5491b90feaa2bfe72ee5a8afc7f4b554ac7","ref":"refs/heads/lazycompoundval-debug","pushedAt":"2024-09-10T15:40:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[DEBUG][analyzer] Printf-style debugging for lazy compound values\n\n... to debug unusual behavior of `InterestingLValueHandler`.\n\nDO NOT MERGE THIS COMMIT!","shortMessageHtmlLink":"[DEBUG][analyzer] Printf-style debugging for lazy compound values"}},{"before":"24126e3db4f064569836057f3ac6ee7bf941fd3d","after":null,"ref":"refs/heads/remove-MallocOverflow","pushedAt":"2024-08-14T13:07:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"36821708145587553f13df8648920f281b318240","after":"24126e3db4f064569836057f3ac6ee7bf941fd3d","ref":"refs/heads/remove-MallocOverflow","pushedAt":"2024-08-14T12:05:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Mention this change in the release notes","shortMessageHtmlLink":"Mention this change in the release notes"}},{"before":null,"after":"36821708145587553f13df8648920f281b318240","ref":"refs/heads/remove-MallocOverflow","pushedAt":"2024-08-13T13:15:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer] Delete alpha.security.MallocOverflow\n\n...because it is too noisy to be useful right now, and its architecture\nis terrible, so it can't act a starting point of future development.\n\nThe main problem with this checker is that it tries to do (or at least\nfake) path-sensitive analysis without actually using the established\npath-sensitive analysis engine.\n\nInstead of actually tracking the symbolic values and the known\nconstraints on them, this checker blindly gropes the AST and uses\nheuristics like \"this variable was seen in a comparison operator\nexpression that is not a loop condition, so it's probably not too\nlarge\" (which was improved in a separate commit to at least ignore\ncomparison operators that appear after the actual `malloc()` call).\n\nThis might have been acceptable in 2011 (when this checker was added),\nbut since then we developed a significantly better standard approach for\nanalysis and this old relic doesn't deserve to remain in the codebase.\n\nNeedless to say, this primitive approach causes lots of false positives\n(and presumably false negatives as well), which ensures that this\nalpha checker won't be missed by the users.\n\nIt would be good to eventually have a stable, path-sensitive checker\nthat could succeed in the task where this hacky implementation fails,\nbut the first step towards that goal is taking out this old garbage,\nwhich confuses the potential users or contributors.\n\n(I don't have plans for reimplementing the goals of this checker. It\ncould happen eventually, but right now I have many plans that are higher\npriority than this.)","shortMessageHtmlLink":"[analyzer] Delete alpha.security.MallocOverflow"}},{"before":"3309baa972ed6f2ba6870c255aea8a21410f505c","after":null,"ref":"refs/heads/invalidateRegions-nfc","pushedAt":"2024-08-12T09:49:43.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"4faf523b8f7dc6e343082649867664b1439789de","after":null,"ref":"refs/heads/invalidateRegions-doc-nfc","pushedAt":"2024-08-12T09:48:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":null,"after":"4faf523b8f7dc6e343082649867664b1439789de","ref":"refs/heads/invalidateRegions-doc-nfc","pushedAt":"2024-08-08T14:23:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][NFC] Improve documentation of `invalidateRegion` methods\n\n... within the classes `StoreManager` and `ProgramState` and describe\nthe connection between the two methods.","shortMessageHtmlLink":"[analyzer][NFC] Improve documentation of invalidateRegion methods"}},{"before":null,"after":"3309baa972ed6f2ba6870c255aea8a21410f505c","ref":"refs/heads/invalidateRegions-nfc","pushedAt":"2024-08-08T12:43:25.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][NFC] Trivial refactoring of region invalidation\n\nThis commit removes `invalidateRegionsImpl()`, moving its body to\n`invalidateRegions(ValueList Values, ...)`, because it was a completely\nuseless layer of indirection.\n\nMoreover I'm fixing some strange indentation within this function body\nand renaming two variables to the proper `UpperCamelCase` format.","shortMessageHtmlLink":"[analyzer][NFC] Trivial refactoring of region invalidation"}},{"before":"2ee089cfccdb9efd08d9c16a4617cd5a6336ba17","after":null,"ref":"refs/heads/delete-obsolete-CoreEngine-comment","pushedAt":"2024-08-07T13:31:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"e10333e9b3a385e79aad928e820aa28049dadc93","after":null,"ref":"refs/heads/EXPERIMENTAL-widen-ambigous-loop-exits","pushedAt":"2024-08-05T16:28:31.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":null,"after":"e10333e9b3a385e79aad928e820aa28049dadc93","ref":"refs/heads/EXPERIMENTAL-widen-ambiguous-loop-exits","pushedAt":"2024-08-05T16:27:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][EXPERIMENTAL] Widen instead of ambiguous loop exits\n\nThis is a proof of concept change, do not merge!\n\nThis commit does two things:\n(1) it hardcodes the activation of the loop widening feature;\n(2) it prevents the \"exit the loop\" branches in situation where the\nvalue of the loop condition is ambiguous.\n\nThis is a rough and inaccurate approximation of my planned loop modeling\nbehavior.\n\nNote that the tests are not adapted to this change and some of them are\nfailing.","shortMessageHtmlLink":"[analyzer][EXPERIMENTAL] Widen instead of ambiguous loop exits"}},{"before":null,"after":"e10333e9b3a385e79aad928e820aa28049dadc93","ref":"refs/heads/EXPERIMENTAL-widen-ambigous-loop-exits","pushedAt":"2024-08-05T16:23:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][EXPERIMENTAL] Widen instead of ambiguous loop exits\n\nThis is a proof of concept change, do not merge!\n\nThis commit does two things:\n(1) it hardcodes the activation of the loop widening feature;\n(2) it prevents the \"exit the loop\" branches in situation where the\nvalue of the loop condition is ambiguous.\n\nThis is a rough and inaccurate approximation of my planned loop modeling\nbehavior.\n\nNote that the tests are not adapted to this change and some of them are\nfailing.","shortMessageHtmlLink":"[analyzer][EXPERIMENTAL] Widen instead of ambiguous loop exits"}},{"before":"8700f803c5191e5bb266797e0d130ea27776101f","after":"25204bb287e0b05f8e2bbd76a1989d5c5cfa5c4a","ref":"refs/heads/mutex-parent-class-match","pushedAt":"2024-08-02T09:05:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Add a testcase to prevent regressions","shortMessageHtmlLink":"Add a testcase to prevent regressions"}},{"before":null,"after":"8700f803c5191e5bb266797e0d130ea27776101f","ref":"refs/heads/mutex-parent-class-match","pushedAt":"2024-08-01T16:25:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer] Restore recognition of mutex methods\n\nBefore commit 705788c the checker alpha.unix.BlockInCriticalSection\n\"recognized\" the methods `std::mutex::lock` and `std::mutex::unlock`\nwith an extremely trivial check that accepted any function (or method)\nnamed lock/unlock.\n\nTo avoid matching unrelated user-defined function, this was refined to a\ncheck that also requires the presence of \"std\" and \"mutex\" as distinct\nparts of the qualified name.\n\nHowever, as #99628 reported, there are standard library implementations\nwhere some methods of `std::mutex` are inherited from an implementation\ndetail base class and the new code wasn't able to recognize these\nmethods, which led to emitting false positive reports.\n\nAs a workaround, this commit partially restores the old behavior by\nomitting the check for the class name.\n\nIn the future, it would be good to replace this hack with a solution\nwhich ensures that `CallDescription` understands inherited methods.","shortMessageHtmlLink":"[analyzer] Restore recognition of mutex methods"}},{"before":null,"after":"2ee089cfccdb9efd08d9c16a4617cd5a6336ba17","ref":"refs/heads/delete-obsolete-CoreEngine-comment","pushedAt":"2024-07-30T11:55:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][NFC] Prune a very obsolete comment about CoreEngine\n\nOnce upon a time, a long time (16 years) ago there were two classes\ncalled `GREngineImpl` and `template GrEngine`. As the\nyears passed, they were merged into a single class that went through\nseveral renames, but this comment still preserved the memory of their\nold relationship... until now.","shortMessageHtmlLink":"[analyzer][NFC] Prune a very obsolete comment about CoreEngine"}},{"before":null,"after":"15fae768b0ad2412858520a137a51e7190a591cd","ref":"refs/heads/ctor-test-cleanup","pushedAt":"2024-07-25T13:51:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer][NFC] Minor cleanup in two test files.\n\nThis commit contains two unrelated trivial changes:\n(1) Three unused variables are removed from `ctor.mm`.\n(2) A FIXME block is removed from `ctor-array.cpp` because it described\n an issue that was resolved since then.","shortMessageHtmlLink":"[analyzer][NFC] Minor cleanup in two test files."}},{"before":"83b87b1e633f8c50cae9923e4bb3f5f68997cdcd","after":null,"ref":"refs/heads/arrayboundv2_simplify_underflow_report","pushedAt":"2024-07-22T09:44:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"d7b71a21368c70da21b2ca6e7d02c7022ec21dde","after":"83b87b1e633f8c50cae9923e4bb3f5f68997cdcd","ref":"refs/heads/arrayboundv2_simplify_underflow_report","pushedAt":"2024-07-22T09:29:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Fix an obsolete comment","shortMessageHtmlLink":"Fix an obsolete comment"}},{"before":"2765bc97d3242d50fd73aedb9e9d38dfdcef814c","after":"d7b71a21368c70da21b2ca6e7d02c7022ec21dde","ref":"refs/heads/arrayboundv2_simplify_underflow_report","pushedAt":"2024-07-12T19:39:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Alternative approach: tweak the `Profile()`` method of `BugReport`s\n\nThis commit re-adds the concrete offset value at the end of the (long)\n`Description` of the underflow report, but ensures that the `Profile()`\nmethod of `PathSensitiveBugReport` only uses the _short_ description (as\nreturned by `getShortDescription()`) instead of the the `Description`\nfield.\n\nFor the sake of consistency, the same modification is also applied to\n`BasicBugReport::Profile()`.\n\nThis modification of `Profile()` is a no-op for most of the checkers,\nbecause there are very few checkers that set a separate short\ndescription for their bug reports and `getShortDescription()` defaults\nto returning the long `Description` when the field `ShortDescription` is\nan empty string (i.e. unspecified).\n\nI'd say that it was a bug that the short description (which is arguably\n_the_ human-readable \"hash\" of the report) wasn't included in the hash\ncalculations performed by `Profile()`.\n\nOn the other hand, I think it'll be useful that `Profile()` ignores the\nlong description, because then we'll have a nice place where we can\nprint the \"nice to mention, but not enough to create a fundamentally\ndifferent report\" secondary information.\n\n(Note that the long description is essentially the \"final note on the\nbug path\" and the other notes are also ignored by `Profile()` -- because\nthey are calculated later by the visitors.)","shortMessageHtmlLink":"Alternative approach: tweak the Profile() method of BugReport`s"}},{"before":null,"after":"2765bc97d3242d50fd73aedb9e9d38dfdcef814c","ref":"refs/heads/arrayboundv2_simplify_underflow_report","pushedAt":"2024-07-12T12:01:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[analyzer] Don't display the offset value in underflows\n\nPreviously alpha.security.ArrayBoundV2 displayed the (negative) offset\nvalue when it reported an underflow, but this produced lots of very\nsimilar and redundant reports in certain situations.\n\nAfter this commit the offset won't be printed so the usual deduplication\nwill handle these reports as equivalent (and print only one of them).\n\nSee https://github.com/llvm/llvm-project/issues/86969 for background.","shortMessageHtmlLink":"[analyzer] Don't display the offset value in underflows"}},{"before":"a3ced148179b1082f755c54b9e0307025b7f7daf","after":null,"ref":"refs/heads/fix-sizeof-expression-diag","pushedAt":"2024-07-02T08:27:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"dd18d9f8daef7fc312ccd0113ad571a3d69ac131","after":"a3ced148179b1082f755c54b9e0307025b7f7daf","ref":"refs/heads/fix-sizeof-expression-diag","pushedAt":"2024-07-02T08:25:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Improve the release notes","shortMessageHtmlLink":"Improve the release notes"}},{"before":null,"after":"cbab23fbbd4698033563b5c5ef224a9161a00eda","ref":"refs/heads/EXPERIMENTAL-limit-loops-to-2-iter","pushedAt":"2024-06-24T14:02:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[EXPERIMENTAL][analyzer] Limit loop modeling to two iterations\n\nDO NOT MERGE; this is just a proof-of-concept patch.\n\nBecause it is justified to assume that a loop can run for two iterations\n(otherwise the user wouldn't have written a loop), but it's not\njustified to assume that the loop condition can be satisfied three times\n(because there are examples where e.g. the developer knows that a data\nstructure may have <= 2 elements, and then the analyzer shouldn't\n\"hallucinate\" an execution path where three iterations are executed).\n\nMoreover, it's unlikely that a bug will be detectable in the third\niteration (after two iterations where it didn't appear), so it's\nplausible that this could become the new default behavior of CSA.","shortMessageHtmlLink":"[EXPERIMENTAL][analyzer] Limit loop modeling to two iterations"}},{"before":"51373e4d0d88865ab262094f8af2a2e7cd2f0f9e","after":"dd18d9f8daef7fc312ccd0113ad571a3d69ac131","ref":"refs/heads/fix-sizeof-expression-diag","pushedAt":"2024-06-20T14:35:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Add a FIXME","shortMessageHtmlLink":"Add a FIXME"}},{"before":"06adc063c2388ea534537f5a417751fdf64b22cd","after":"51373e4d0d88865ab262094f8af2a2e7cd2f0f9e","ref":"refs/heads/fix-sizeof-expression-diag","pushedAt":"2024-06-20T14:33:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"Return to using semicolons in the messages","shortMessageHtmlLink":"Return to using semicolons in the messages"}},{"before":"af5c7a774e64bc1ff9deed0d2ab602f5593a2b88","after":"06adc063c2388ea534537f5a417751fdf64b22cd","ref":"refs/heads/fix-sizeof-expression-diag","pushedAt":"2024-06-14T14:20:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"},"commit":{"message":"[clang-tidy] Clarify diagnostics of bugprone-sizeof-expression\n\n...becasue they were strangely worded and in a few cases outright\nincorrect.","shortMessageHtmlLink":"[clang-tidy] Clarify diagnostics of bugprone-sizeof-expression"}},{"before":"0195a7b666d4214470e5cb6b1e0a435c63ff4d05","after":null,"ref":"refs/heads/SizeofExpression-only-msg-updates","pushedAt":"2024-06-12T12:28:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"59bd1b83e4fa89b371f4d1a96c51fc7a1b4ad170","after":null,"ref":"refs/heads/SizeofPointer-move-to-tidy","pushedAt":"2024-06-12T12:27:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}},{"before":"a168ee43267c83c2f59e3d8e8db746ecf62eb2ce","after":null,"ref":"refs/heads/SizeofPointer-remove","pushedAt":"2024-06-12T12:26:55.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"NagyDonat","name":"Donát Nagy","path":"/NagyDonat","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43410265?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQwNzoyNToxNS4wMDAwMDBazwAAAAS3IRsM","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQwNzoyNToxNS4wMDAwMDBazwAAAAS3IRsM","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNi0xMlQxMjoyNjo1NS4wMDAwMDBazwAAAARjSK2R"}},"title":"Activity · Ericsson/llvm-project"}