| //===-- CommandLineOpts.cpp -- shared command line options ------*- 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| /// This file defines some shared command-line options that can be used when |
| /// debugging the test tools. |
| |
| #include "flang/Optimizer/Passes/CommandLineOpts.h" |
| |
| using namespace llvm; |
| |
| #define DisableOption(DOName, DOOption, DODescription) \ |
| cl::opt<bool> disable##DOName("disable-" DOOption, \ |
| cl::desc("disable " DODescription " pass"), \ |
| cl::init(false), cl::Hidden) |
| #define EnableOption(EOName, EOOption, EODescription) \ |
| cl::opt<bool> enable##EOName("enable-" EOOption, \ |
| cl::desc("enable " EODescription " pass"), \ |
| cl::init(false), cl::Hidden) |
| |
| cl::opt<bool> dynamicArrayStackToHeapAllocation( |
| "fdynamic-heap-array", |
| cl::desc("place all array allocations of dynamic size on the heap"), |
| cl::init(false), cl::Hidden); |
| |
| cl::opt<std::size_t> arrayStackAllocationThreshold( |
| "fstack-array-size", |
| cl::desc( |
| "place all array allocations more than <size> elements on the heap"), |
| cl::init(~static_cast<std::size_t>(0)), cl::Hidden); |
| |
| cl::opt<bool> ignoreMissingTypeDescriptors( |
| "ignore-missing-type-desc", |
| cl::desc("ignore failures to find derived type descriptors when " |
| "translating FIR to LLVM"), |
| cl::init(false), cl::Hidden); |
| |
| cl::opt<bool> skipExternalRttiDefinition( |
| "skip-external-rtti-definition", llvm::cl::init(false), |
| llvm::cl::desc("do not define rtti static objects for types belonging to " |
| "other compilation units"), |
| cl::Hidden); |
| |
| OptimizationLevel defaultOptLevel{OptimizationLevel::O0}; |
| |
| codegenoptions::DebugInfoKind noDebugInfo{codegenoptions::NoDebugInfo}; |
| |
| /// Optimizer Passes |
| DisableOption(CfgConversion, "cfg-conversion", "disable FIR to CFG pass"); |
| DisableOption(FirAvc, "avc", "array value copy analysis and transformation"); |
| DisableOption(FirMao, "memory-allocation-opt", |
| "memory allocation optimization"); |
| |
| DisableOption(FirAliasTags, "fir-alias-tags", "fir alias analysis"); |
| cl::opt<bool> useOldAliasTags( |
| "use-old-alias-tags", |
| cl::desc("Use a single TBAA tree for all functions and do not use " |
| "the FIR alias tags pass"), |
| cl::init(false), cl::Hidden); |
| |
| /// CodeGen Passes |
| DisableOption(CodeGenRewrite, "codegen-rewrite", "rewrite FIR for codegen"); |
| DisableOption(TargetRewrite, "target-rewrite", "rewrite FIR for target"); |
| DisableOption(DebugInfo, "debug-info", "Add debug info"); |
| DisableOption(FirToLlvmIr, "fir-to-llvmir", "FIR to LLVM-IR dialect"); |
| DisableOption(LlvmIrToLlvm, "llvm", "conversion to LLVM"); |
| DisableOption(BoxedProcedureRewrite, "boxed-procedure-rewrite", |
| "rewrite boxed procedures"); |
| |
| DisableOption(ExternalNameConversion, "external-name-interop", |
| "convert names with external convention"); |
| EnableOption(ConstantArgumentGlobalisation, "constant-argument-globalisation", |
| "the local constant argument to global constant conversion"); |
| DisableOption(CompilerGeneratedNamesConversion, "compiler-generated-names", |
| "replace special symbols in compiler generated names"); |