LLVM 19.0.0git
CFGuard.h
Go to the documentation of this file.
1//===-- CFGuard.h - CFGuard Transformations ---------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===---------------------------------------------------------------------===//
8// Windows Control Flow Guard passes (/guard:cf).
9//===---------------------------------------------------------------------===//
10
11#ifndef LLVM_TRANSFORMS_CFGUARD_H
12#define LLVM_TRANSFORMS_CFGUARD_H
13
14#include "llvm/IR/PassManager.h"
15
16namespace llvm {
17
18class FunctionPass;
19
20class CFGuardPass : public PassInfoMixin<CFGuardPass> {
21public:
22 enum class Mechanism { Check, Dispatch };
23
24 CFGuardPass(Mechanism M = Mechanism::Check) : GuardMechanism(M) {}
26
27private:
28 Mechanism GuardMechanism;
29};
30
31/// Insert Control FLow Guard checks on indirect function calls.
32FunctionPass *createCFGuardCheckPass();
33
34/// Insert Control FLow Guard dispatches on indirect function calls.
35FunctionPass *createCFGuardDispatchPass();
36
37} // namespace llvm
38
39#endif
#define F(x, y, z)
Definition: MD5.cpp:55
FunctionAnalysisManager FAM
This header defines various interfaces for pass management in LLVM.
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:321
PreservedAnalyses run(Function &F, FunctionAnalysisManager &FAM)
Definition: CFGuard.cpp:303
CFGuardPass(Mechanism M=Mechanism::Check)
Definition: CFGuard.h:24
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:109
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
FunctionPass * createCFGuardDispatchPass()
Insert Control FLow Guard dispatches on indirect function calls.
Definition: CFGuard.cpp:317
FunctionPass * createCFGuardCheckPass()
Insert Control FLow Guard checks on indirect function calls.
Definition: CFGuard.cpp:313
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition: PassManager.h:74