Changeset View
Changeset View
Standalone View
Standalone View
clang/lib/Driver/Types.cpp
Show First 20 Lines • Show All 91 Lines • ▼ Show 20 Lines | |||||
bool types::onlyPrecompileType(ID Id) { | bool types::onlyPrecompileType(ID Id) { | ||||
return getInfo(Id).Phases.contains(phases::Precompile) && | return getInfo(Id).Phases.contains(phases::Precompile) && | ||||
!isPreprocessedModuleType(Id); | !isPreprocessedModuleType(Id); | ||||
} | } | ||||
bool types::canTypeBeUserSpecified(ID Id) { | bool types::canTypeBeUserSpecified(ID Id) { | ||||
static const clang::driver::types::ID kStaticLangageTypes[] = { | static const clang::driver::types::ID kStaticLangageTypes[] = { | ||||
TY_CUDA_DEVICE, TY_HIP_DEVICE, TY_PP_CHeader, | TY_CUDA_DEVICE, | ||||
TY_PP_ObjCHeader, TY_PP_CXXHeader, TY_PP_ObjCXXHeader, | TY_CUDAHeader_DEVICE, | ||||
TY_PP_CXXModule, TY_LTO_IR, TY_LTO_BC, | TY_HIP_DEVICE, | ||||
TY_Plist, TY_RewrittenObjC, TY_RewrittenLegacyObjC, | TY_PP_CHeader, | ||||
TY_Remap, TY_PCH, TY_Object, | TY_PP_ObjCHeader, | ||||
TY_Image, TY_dSYM, TY_Dependencies, | TY_PP_CXXHeader, | ||||
TY_CUDA_FATBIN, TY_HIP_FATBIN}; | TY_PP_ObjCXXHeader, | ||||
TY_PP_CUDAHeader, | |||||
TY_PP_CXXModule, | |||||
TY_LTO_IR, | |||||
TY_LTO_BC, | |||||
TY_Plist, | |||||
TY_RewrittenObjC, | |||||
TY_RewrittenLegacyObjC, | |||||
TY_Remap, | |||||
TY_PCH, | |||||
TY_Object, | |||||
TY_Image, | |||||
TY_dSYM, | |||||
TY_Dependencies, | |||||
TY_CUDA_FATBIN, | |||||
TY_HIP_FATBIN}; | |||||
return !llvm::is_contained(kStaticLangageTypes, Id); | return !llvm::is_contained(kStaticLangageTypes, Id); | ||||
} | } | ||||
bool types::appendSuffixForType(ID Id) { | bool types::appendSuffixForType(ID Id) { | ||||
return Id == TY_PCH || Id == TY_dSYM || Id == TY_CUDA_FATBIN || | return Id == TY_PCH || Id == TY_dSYM || Id == TY_CUDA_FATBIN || | ||||
Id == TY_HIP_FATBIN; | Id == TY_HIP_FATBIN; | ||||
} | } | ||||
Show All 9 Lines | bool types::isAcceptedByClang(ID Id) { | ||||
default: | default: | ||||
return false; | return false; | ||||
case TY_Asm: | case TY_Asm: | ||||
case TY_C: case TY_PP_C: | case TY_C: case TY_PP_C: | ||||
case TY_CL: | case TY_CL: | ||||
case TY_CUDA: case TY_PP_CUDA: | case TY_CUDA: case TY_PP_CUDA: | ||||
case TY_CUDA_DEVICE: | case TY_CUDA_DEVICE: | ||||
case TY_CUDAHeader: | |||||
case TY_PP_CUDAHeader: | |||||
case TY_CUDAHeader_DEVICE: | |||||
case TY_HIP: | case TY_HIP: | ||||
case TY_PP_HIP: | case TY_PP_HIP: | ||||
case TY_HIP_DEVICE: | case TY_HIP_DEVICE: | ||||
case TY_ObjC: case TY_PP_ObjC: case TY_PP_ObjC_Alias: | case TY_ObjC: case TY_PP_ObjC: case TY_PP_ObjC_Alias: | ||||
case TY_CXX: case TY_PP_CXX: | case TY_CXX: case TY_PP_CXX: | ||||
case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: | case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: | ||||
case TY_CHeader: case TY_PP_CHeader: | case TY_CHeader: case TY_PP_CHeader: | ||||
case TY_CLHeader: | case TY_CLHeader: | ||||
Show All 26 Lines | default: | ||||
return false; | return false; | ||||
case TY_CXX: case TY_PP_CXX: | case TY_CXX: case TY_PP_CXX: | ||||
case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: | case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: | ||||
case TY_CXXHeader: case TY_PP_CXXHeader: | case TY_CXXHeader: case TY_PP_CXXHeader: | ||||
case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: | case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: | ||||
case TY_CXXModule: case TY_PP_CXXModule: | case TY_CXXModule: case TY_PP_CXXModule: | ||||
case TY_CUDA: case TY_PP_CUDA: case TY_CUDA_DEVICE: | case TY_CUDA: case TY_PP_CUDA: case TY_CUDA_DEVICE: | ||||
case TY_CUDAHeader: | |||||
case TY_PP_CUDAHeader: | |||||
case TY_CUDAHeader_DEVICE: | |||||
case TY_HIP: | case TY_HIP: | ||||
case TY_PP_HIP: | case TY_PP_HIP: | ||||
case TY_HIP_DEVICE: | case TY_HIP_DEVICE: | ||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
bool types::isLLVMIR(ID Id) { | bool types::isLLVMIR(ID Id) { | ||||
Show All 12 Lines | |||||
bool types::isCuda(ID Id) { | bool types::isCuda(ID Id) { | ||||
switch (Id) { | switch (Id) { | ||||
default: | default: | ||||
return false; | return false; | ||||
case TY_CUDA: | case TY_CUDA: | ||||
case TY_PP_CUDA: | case TY_PP_CUDA: | ||||
case TY_CUDA_DEVICE: | case TY_CUDA_DEVICE: | ||||
case TY_CUDAHeader: | |||||
case TY_PP_CUDAHeader: | |||||
case TY_CUDAHeader_DEVICE: | |||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
bool types::isHIP(ID Id) { | bool types::isHIP(ID Id) { | ||||
switch (Id) { | switch (Id) { | ||||
default: | default: | ||||
return false; | return false; | ||||
Show All 16 Lines | |||||
} | } | ||||
bool types::isSrcFile(ID Id) { | bool types::isSrcFile(ID Id) { | ||||
return Id != TY_Object && getPreprocessedType(Id) != TY_INVALID; | return Id != TY_Object && getPreprocessedType(Id) != TY_INVALID; | ||||
} | } | ||||
types::ID types::lookupTypeForExtension(llvm::StringRef Ext) { | types::ID types::lookupTypeForExtension(llvm::StringRef Ext) { | ||||
return llvm::StringSwitch<types::ID>(Ext) | return llvm::StringSwitch<types::ID>(Ext) | ||||
.Case("c", TY_C) | .Case("c", TY_C) | ||||
.Case("C", TY_CXX) | .Case("C", TY_CXX) | ||||
.Case("F", TY_Fortran) | .Case("F", TY_Fortran) | ||||
.Case("f", TY_PP_Fortran) | .Case("f", TY_PP_Fortran) | ||||
.Case("h", TY_CHeader) | .Case("h", TY_CHeader) | ||||
.Case("H", TY_CXXHeader) | .Case("H", TY_CXXHeader) | ||||
.Case("i", TY_PP_C) | .Case("i", TY_PP_C) | ||||
.Case("m", TY_ObjC) | .Case("m", TY_ObjC) | ||||
.Case("M", TY_ObjCXX) | .Case("M", TY_ObjCXX) | ||||
.Case("o", TY_Object) | .Case("o", TY_Object) | ||||
.Case("S", TY_Asm) | .Case("S", TY_Asm) | ||||
.Case("s", TY_PP_Asm) | .Case("s", TY_PP_Asm) | ||||
.Case("bc", TY_LLVM_BC) | .Case("bc", TY_LLVM_BC) | ||||
.Case("cc", TY_CXX) | .Case("cc", TY_CXX) | ||||
.Case("CC", TY_CXX) | .Case("CC", TY_CXX) | ||||
.Case("cl", TY_CL) | .Case("cl", TY_CL) | ||||
.Case("cp", TY_CXX) | .Case("cp", TY_CXX) | ||||
.Case("cu", TY_CUDA) | .Case("cu", TY_CUDA) | ||||
.Case("cuh", TY_CUDAHeader) | |||||
.Case("hh", TY_CXXHeader) | .Case("hh", TY_CXXHeader) | ||||
.Case("ii", TY_PP_CXX) | .Case("ii", TY_PP_CXX) | ||||
.Case("ll", TY_LLVM_IR) | .Case("ll", TY_LLVM_IR) | ||||
.Case("mi", TY_PP_ObjC) | .Case("mi", TY_PP_ObjC) | ||||
.Case("mm", TY_ObjCXX) | .Case("mm", TY_ObjCXX) | ||||
.Case("rs", TY_RenderScript) | .Case("rs", TY_RenderScript) | ||||
.Case("adb", TY_Ada) | .Case("adb", TY_Ada) | ||||
.Case("ads", TY_Ada) | .Case("ads", TY_Ada) | ||||
.Case("asm", TY_PP_Asm) | .Case("asm", TY_PP_Asm) | ||||
.Case("ast", TY_AST) | .Case("ast", TY_AST) | ||||
.Case("ccm", TY_CXXModule) | .Case("ccm", TY_CXXModule) | ||||
.Case("cpp", TY_CXX) | .Case("cpp", TY_CXX) | ||||
.Case("CPP", TY_CXX) | .Case("CPP", TY_CXX) | ||||
.Case("c++", TY_CXX) | .Case("c++", TY_CXX) | ||||
.Case("C++", TY_CXX) | .Case("C++", TY_CXX) | ||||
.Case("cui", TY_PP_CUDA) | .Case("cui", TY_PP_CUDA) | ||||
.Case("cuhi", TY_PP_CUDAHeader) | |||||
.Case("cxx", TY_CXX) | .Case("cxx", TY_CXX) | ||||
.Case("CXX", TY_CXX) | .Case("CXX", TY_CXX) | ||||
.Case("F90", TY_Fortran) | .Case("F90", TY_Fortran) | ||||
.Case("f90", TY_PP_Fortran) | .Case("f90", TY_PP_Fortran) | ||||
.Case("F95", TY_Fortran) | .Case("F95", TY_Fortran) | ||||
.Case("f95", TY_PP_Fortran) | .Case("f95", TY_PP_Fortran) | ||||
.Case("for", TY_PP_Fortran) | .Case("for", TY_PP_Fortran) | ||||
.Case("FOR", TY_PP_Fortran) | .Case("FOR", TY_PP_Fortran) | ||||
.Case("fpp", TY_Fortran) | .Case("fpp", TY_Fortran) | ||||
.Case("FPP", TY_Fortran) | .Case("FPP", TY_Fortran) | ||||
.Case("gch", TY_PCH) | .Case("gch", TY_PCH) | ||||
.Case("hip", TY_HIP) | .Case("hip", TY_HIP) | ||||
.Case("hpp", TY_CXXHeader) | .Case("hpp", TY_CXXHeader) | ||||
.Case("hxx", TY_CXXHeader) | .Case("hxx", TY_CXXHeader) | ||||
.Case("iim", TY_PP_CXXModule) | .Case("iim", TY_PP_CXXModule) | ||||
.Case("lib", TY_Object) | .Case("lib", TY_Object) | ||||
.Case("mii", TY_PP_ObjCXX) | .Case("mii", TY_PP_ObjCXX) | ||||
.Case("obj", TY_Object) | .Case("obj", TY_Object) | ||||
.Case("ifs", TY_IFS) | .Case("ifs", TY_IFS) | ||||
.Case("pch", TY_PCH) | .Case("pch", TY_PCH) | ||||
.Case("pcm", TY_ModuleFile) | .Case("pcm", TY_ModuleFile) | ||||
.Case("c++m", TY_CXXModule) | .Case("c++m", TY_CXXModule) | ||||
.Case("cppm", TY_CXXModule) | .Case("cppm", TY_CXXModule) | ||||
.Case("cxxm", TY_CXXModule) | .Case("cxxm", TY_CXXModule) | ||||
.Default(TY_INVALID); | .Default(TY_INVALID); | ||||
} | } | ||||
types::ID types::lookupTypeForTypeSpecifier(const char *Name) { | types::ID types::lookupTypeForTypeSpecifier(const char *Name) { | ||||
for (unsigned i=0; i<numTypes; ++i) { | for (unsigned i=0; i<numTypes; ++i) { | ||||
types::ID Id = (types::ID) (i + 1); | types::ID Id = (types::ID) (i + 1); | ||||
if (canTypeBeUserSpecified(Id) && | if (canTypeBeUserSpecified(Id) && | ||||
strcmp(Name, getInfo(Id).Name) == 0) | strcmp(Name, getInfo(Id).Name) == 0) | ||||
return Id; | return Id; | ||||
▲ Show 20 Lines • Show All 101 Lines • Show Last 20 Lines |