Skip to content

Commit e66b670

Browse files
authored
[CIR][Basic][NFC] Add the CIR language to the Language enum
Add the CIR language to the Language enum and the standard usages of it. commit-id:fd12b2c2 Reviewers: bcardosolopes, AaronBallman, erichkeane Reviewed By: AaronBallman, bcardosolopes Pull Request: #86072
1 parent d22cf43 commit e66b670

File tree

7 files changed

+21
-4
lines changed

7 files changed

+21
-4
lines changed

clang/include/clang/Basic/LangStandard.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ enum class Language : uint8_t {
2626
/// Assembly: we accept this only so that we can preprocess it.
2727
Asm,
2828

29-
/// LLVM IR: we accept this so that we can run the optimizer on it,
30-
/// and compile it to assembly or object code.
29+
/// LLVM IR & CIR: we accept these so that we can run the optimizer on them,
30+
/// and compile them to assembly or object code (or LLVM for CIR).
31+
CIR,
3132
LLVM_IR,
3233

3334
///@{ Languages that the frontend can parse and compile.

clang/include/clang/Driver/Types.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ TYPE("ir", LLVM_BC, INVALID, "bc", phases
9090
TYPE("lto-ir", LTO_IR, INVALID, "s", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
9191
TYPE("lto-bc", LTO_BC, INVALID, "o", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
9292

93+
TYPE("cir", CIR, INVALID, "cir", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
9394
// Misc.
9495
TYPE("ast", AST, INVALID, "ast", phases::Compile, phases::Backend, phases::Assemble, phases::Link)
9596
TYPE("ifs", IFS, INVALID, "ifs", phases::IfsMerge)

clang/lib/Basic/LangStandards.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ StringRef clang::languageToString(Language L) {
2121
return "Asm";
2222
case Language::LLVM_IR:
2323
return "LLVM IR";
24+
case Language::CIR:
25+
return "ClangIR";
2426
case Language::C:
2527
return "C";
2628
case Language::CXX:
@@ -92,6 +94,7 @@ LangStandard::Kind clang::getDefaultLanguageStandard(clang::Language Lang,
9294
switch (Lang) {
9395
case Language::Unknown:
9496
case Language::LLVM_IR:
97+
case Language::CIR:
9598
llvm_unreachable("Invalid input kind!");
9699
case Language::OpenCL:
97100
return LangStandard::lang_opencl12;

clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ StringRef getLanguageName(Language Lang) {
208208
case Language::Unknown:
209209
case Language::Asm:
210210
case Language::LLVM_IR:
211+
case Language::CIR:
211212
llvm_unreachable("Unsupported language kind");
212213
}
213214

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2757,6 +2757,9 @@ static void GenerateFrontendArgs(const FrontendOptions &Opts,
27572757
case Language::HLSL:
27582758
Lang = "hlsl";
27592759
break;
2760+
case Language::CIR:
2761+
Lang = "cir";
2762+
break;
27602763
}
27612764

27622765
GenerateArg(Consumer, OPT_x,
@@ -2958,6 +2961,7 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
29582961
.Cases("ast", "pcm", "precompiled-header",
29592962
InputKind(Language::Unknown, InputKind::Precompiled))
29602963
.Case("ir", Language::LLVM_IR)
2964+
.Case("cir", Language::CIR)
29612965
.Default(Language::Unknown);
29622966

29632967
if (DashX.isUnknown())
@@ -3323,6 +3327,7 @@ static bool IsInputCompatibleWithStandard(InputKind IK,
33233327
switch (IK.getLanguage()) {
33243328
case Language::Unknown:
33253329
case Language::LLVM_IR:
3330+
case Language::CIR:
33263331
llvm_unreachable("should not parse language flags for this input");
33273332

33283333
case Language::C:
@@ -3388,6 +3393,8 @@ static StringRef GetInputKindName(InputKind IK) {
33883393
return "Asm";
33893394
case Language::LLVM_IR:
33903395
return "LLVM IR";
3396+
case Language::CIR:
3397+
return "Clang IR";
33913398

33923399
case Language::HLSL:
33933400
return "HLSL";
@@ -3403,7 +3410,8 @@ void CompilerInvocationBase::GenerateLangArgs(const LangOptions &Opts,
34033410
const llvm::Triple &T,
34043411
InputKind IK) {
34053412
if (IK.getFormat() == InputKind::Precompiled ||
3406-
IK.getLanguage() == Language::LLVM_IR) {
3413+
IK.getLanguage() == Language::LLVM_IR ||
3414+
IK.getLanguage() == Language::CIR) {
34073415
if (Opts.ObjCAutoRefCount)
34083416
GenerateArg(Consumer, OPT_fobjc_arc);
34093417
if (Opts.PICLevel != 0)
@@ -3689,7 +3697,8 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
36893697
unsigned NumErrorsBefore = Diags.getNumErrors();
36903698

36913699
if (IK.getFormat() == InputKind::Precompiled ||
3692-
IK.getLanguage() == Language::LLVM_IR) {
3700+
IK.getLanguage() == Language::LLVM_IR ||
3701+
IK.getLanguage() == Language::CIR) {
36933702
// ObjCAAutoRefCount and Sanitize LangOpts are used to setup the
36943703
// PassManager in BackendUtil.cpp. They need to be initialized no matter
36953704
// what the input type is.

clang/lib/Frontend/FrontendActions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,6 +1083,7 @@ void PrintPreambleAction::ExecuteAction() {
10831083
case Language::CUDA:
10841084
case Language::HIP:
10851085
case Language::HLSL:
1086+
case Language::CIR:
10861087
break;
10871088

10881089
case Language::Unknown:

clang/lib/Frontend/FrontendOptions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ InputKind FrontendOptions::getInputKindForExtension(StringRef Extension) {
3434
.Case("hip", Language::HIP)
3535
.Cases("ll", "bc", Language::LLVM_IR)
3636
.Case("hlsl", Language::HLSL)
37+
.Case("cir", Language::CIR)
3738
.Default(Language::Unknown);
3839
}

0 commit comments

Comments
 (0)