10#include "clang/Config/config.h"
11#include "llvm/ADT/StringSwitch.h"
12#include "llvm/Support/ErrorHandling.h"
13#include "llvm/TargetParser/Triple.h"
16#define LANGSTANDARD(id, name, lang, desc, features) \
17 static const LangStandard Lang_##id = {name, desc, features, Language::lang};
18#include "clang/Basic/LangStandards.def"
23 llvm::report_fatal_error(
"getLangStandardForKind() on unspecified kind");
24#define LANGSTANDARD(id, name, lang, desc, features) \
25 case lang_##id: return Lang_##id;
26#include "clang/Basic/LangStandards.def"
28 llvm_unreachable(
"Invalid language kind!");
32 return llvm::StringSwitch<Kind>(Name)
33#define LANGSTANDARD(id, name, lang, desc, features) .Case(name, lang_##id)
34#define LANGSTANDARD_ALIAS(id, alias) .Case(alias, lang_##id)
35#include "clang/Basic/LangStandards.def"
48 const llvm::Triple &T) {
52 llvm_unreachable(
"Invalid input kind!");
54 return LangStandard::lang_opencl12;
56 return LangStandard::lang_openclcpp10;
58 return LangStandard::lang_cuda;
63 return LangStandard::lang_gnu99;
64 return LangStandard::lang_gnu17;
66 return LangStandard::lang_gnu11;
70 return LangStandard::lang_gnucxx14;
71 return LangStandard::lang_gnucxx17;
73 return LangStandard::lang_c99;
75 return LangStandard::lang_hip;
77 return LangStandard::lang_hlsl2021;
79 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.
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)