{"id":17741692,"url":"https://github.com/sloorush/llvm-pass-learn","last_synced_at":"2025-03-31T22:03:46.552Z","repository":{"id":110764037,"uuid":"554024361","full_name":"sloorush/llvm-pass-learn","owner":"sloorush","description":"Small dummy llvm pass created while learning how to write a llvm pass.","archived":false,"fork":false,"pushed_at":"2022-10-19T14:37:13.000Z","size":22,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-02T03:43:44.855Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sloorush.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-19T06:04:24.000Z","updated_at":"2024-05-02T03:43:44.856Z","dependencies_parsed_at":"2023-06-07T11:00:46.704Z","dependency_job_id":null,"html_url":"https://github.com/sloorush/llvm-pass-learn","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloorush%2Fllvm-pass-learn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloorush%2Fllvm-pass-learn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloorush%2Fllvm-pass-learn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sloorush%2Fllvm-pass-learn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sloorush","download_url":"https://codeload.github.com/sloorush/llvm-pass-learn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246547388,"owners_count":20794970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-26T04:08:05.264Z","updated_at":"2025-03-31T22:03:46.533Z","avatar_url":"https://github.com/sloorush.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# llvm-pass-learn\n\nA dummy LLVM pass collection made to learn.\nIt's for LLVM 14.\n\nBuild:\n\n    $ cd llvm-pass-skeleton\n    $ mkdir build\n    $ cd build\n    $ cmake ..\n    $ make\n    $ cd ..\n\n## Logger Pass\n\nA dummy LLVM pass to log the LLVM IR and get the functions, basic blocks, and instructions.\n\nRun:\n\n    $ clang -flegacy-pass-manager -Xclang -load -Xclang build/logger/libLoggerPass.* a.cpp\n\n## BadCalculator Pass\n\nA bad calculator that changes you first addition to multiplication\n\nRun:\n\n    $ clang -flegacy-pass-manager -Xclang -load -Xclang build/badCalculator/libBadCalculatorPass.* a.cpp\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample\u003c/summary\u003e\n  \n  ```\n❯ clang a.cpp\n❯ ./a.out\n❯ echo $?\n6\n❯ ./a.out a b c\n❯ echo $?\n9\n❯ clang -flegacy-pass-manager -Xclang -load -Xclang build/badCalculator/libBadCalculatorPass.* a.cpp\nHOHOHO Bad calculator\n❯ ./a.out\n❯ echo $?\n5\n❯ ./a.out a b c\n❯ echo $?\n20\n  ```\n\u003c/details\u003e\n\n## First operator\n\nLogs the result of the first binary operation\n\n\u003cdetails\u003e\n  \u003csummary\u003eExample\u003c/summary\u003e\n  \n  ```\n❯ cc -c rtlib.c\n❯ clang -flegacy-pass-manager -Xclang -load -Xclang build/firstOperator/libFirstOperatorPass.so -c a.cpp\n❯ cc rtlib.o a.o -o exe\n❯ ./exe\ncomputed: 6\n  ```\n\u003c/details\u003e\n\n---\n\nSkeleton to write the LLVM pass was picked up from -\u003e https://github.com/sampsyo/llvm-pass-skeleton\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloorush%2Fllvm-pass-learn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsloorush%2Fllvm-pass-learn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsloorush%2Fllvm-pass-learn/lists"}