class LoopSinkPass

Declaration

class LoopSinkPass : public PassInfoMixin { /* full declaration omitted */ };

Description

A pass that does profile-guided sinking of instructions into loops. This is a function pass as it shouldn't be composed into any kind of unified loop pass pipeline. The goal of it is to sink code into loops that is loop invariant but only required within the loop body when doing so reduces the global expected dynamic frequency with which it executes. A classic example is an extremely cold branch within a loop body. We do this as a separate pass so that during normal optimization all invariant operations can be held outside the loop body to simplify fundamental analyses and transforms of the loop.

Declared at: llvm/include/llvm/Transforms/Scalar/LoopSink.h:33

Inherits from: PassInfoMixin

Method Overview

  • public llvm::PreservedAnalyses run(llvm::Function & F, llvm::FunctionAnalysisManager & FAM)

Methods

ΒΆllvm::PreservedAnalyses run(
    llvm::Function& F,
    llvm::FunctionAnalysisManager& FAM)

Declared at: llvm/include/llvm/Transforms/Scalar/LoopSink.h:35

Parameters

llvm::Function& F
llvm::FunctionAnalysisManager& FAM