12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===- SimplifyCFGOptions.h - Control structure for SimplifyCFG -*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // A set of parameters used to control the transforms in the SimplifyCFG pass.
- // Options may change depending on the position in the optimization pipeline.
- // For example, canonical form that includes switches and branches may later be
- // replaced by lookup tables and selects.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_TRANSFORMS_UTILS_SIMPLIFYCFGOPTIONS_H
- #define LLVM_TRANSFORMS_UTILS_SIMPLIFYCFGOPTIONS_H
- namespace llvm {
- class AssumptionCache;
- struct SimplifyCFGOptions {
- int BonusInstThreshold = 1;
- bool ForwardSwitchCondToPhi = false;
- bool ConvertSwitchToLookupTable = false;
- bool NeedCanonicalLoop = true;
- bool HoistCommonInsts = false;
- bool SinkCommonInsts = false;
- bool SimplifyCondBranch = true;
- bool FoldTwoEntryPHINode = true;
- AssumptionCache *AC = nullptr;
- // Support 'builder' pattern to set members by name at construction time.
- SimplifyCFGOptions &bonusInstThreshold(int I) {
- BonusInstThreshold = I;
- return *this;
- }
- SimplifyCFGOptions &forwardSwitchCondToPhi(bool B) {
- ForwardSwitchCondToPhi = B;
- return *this;
- }
- SimplifyCFGOptions &convertSwitchToLookupTable(bool B) {
- ConvertSwitchToLookupTable = B;
- return *this;
- }
- SimplifyCFGOptions &needCanonicalLoops(bool B) {
- NeedCanonicalLoop = B;
- return *this;
- }
- SimplifyCFGOptions &hoistCommonInsts(bool B) {
- HoistCommonInsts = B;
- return *this;
- }
- SimplifyCFGOptions &sinkCommonInsts(bool B) {
- SinkCommonInsts = B;
- return *this;
- }
- SimplifyCFGOptions &setAssumptionCache(AssumptionCache *Cache) {
- AC = Cache;
- return *this;
- }
- SimplifyCFGOptions &setSimplifyCondBranch(bool B) {
- SimplifyCondBranch = B;
- return *this;
- }
- SimplifyCFGOptions &setFoldTwoEntryPHINode(bool B) {
- FoldTwoEntryPHINode = B;
- return *this;
- }
- };
- } // namespace llvm
- #endif // LLVM_TRANSFORMS_UTILS_SIMPLIFYCFGOPTIONS_H
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|