13fdcc6fb12d7cf38d2a3111736f80f0dd55447b4Nick Lewycky//===--- Types.cpp - Driver input & temporary type information ------------===// 2e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar// 3e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar// The LLVM Compiler Infrastructure 4e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar// 5e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar// This file is distributed under the University of Illinois Open Source 6e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar// License. See LICENSE.TXT for details. 7e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar// 8e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar//===----------------------------------------------------------------------===// 9e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 10e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar#include "clang/Driver/Types.h" 1155d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor#include "llvm/ADT/StringSwitch.h" 12e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar#include <cassert> 1355fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth#include <string.h> 14e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 15e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbarusing namespace clang::driver; 16e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbarusing namespace clang::driver::types; 17e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 18d8e0e4530bbfd7ee346f9e7447db61110bbc9e77Daniel Dunbarstruct TypeInfo { 19e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar const char *Name; 20e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar const char *Flags; 21e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar const char *TempSuffix; 22e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar ID PreprocessedType; 23e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar}; 24e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 2568f7a2426227476bcfa33ada70b708c82419dfdcNuno Lopesstatic const TypeInfo TypeInfos[] = { 26e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar#define TYPE(NAME, ID, PP_TYPE, TEMP_SUFFIX, FLAGS) \ 27e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar { NAME, FLAGS, TEMP_SUFFIX, TY_##PP_TYPE, }, 28e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar#include "clang/Driver/Types.def" 29e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar#undef TYPE 30e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar}; 31e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbarstatic const unsigned numTypes = sizeof(TypeInfos) / sizeof(TypeInfos[0]); 32e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 3368f7a2426227476bcfa33ada70b708c82419dfdcNuno Lopesstatic const TypeInfo &getInfo(unsigned id) { 34e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar assert(id > 0 && id - 1 < numTypes && "Invalid Type ID."); 35e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar return TypeInfos[id - 1]; 36e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 37e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 381eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpconst char *types::getTypeName(ID Id) { 391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return getInfo(Id).Name; 40e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 41e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 421eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumptypes::ID types::getPreprocessedType(ID Id) { 431eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return getInfo(Id).PreprocessedType; 44e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 45e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 461eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpconst char *types::getTypeTempSuffix(ID Id) { 471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return getInfo(Id).TempSuffix; 48e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 49e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 501eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpbool types::onlyAssembleType(ID Id) { 511eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return strchr(getInfo(Id).Flags, 'a'); 52e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 53e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 541eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpbool types::onlyPrecompileType(ID Id) { 551eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return strchr(getInfo(Id).Flags, 'p'); 56e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 57e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 581eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpbool types::canTypeBeUserSpecified(ID Id) { 591eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return strchr(getInfo(Id).Flags, 'u'); 60e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 61e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 621eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpbool types::appendSuffixForType(ID Id) { 631eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return strchr(getInfo(Id).Flags, 'A'); 64e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 65e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 661eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpbool types::canLipoType(ID Id) { 679f5ef9426fee383cb42b72cee1d6dc949c8c0189Daniel Dunbar return (Id == TY_Nothing || 689f5ef9426fee383cb42b72cee1d6dc949c8c0189Daniel Dunbar Id == TY_Image || 69d6261a96cd470c148c474c8ebeacabc40e0ebb37Chad Rosier Id == TY_Object || 70d6261a96cd470c148c474c8ebeacabc40e0ebb37Chad Rosier Id == TY_LTO_BC); 719f5ef9426fee383cb42b72cee1d6dc949c8c0189Daniel Dunbar} 729f5ef9426fee383cb42b72cee1d6dc949c8c0189Daniel Dunbar 735bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewyckybool types::isAcceptedByClang(ID Id) { 745bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky switch (Id) { 755bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky default: 765bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky return false; 775bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky 785bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_Asm: 795bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_C: case TY_PP_C: 805bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_CL: 815bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_CUDA: 825bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_ObjC: case TY_PP_ObjC: case TY_PP_ObjC_Alias: 835bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_CXX: case TY_PP_CXX: 845bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: 855bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_CHeader: case TY_PP_CHeader: 865bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_CLHeader: 875bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_ObjCHeader: case TY_PP_ObjCHeader: 885bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_CXXHeader: case TY_PP_CXXHeader: 895bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: 905bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_AST: 915bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky case TY_LLVM_IR: case TY_LLVM_BC: 925bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky return true; 935bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky } 945bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky} 955bab9ae87c41148ee2f92d312945c1e9303222e8Nick Lewycky 9677544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbarbool types::isObjC(ID Id) { 9777544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar switch (Id) { 9877544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar default: 9977544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar return false; 10077544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar 101cc52a0688f46cd04dd6b4670b304cbe82e3018c0Nico Weber case TY_ObjC: case TY_PP_ObjC: case TY_PP_ObjC_Alias: 10277544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar case TY_ObjCXX: case TY_PP_ObjCXX: 10377544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar case TY_ObjCHeader: case TY_PP_ObjCHeader: 104cc52a0688f46cd04dd6b4670b304cbe82e3018c0Nico Weber case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: case TY_PP_ObjCXX_Alias: 10577544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar return true; 10677544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar } 10777544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar} 10877544fde702fdab2a6150ba812ecf04eb1e6eab6Daniel Dunbar 1094db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbarbool types::isCXX(ID Id) { 1104db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar switch (Id) { 1114db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar default: 1124db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar return false; 1134db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar 1144db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar case TY_CXX: case TY_PP_CXX: 115ecf16265407c4d0edb860dc8259a6874d1a19f6eChad Rosier case TY_ObjCXX: case TY_PP_ObjCXX: case TY_PP_ObjCXX_Alias: 1164db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar case TY_CXXHeader: case TY_PP_CXXHeader: 1174db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar case TY_ObjCXXHeader: case TY_PP_ObjCXXHeader: 118d26db2f595ee008719856fff3622357d6e41e9efPeter Collingbourne case TY_CUDA: 1194db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar return true; 1204db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar } 1214db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar} 1224db938ceb72dbaa5f7b50f6420a72629acbf29ebDaniel Dunbar 123e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbartypes::ID types::lookupTypeForExtension(const char *Ext) { 12455d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor return llvm::StringSwitch<types::ID>(Ext) 12555d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("c", TY_C) 12655d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("i", TY_PP_C) 12755d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("m", TY_ObjC) 12855d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("M", TY_ObjCXX) 12955d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("h", TY_CHeader) 13055d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("C", TY_CXX) 13155d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("H", TY_CXXHeader) 13255d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("f", TY_PP_Fortran) 13355d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("F", TY_Fortran) 13455d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("s", TY_PP_Asm) 13555d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("S", TY_Asm) 13620fd8674836a4c71cc8455d1a7541ddb864345e8Chad Rosier .Case("o", TY_Object) 13755d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("ii", TY_PP_CXX) 13855d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("mi", TY_PP_ObjC) 13955d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("mm", TY_ObjCXX) 1406c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5Daniel Dunbar .Case("bc", TY_LLVM_BC) 14155d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("cc", TY_CXX) 14255d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("CC", TY_CXX) 143edcfc411148e81c644a1ff36a9df8a7b08209a23Nate Begeman .Case("cl", TY_CL) 14455d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("cp", TY_CXX) 145895fcca55a6d52a71639f2472a6623ab2dd9f628Peter Collingbourne .Case("cu", TY_CUDA) 14655d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("hh", TY_CXXHeader) 1476c6424bc0d3b5f080a97b5f6ef4a8d70c38e38f5Daniel Dunbar .Case("ll", TY_LLVM_IR) 14890cb920bfa167ae30cea35fe296533e7779f4ee2Daniel Dunbar .Case("hpp", TY_CXXHeader) 14955d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("ads", TY_Ada) 15055d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("adb", TY_Ada) 15155d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("ast", TY_AST) 152169b753b4546b464ad81742ec09a9b9bb11d3b47Douglas Gregor .Case("c++", TY_CXX) 153169b753b4546b464ad81742ec09a9b9bb11d3b47Douglas Gregor .Case("C++", TY_CXX) 15455d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("cxx", TY_CXX) 15555d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("cpp", TY_CXX) 15655d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("CPP", TY_CXX) 15755d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("CXX", TY_CXX) 15855d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("for", TY_PP_Fortran) 15955d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("FOR", TY_PP_Fortran) 16055d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("fpp", TY_Fortran) 16155d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("FPP", TY_Fortran) 16255d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("f90", TY_PP_Fortran) 16355d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("f95", TY_PP_Fortran) 16455d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("F90", TY_Fortran) 16555d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("F95", TY_Fortran) 16655d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Case("mii", TY_PP_ObjCXX) 16755d3f7ae512875a1d6402943c3a619633feb2a18Douglas Gregor .Default(TY_INVALID); 168e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 169e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 170e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbartypes::ID types::lookupTypeForTypeSpecifier(const char *Name) { 171e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar for (unsigned i=0; i<numTypes; ++i) { 172e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar types::ID Id = (types::ID) (i + 1); 1731eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump if (canTypeBeUserSpecified(Id) && 17416cda861c5587d7130a216466a29a808673c1656Evgeniy Stepanov strcmp(Name, getInfo(Id).Name) == 0) 175e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar return Id; 176e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar } 177e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar 178e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar return TY_INVALID; 179e9fba573bd9433b89a12f747f2c4ccfa490a79cbDaniel Dunbar} 180c1b5fa81a2dfa4fea2e25bf057363658e7b43681Daniel Dunbar 181c1b5fa81a2dfa4fea2e25bf057363658e7b43681Daniel Dunbar// FIXME: Why don't we just put this list in the defs file, eh. 182b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtisvoid types::getCompilationPhases( 183b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis ID Id, 184b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis llvm::SmallVector<phases::ID, phases::MaxNumberOfPhases> &P) { 185b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis if (Id != TY_Object) { 186b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis if (getPreprocessedType(Id) != TY_INVALID) { 187b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis P.push_back(phases::Preprocess); 188b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis } 189b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis 190b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis if (onlyPrecompileType(Id)) { 191b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis P.push_back(phases::Precompile); 192b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis } else { 193b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis if (!onlyAssembleType(Id)) { 194b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis P.push_back(phases::Compile); 195b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis } 196b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis P.push_back(phases::Assemble); 197b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis } 198c1b5fa81a2dfa4fea2e25bf057363658e7b43681Daniel Dunbar } 199b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis if (!onlyPrecompileType(Id)) { 200b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis P.push_back(phases::Link); 201b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis } 202b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis assert(0 < P.size() && "Not enough phases in list"); 203b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis assert(P.size() <= phases::MaxNumberOfPhases && "Too many phases in list"); 204b9aa6739700d10e99da64cfa9b58ba7ca1c248e2Matthew Curtis return; 205c1b5fa81a2dfa4fea2e25bf057363658e7b43681Daniel Dunbar} 20651679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar 20751679c5e4828b8a64953c4f3db162ca963bf7b03Daniel DunbarID types::lookupCXXTypeForCType(ID Id) { 20851679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar switch (Id) { 20951679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar default: 21051679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar return Id; 21121261f4f9775d1212b12be5a125ab9f3beca4c12Joey Gouly 21251679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar case types::TY_C: 21351679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar return types::TY_CXX; 21451679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar case types::TY_PP_C: 21551679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar return types::TY_PP_CXX; 21651679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar case types::TY_CHeader: 21751679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar return types::TY_CXXHeader; 21851679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar case types::TY_PP_CHeader: 21951679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar return types::TY_PP_CXXHeader; 22051679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar } 22151679c5e4828b8a64953c4f3db162ca963bf7b03Daniel Dunbar} 222