LLVM  15.0.0git
SimplifyCFGOptions.h
Go to the documentation of this file.
1 //===- SimplifyCFGOptions.h - Control structure for SimplifyCFG -*- 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 // A set of parameters used to control the transforms in the SimplifyCFG pass.
10 // Options may change depending on the position in the optimization pipeline.
11 // For example, canonical form that includes switches and branches may later be
12 // replaced by lookup tables and selects.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef LLVM_TRANSFORMS_UTILS_SIMPLIFYCFGOPTIONS_H
17 #define LLVM_TRANSFORMS_UTILS_SIMPLIFYCFGOPTIONS_H
18 
19 namespace llvm {
20 
21 class AssumptionCache;
22 
25  bool ForwardSwitchCondToPhi = false;
28  bool NeedCanonicalLoop = true;
29  bool HoistCommonInsts = false;
30  bool SinkCommonInsts = false;
31  bool SimplifyCondBranch = true;
32  bool FoldTwoEntryPHINode = true;
33 
34  AssumptionCache *AC = nullptr;
35 
36  // Support 'builder' pattern to set members by name at construction time.
39  return *this;
40  }
43  return *this;
44  }
47  return *this;
48  }
51  return *this;
52  }
55  return *this;
56  }
59  return *this;
60  }
63  return *this;
64  }
66  AC = Cache;
67  return *this;
68  }
71  return *this;
72  }
73 
76  return *this;
77  }
78 };
79 
80 } // namespace llvm
81 
82 #endif // LLVM_TRANSFORMS_UTILS_SIMPLIFYCFGOPTIONS_H
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:17
llvm::SimplifyCFGOptions::setFoldTwoEntryPHINode
SimplifyCFGOptions & setFoldTwoEntryPHINode(bool B)
Definition: SimplifyCFGOptions.h:74
llvm::SimplifyCFGOptions::hoistCommonInsts
SimplifyCFGOptions & hoistCommonInsts(bool B)
Definition: SimplifyCFGOptions.h:57
llvm::SimplifyCFGOptions::BonusInstThreshold
int BonusInstThreshold
Definition: SimplifyCFGOptions.h:24
llvm::SimplifyCFGOptions::ConvertSwitchToLookupTable
bool ConvertSwitchToLookupTable
Definition: SimplifyCFGOptions.h:27
llvm::SimplifyCFGOptions::FoldTwoEntryPHINode
bool FoldTwoEntryPHINode
Definition: SimplifyCFGOptions.h:32
llvm::SimplifyCFGOptions::HoistCommonInsts
bool HoistCommonInsts
Definition: SimplifyCFGOptions.h:29
llvm::SimplifyCFGOptions::SimplifyCondBranch
bool SimplifyCondBranch
Definition: SimplifyCFGOptions.h:31
llvm::SimplifyCFGOptions::setSimplifyCondBranch
SimplifyCFGOptions & setSimplifyCondBranch(bool B)
Definition: SimplifyCFGOptions.h:69
llvm::SimplifyCFGOptions::AC
AssumptionCache * AC
Definition: SimplifyCFGOptions.h:34
B
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
llvm::SimplifyCFGOptions::bonusInstThreshold
SimplifyCFGOptions & bonusInstThreshold(int I)
Definition: SimplifyCFGOptions.h:37
llvm::SimplifyCFGOptions::sinkCommonInsts
SimplifyCFGOptions & sinkCommonInsts(bool B)
Definition: SimplifyCFGOptions.h:61
llvm::SimplifyCFGOptions::forwardSwitchCondToPhi
SimplifyCFGOptions & forwardSwitchCondToPhi(bool B)
Definition: SimplifyCFGOptions.h:41
I
#define I(x, y, z)
Definition: MD5.cpp:58
llvm::SimplifyCFGOptions::setAssumptionCache
SimplifyCFGOptions & setAssumptionCache(AssumptionCache *Cache)
Definition: SimplifyCFGOptions.h:65
llvm::SimplifyCFGOptions::NeedCanonicalLoop
bool NeedCanonicalLoop
Definition: SimplifyCFGOptions.h:28
llvm::SimplifyCFGOptions::convertSwitchToLookupTable
SimplifyCFGOptions & convertSwitchToLookupTable(bool B)
Definition: SimplifyCFGOptions.h:49
llvm::AssumptionCache
A cache of @llvm.assume calls within a function.
Definition: AssumptionCache.h:42
llvm::SimplifyCFGOptions::ForwardSwitchCondToPhi
bool ForwardSwitchCondToPhi
Definition: SimplifyCFGOptions.h:25
llvm::SimplifyCFGOptions::convertSwitchRangeToICmp
SimplifyCFGOptions & convertSwitchRangeToICmp(bool B)
Definition: SimplifyCFGOptions.h:45
llvm::SimplifyCFGOptions::ConvertSwitchRangeToICmp
bool ConvertSwitchRangeToICmp
Definition: SimplifyCFGOptions.h:26
llvm::SimplifyCFGOptions
Definition: SimplifyCFGOptions.h:23
llvm::SimplifyCFGOptions::SinkCommonInsts
bool SinkCommonInsts
Definition: SimplifyCFGOptions.h:30
llvm::SimplifyCFGOptions::needCanonicalLoops
SimplifyCFGOptions & needCanonicalLoops(bool B)
Definition: SimplifyCFGOptions.h:53