diff options
Diffstat (limited to 'clang/lib/Driver/Types.cpp')
| -rw-r--r-- | clang/lib/Driver/Types.cpp | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/clang/lib/Driver/Types.cpp b/clang/lib/Driver/Types.cpp index 8f6adc6c2ad1..66da6fe97059 100644 --- a/clang/lib/Driver/Types.cpp +++ b/clang/lib/Driver/Types.cpp @@ -65,9 +65,16 @@ static bool isPreprocessedModuleType(ID Id) { return Id == TY_CXXModule || Id == TY_PP_CXXModule; } +static bool isPreprocessedHeaderUnitType(ID Id) { + return Id == TY_CXXSHeader || Id == TY_CXXUHeader || Id == TY_CXXHUHeader || + Id == TY_PP_CXXHeaderUnit; +} + types::ID types::getPrecompiledType(ID Id) { if (isPreprocessedModuleType(Id)) return TY_ModuleFile; + if (isPreprocessedHeaderUnitType(Id)) + return TY_HeaderUnit; if (onlyPrecompileType(Id)) return TY_PCH; return TY_INVALID; @@ -139,6 +146,10 @@ bool types::isAcceptedByClang(ID Id) { case TY_CLHeader: case TY_ObjCHeader: case TY_PP_ObjCHeader: case TY_CXXHeader: case TY_PP_CXXHeader: + case TY_CXXSHeader: + case TY_CXXUHeader: + case TY_CXXHUHeader: + case TY_PP_CXXHeaderUnit: case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: case TY_CXXModule: case TY_PP_CXXModule: case TY_AST: case TY_ModuleFile: case TY_PCH: @@ -148,6 +159,20 @@ bool types::isAcceptedByClang(ID Id) { } } +bool types::isAcceptedByFlang(ID Id) { + switch (Id) { + default: + return false; + + case TY_Fortran: + case TY_PP_Fortran: + return true; + case TY_LLVM_IR: + case TY_LLVM_BC: + return true; + } +} + bool types::isDerivedFromC(ID Id) { switch (Id) { default: @@ -210,6 +235,10 @@ bool types::isCXX(ID Id) { case TY_CXX: case TY_PP_CXX: case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: case TY_CXXHeader: case TY_PP_CXXHeader: + case TY_CXXSHeader: + case TY_CXXUHeader: + case TY_CXXHUHeader: + case TY_PP_CXXHeaderUnit: case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: case TY_CXXModule: case TY_PP_CXXModule: case TY_CUDA: case TY_PP_CUDA: case TY_CUDA_DEVICE: @@ -257,16 +286,6 @@ bool types::isHIP(ID Id) { } } -bool types::isFortran(ID Id) { - switch (Id) { - default: - return false; - - case TY_Fortran: case TY_PP_Fortran: - return true; - } -} - bool types::isSrcFile(ID Id) { return Id != TY_Object && getPreprocessedType(Id) != TY_INVALID; } @@ -323,6 +342,7 @@ types::ID types::lookupTypeForExtension(llvm::StringRef Ext) { .Case("hpp", TY_CXXHeader) .Case("hxx", TY_CXXHeader) .Case("iim", TY_PP_CXXModule) + .Case("iih", TY_PP_CXXHeaderUnit) .Case("lib", TY_Object) .Case("mii", TY_PP_ObjCXX) .Case("obj", TY_Object) @@ -332,6 +352,7 @@ types::ID types::lookupTypeForExtension(llvm::StringRef Ext) { .Case("c++m", TY_CXXModule) .Case("cppm", TY_CXXModule) .Case("cxxm", TY_CXXModule) + .Case("hlsl", TY_HLSL) .Default(TY_INVALID); } |
