10#include "clang/Config/config.h"
11#include "llvm/ADT/StringSwitch.h"
12#include "llvm/Support/ErrorHandling.h"
13#include "llvm/TargetParser/Triple.h"
18 case Language::Unknown:
22 case Language::LLVM_IR:
30 case Language::ObjCXX:
31 return "Objective-C++";
32 case Language::OpenCL:
34 case Language::OpenCLCXX:
38 case Language::RenderScript:
39 return "RenderScript";
46 llvm_unreachable(
"unhandled language kind");
49#define LANGSTANDARD(id, name, lang, desc, features) \
50 static const LangStandard Lang_##id = {name, desc, features, Language::lang};
51#include "clang/Basic/LangStandards.def"
56 llvm::report_fatal_error(
"getLangStandardForKind() on unspecified kind");
57#define LANGSTANDARD(id, name, lang, desc, features) \
58 case lang_##id: return Lang_##id;
59#include "clang/Basic/LangStandards.def"
61 llvm_unreachable(
"Invalid language kind!");
65 return llvm::StringSwitch<Kind>(Name)
66#define LANGSTANDARD(id, name, lang, desc, features) .Case(name, lang_##id)
67#define LANGSTANDARD_ALIAS(id, alias) .Case(alias, lang_##id)
68#include "clang/Basic/LangStandards.def"
81 const llvm::Triple &T) {
85 llvm_unreachable(
"Invalid input kind!");
87 return LangStandard::lang_opencl12;
89 return LangStandard::lang_openclcpp10;
94 return LangStandard::lang_gnu99;
95 return LangStandard::lang_gnu17;
97 return LangStandard::lang_gnu11;
102 return LangStandard::lang_gnucxx17;
104 return LangStandard::lang_c99;
106 return LangStandard::lang_hlsl2021;
108 llvm_unreachable(
"unhandled Language kind!");
LangStandard::Kind getDefaultLanguageStandard(clang::Language Lang, const llvm::Triple &T)
Language
The language for the input, used to select and validate the language standard and possible actions.
@ C
Languages that the frontend can parse and compile.
@ LLVM_IR
LLVM IR: we accept this so that we can run the optimizer on it, and compile it to assembly or object ...
@ Asm
Assembly: we accept this only so that we can preprocess it.
StringRef languageToString(Language L)
LangStandard - Information about the properties of a particular language standard.
static const LangStandard * getLangStandardForName(StringRef Name)
static const LangStandard & getLangStandardForKind(Kind K)
static Kind getLangKind(StringRef Name)