diff options
Diffstat (limited to 'lldb/source/Symbol/ClangASTContext.cpp')
| -rw-r--r-- | lldb/source/Symbol/ClangASTContext.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp index 36a0aec53f4..f2d8bd8fbc6 100644 --- a/lldb/source/Symbol/ClangASTContext.cpp +++ b/lldb/source/Symbol/ClangASTContext.cpp @@ -1910,6 +1910,63 @@ ClangASTContext::CreateEnumerationType // return false; //} +ClangASTType +ClangASTContext::GetIntTypeFromBitSize (clang::ASTContext *ast, + size_t bit_size, bool is_signed) +{ + if (ast) + { + if (is_signed) + { + if (bit_size == ast->getTypeSize(ast->SignedCharTy)) + return ClangASTType(ast, ast->SignedCharTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->ShortTy)) + return ClangASTType(ast, ast->ShortTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->IntTy)) + return ClangASTType(ast, ast->IntTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->LongTy)) + return ClangASTType(ast, ast->LongTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->LongLongTy)) + return ClangASTType(ast, ast->LongLongTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->Int128Ty)) + return ClangASTType(ast, ast->Int128Ty.getAsOpaquePtr()); + } + else + { + if (bit_size == ast->getTypeSize(ast->UnsignedCharTy)) + return ClangASTType(ast, ast->UnsignedCharTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->UnsignedShortTy)) + return ClangASTType(ast, ast->UnsignedShortTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->UnsignedIntTy)) + return ClangASTType(ast, ast->UnsignedIntTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->UnsignedLongTy)) + return ClangASTType(ast, ast->UnsignedLongTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->UnsignedLongLongTy)) + return ClangASTType(ast, ast->UnsignedLongLongTy.getAsOpaquePtr()); + + if (bit_size == ast->getTypeSize(ast->UnsignedInt128Ty)) + return ClangASTType(ast, ast->UnsignedInt128Ty.getAsOpaquePtr()); + } + } + return ClangASTType(); +} + +ClangASTType +ClangASTContext::GetPointerSizedIntType (clang::ASTContext *ast, bool is_signed) +{ + if (ast) + return GetIntTypeFromBitSize(ast, ast->getTypeSize(ast->VoidPtrTy), is_signed); + return ClangASTType(); +} ClangASTType ClangASTContext::GetFloatTypeFromBitSize (clang::ASTContext *ast, |

