Developer knowledge network · moderated exchange

Zajednica UnreliableCode

Zajednica za istraživanje, obrnuti inženjering i programiranje programera

Knowledge indexŽivjeti
4Categories
919Threads
2.8KPostovi
Analysis

Writing a Custom LLVM Intermediate Representation (IR) Pass for Constant Folding & Dead Code Elimination [StackOverflow Architecture Guide]

llvm_compiler_dev
LLVM & Clang Hacker
MEMBER
Rep: 139
Datum pridruživanja: Jul 2018
Postovi: 21
Hvala: 15
4 prije tjedana · Jul 26, 2026 3:58 PM
#1

How LLVM passes transform Three-Address Code SSA form:

CPP
#include "llvm/IR/PassManager.h"
#include "llvm/Passes/PassPlugin.h"

struct DeadBranchEliminator : llvm::PassInfoMixin<DeadBranchEliminator> {
    llvm::PreservedAnalyses run(llvm::Function& F, llvm::FunctionAnalysisManager& FAM) {
        for (auto& BB : F) {
            for (auto& Inst : BB) {
                if (auto* branch = llvm::dyn_cast<llvm::BranchInst>(&Inst)) {
                    if (branch->isConditional()) {
                        if (auto* c = llvm::dyn_cast<llvm::ConstantInt>(branch->getCondition())) {
                            // Constant condition found: simplify conditional branch to direct jump!
                        }
                    }
                }
            }
        }
        return llvm::PreservedAnalyses::all();
    }
};
modern_cpp_artisan
C++ Template Wizard
MEMBER
Rep: 124
Datum pridruživanja: Jun 2019
Postovi: 29
Hvala: 72
4 prije tjedana · Jul 26, 2026 5:48 PM
#2

LLVM's New Pass Manager (llvm::PassInfoMixin) makes writing custom optimization and instrumentation passes so clean.

vtable_slayer
Senior Reverser
MEMBER
Rep: 215
Datum pridruživanja: Mar 2018
Postovi: 86
Hvala: 61
3 prije tjedana · Jul 27, 2026 11:10 AM
#3

Static Single Assignment (SSA) form with phi nodes makes dataflow analysis linear time.