Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
LoopIdiomRecognize.h
Go to the documentation of this file.
1//===- LoopIdiomRecognize.h - Loop Idiom Recognize Pass ---------*- 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//
9// This pass implements an idiom recognizer that transforms simple loops into a
10// non-loop form. In cases that this kicks in, it can be a significant
11// performance win.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H
16#define LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H
17
19#include "llvm/IR/PassManager.h"
20
21namespace llvm {
22
23class Loop;
24class LPMUpdater;
25
26/// Options to disable Loop Idiom Recognize, which can be shared with other
27/// passes.
29 /// When true, the entire pass is disabled.
30 static bool All;
31
32 /// When true, Memset is disabled.
33 static bool Memset;
34
35 /// When true, Memcpy is disabled.
36 static bool Memcpy;
37
38 /// When true, Strlen is disabled.
39 static bool Strlen;
40
41 /// When true, Wcslen is disabled.
42 static bool Wcslen;
43
44 /// When true, HashRecognize is disabled.
45 static bool HashRecognize;
46};
47
48/// Performs Loop Idiom Recognize Pass.
49class LoopIdiomRecognizePass : public PassInfoMixin<LoopIdiomRecognizePass> {
50public:
53};
54
55} // end namespace llvm
56
57#endif // LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H
This header defines various interfaces for pass management in LLVM.
This header provides classes for managing per-loop analyses.
This class provides an interface for updating the loop pass manager based on mutations to the loop ne...
Performs Loop Idiom Recognize Pass.
PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U)
Represents a single loop in the control flow graph.
Definition LoopInfo.h:40
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager
The loop analysis manager.
Options to disable Loop Idiom Recognize, which can be shared with other passes.
static bool Wcslen
When true, Wcslen is disabled.
static bool HashRecognize
When true, HashRecognize is disabled.
static bool Strlen
When true, Strlen is disabled.
static bool Memset
When true, Memset is disabled.
static bool All
When true, the entire pass is disabled.
static bool Memcpy
When true, Memcpy is disabled.
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition PassManager.h:70