10#include "clang/Config/config.h"
11#include "llvm/ADT/StringSwitch.h"
12#include "llvm/Support/ErrorHandling.h"
13#include "llvm/TargetParser/Triple.h"
33 return "Objective-C++";
46 llvm_unreachable(
"unhandled language kind");
49#define LANGSTANDARD(id, name, lang, desc, features, version) \
50 static const LangStandard Lang_##id = {name, desc, features, Language::lang, \
52#include "clang/Basic/LangStandards.def"
57 llvm::report_fatal_error(
"getLangStandardForKind() on unspecified kind");
58#define LANGSTANDARD(id, name, lang, desc, features, version) \
61#include "clang/Basic/LangStandards.def"
63 llvm_unreachable(
"Invalid language kind!");
67 return llvm::StringSwitch<Kind>(Name)
68#define LANGSTANDARD(id, name, lang, desc, features, version) \
69 .Case(name, lang_##id)
70#define LANGSTANDARD_ALIAS(id, alias) .Case(alias, lang_##id)
71#include "clang/Basic/LangStandards.def"
76 return llvm::StringSwitch<LangStandard::Kind>(Name)
77 .Case(
"2016", LangStandard::lang_hlsl2016)
78 .Case(
"2017", LangStandard::lang_hlsl2017)
79 .Case(
"2018", LangStandard::lang_hlsl2018)
80 .Case(
"2021", LangStandard::lang_hlsl2021)
81 .Case(
"202x", LangStandard::lang_hlsl202x)
82 .Case(
"202y", LangStandard::lang_hlsl202y)
95 const llvm::Triple &
T) {
100 llvm_unreachable(
"Invalid input kind!");
102 return LangStandard::lang_opencl12;
104 return LangStandard::lang_openclcpp10;
109 return LangStandard::lang_gnu99;
110 return LangStandard::lang_gnu17;
112 return LangStandard::lang_gnu11;
117 return LangStandard::lang_gnucxx17;
119 return LangStandard::lang_hlsl202x;
121 llvm_unreachable(
"unhandled Language kind!");
The JSON file list parser is used to communicate input to InstallAPI.
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.
@ CIR
LLVM IR & CIR: we accept these so that we can run the optimizer on them, and compile them to assembly...
@ Asm
Assembly: we accept this only so that we can preprocess it.
const FunctionProtoType * T
StringRef languageToString(Language L)
LangStandard - Information about the properties of a particular language standard.
static const LangStandard * getLangStandardForName(StringRef Name)
static Kind getHLSLLangKind(StringRef Name)
static const LangStandard & getLangStandardForKind(Kind K)
static Kind getLangKind(StringRef Name)