[Lldb-commits] [lldb] r165726 - in /lldb/trunk/source/Expression: IRDynamicChecks.cpp IRForTarget.cpp IRInterpreter.cpp
Micah Villmow
villmow at gmail.com
Thu Oct 11 10:21:42 PDT 2012
Author: mvillmow
Date: Thu Oct 11 12:21:41 2012
New Revision: 165726
URL: http://llvm.org/viewvc/llvm-project?rev=165726&view=rev
Log:
Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.
Modified:
lldb/trunk/source/Expression/IRDynamicChecks.cpp
lldb/trunk/source/Expression/IRForTarget.cpp
lldb/trunk/source/Expression/IRInterpreter.cpp
Modified: lldb/trunk/source/Expression/IRDynamicChecks.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRDynamicChecks.cpp?rev=165726&r1=165725&r2=165726&view=diff
==============================================================================
--- lldb/trunk/source/Expression/IRDynamicChecks.cpp (original)
+++ lldb/trunk/source/Expression/IRDynamicChecks.cpp Thu Oct 11 12:21:41 2012
@@ -280,7 +280,7 @@
llvm::Value *BuildPointerValidatorFunc(lldb::addr_t start_address)
{
IntegerType *intptr_ty = llvm::Type::getIntNTy(m_module.getContext(),
- (m_module.getPointerSize() == llvm::Module::Pointer64) ? 64 : 32);
+ (m_module.getPointerSize(0) == llvm::Module::Pointer64) ? 64 : 32);
llvm::Type *param_array[1];
@@ -307,7 +307,7 @@
llvm::Value *BuildObjectCheckerFunc(lldb::addr_t start_address)
{
IntegerType *intptr_ty = llvm::Type::getIntNTy(m_module.getContext(),
- (m_module.getPointerSize() == llvm::Module::Pointer64) ? 64 : 32);
+ (m_module.getPointerSize(0) == llvm::Module::Pointer64) ? 64 : 32);
llvm::Type *param_array[2];
Modified: lldb/trunk/source/Expression/IRForTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRForTarget.cpp?rev=165726&r1=165725&r2=165726&view=diff
==============================================================================
--- lldb/trunk/source/Expression/IRForTarget.cpp (original)
+++ lldb/trunk/source/Expression/IRForTarget.cpp Thu Oct 11 12:21:41 2012
@@ -300,8 +300,9 @@
IRForTarget::BuildFunctionPointer (llvm::Type *type,
uint64_t ptr)
{
+ unsigned AS = type->isPointerTy() ? cast<PointerType>(type)->getAddressSpace: 0;
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(AS) == Module::Pointer64) ? 64 : 32);
PointerType *fun_ptr_ty = PointerType::getUnqual(type);
Constant *fun_addr_int = ConstantInt::get(intptr_ty, ptr, false);
return ConstantExpr::getIntToPtr(fun_addr_int, fun_ptr_ty);
@@ -840,7 +841,8 @@
Type *i8_ptr_ty = Type::getInt8PtrTy(m_module->getContext());
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(ns_str->getType()->getAddressSpace())
+ == Module::Pointer64) ? 64 : 32);
Type *i32_ty = Type::getInt32Ty(m_module->getContext());
Type *i8_ty = Type::getInt8Ty(m_module->getContext());
@@ -1271,10 +1273,11 @@
ArrayRef<Type *> srN_arg_types(type_array, 1);
llvm::Type *srN_type = FunctionType::get(sel_ptr_type, srN_arg_types, false);
+ unsigned AS = srN_type->isPointerTy() ? cast<PointerType>(srN_type)->getAddressSpace() : 0;
// Build the constant containing the pointer to the function
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(AS) == Module::Pointer64) ? 64 : 32);
PointerType *srN_ptr_ty = PointerType::getUnqual(srN_type);
Constant *srN_addr_int = ConstantInt::get(intptr_ty, sel_registerName_addr, false);
m_sel_registerName = ConstantExpr::getIntToPtr(srN_addr_int, srN_ptr_ty);
@@ -1724,9 +1727,9 @@
log->Printf("Found \"%s\" at 0x%llx", name.GetCString(), symbol_addr);
Type *symbol_type = symbol->getType();
-
+ unsigned AS = symbol_type->isPointerTy() ? cast<PointerType>(symbol_type)->getAddressSpace() : 0;
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(AS) == Module::Pointer64) ? 64 : 32);
Constant *symbol_addr_int = ConstantInt::get(intptr_ty, symbol_addr, false);
@@ -1807,7 +1810,8 @@
return false;
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(global_variable->getAddressSpace())
+ == Module::Pointer64) ? 64 : 32);
Constant *class_addr = ConstantInt::get(intptr_ty, (uint64_t)class_ptr);
Constant *class_bitcast = ConstantExpr::getIntToPtr(class_addr, load_instruction->getType());
@@ -2577,8 +2581,9 @@
{
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+ unsigned AS = type->isPointerTy() ? cast<PointerType>(type)->getAddressSpace() : 0;
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(AS) == Module::Pointer64) ? 64 : 32);
llvm::Constant *offset_int = ConstantInt::get(intptr_ty, offset);
@@ -2618,8 +2623,9 @@
if (!allocation)
return false;
+ unsigned AS = 0;
IntegerType *intptr_ty = Type::getIntNTy(m_module->getContext(),
- (m_module->getPointerSize() == Module::Pointer64) ? 64 : 32);
+ (m_module->getPointerSize(AS) == Module::Pointer64) ? 64 : 32);
Constant *relocated_addr = ConstantInt::get(intptr_ty, (uint64_t)allocation);
Constant *relocated_bitcast = ConstantExpr::getIntToPtr(relocated_addr, llvm::Type::getInt8PtrTy(m_module->getContext()));
Modified: lldb/trunk/source/Expression/IRInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRInterpreter.cpp?rev=165726&r1=165725&r2=165726&view=diff
==============================================================================
--- lldb/trunk/source/Expression/IRInterpreter.cpp (original)
+++ lldb/trunk/source/Expression/IRInterpreter.cpp Thu Oct 11 12:21:41 2012
@@ -205,7 +205,7 @@
m_decl_map(decl_map)
{
m_byte_order = (target_data.isLittleEndian() ? lldb::eByteOrderLittle : lldb::eByteOrderBig);
- m_addr_byte_size = (target_data.getPointerSize());
+ m_addr_byte_size = (target_data.getPointerSize(0));
}
Region Malloc (size_t size, size_t align)
More information about the lldb-commits
mailing list