xref: /llvm-project/flang/lib/Frontend/CodeGenOptions.cpp (revision 9e6b46a9846cf5051c2aaef361af0fe1a76c856e)
1869385b1SAndrzej Warzynski //===--- CodeGenOptions.cpp -----------------------------------------------===//
2869385b1SAndrzej Warzynski //
3869385b1SAndrzej Warzynski // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4869385b1SAndrzej Warzynski // See https://llvm.org/LICENSE.txt for license information.
5869385b1SAndrzej Warzynski // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6869385b1SAndrzej Warzynski //
7869385b1SAndrzej Warzynski //===----------------------------------------------------------------------===//
8869385b1SAndrzej Warzynski //
9869385b1SAndrzej Warzynski // Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
10869385b1SAndrzej Warzynski //
11869385b1SAndrzej Warzynski //===----------------------------------------------------------------------===//
12869385b1SAndrzej Warzynski 
13869385b1SAndrzej Warzynski #include "flang/Frontend/CodeGenOptions.h"
14*9e6b46a9SDavid Truby #include <optional>
15869385b1SAndrzej Warzynski #include <string.h>
16869385b1SAndrzej Warzynski 
17869385b1SAndrzej Warzynski namespace Fortran::frontend {
18869385b1SAndrzej Warzynski 
CodeGenOptions()19869385b1SAndrzej Warzynski CodeGenOptions::CodeGenOptions() {
20869385b1SAndrzej Warzynski #define CODEGENOPT(Name, Bits, Default) Name = Default;
21ef5ede52SUsman Nadeem #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default);
22869385b1SAndrzej Warzynski #include "flang/Frontend/CodeGenOptions.def"
23869385b1SAndrzej Warzynski }
24869385b1SAndrzej Warzynski 
getCodeModel(llvm::StringRef string)25*9e6b46a9SDavid Truby std::optional<llvm::CodeModel::Model> getCodeModel(llvm::StringRef string) {
26*9e6b46a9SDavid Truby   return llvm::StringSwitch<std::optional<llvm::CodeModel::Model>>(string)
27*9e6b46a9SDavid Truby       .Case("tiny", llvm::CodeModel::Model::Tiny)
28*9e6b46a9SDavid Truby       .Case("small", llvm::CodeModel::Model::Small)
29*9e6b46a9SDavid Truby       .Case("kernel", llvm::CodeModel::Model::Kernel)
30*9e6b46a9SDavid Truby       .Case("medium", llvm::CodeModel::Model::Medium)
31*9e6b46a9SDavid Truby       .Case("large", llvm::CodeModel::Model::Large)
32*9e6b46a9SDavid Truby       .Default(std::nullopt);
33*9e6b46a9SDavid Truby }
34*9e6b46a9SDavid Truby 
35869385b1SAndrzej Warzynski } // end namespace Fortran::frontend
36