Brought LLVM/Clang up to top of tree. The only
change (besides logging) is that now string
literals in the IR are ConstantDataArrays instead
of ConstantArrays.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@150142 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/IRForTarget.cpp b/source/Expression/IRForTarget.cpp
index 5cd1708..8b2b119 100644
--- a/source/Expression/IRForTarget.cpp
+++ b/source/Expression/IRForTarget.cpp
@@ -312,7 +312,7 @@
if (Instruction *user_inst = dyn_cast<Instruction>(user))
{
- Constant *name_array = ConstantArray::get(context, StringRef(name));
+ Constant *name_array = ConstantDataArray::getString(context, StringRef(name));
ArrayRef<Value *> md_values(name_array);
@@ -891,14 +891,14 @@
m_CFStringCreateWithBytes = ConstantExpr::getIntToPtr(CFSCWB_addr_int, CFSCWB_ptr_ty);
}
- ConstantArray *string_array = NULL;
+ ConstantDataSequential *string_array = NULL;
if (cstr)
- string_array = dyn_cast<ConstantArray>(cstr->getInitializer());
+ string_array = dyn_cast<ConstantDataSequential>(cstr->getInitializer());
Constant *alloc_arg = Constant::getNullValue(i8_ptr_ty);
Constant *bytes_arg = cstr ? ConstantExpr::getBitCast(cstr, i8_ptr_ty) : Constant::getNullValue(i8_ptr_ty);
- Constant *numBytes_arg = ConstantInt::get(intptr_ty, cstr ? string_array->getType()->getNumElements() - 1 : 0, false);
+ Constant *numBytes_arg = ConstantInt::get(intptr_ty, cstr ? string_array->getNumElements() - 1 : 0, false);
Constant *encoding_arg = ConstantInt::get(i32_ty, 0x0600, false); /* 0x0600 is kCFStringEncodingASCII */
Constant *isExternal_arg = ConstantInt::get(i8_ty, 0x0, false); /* 0x0 is false */
@@ -1109,12 +1109,12 @@
}
*/
- ConstantArray *cstr_array = dyn_cast<ConstantArray>(cstr_global->getInitializer());
+ ConstantDataArray *cstr_array = dyn_cast<ConstantDataArray>(cstr_global->getInitializer());
if (log)
{
if (cstr_array)
- log->Printf("Found NSString constant %s, which contains \"%s\"", value_name_cstr, cstr_array->getAsString().c_str());
+ log->Printf("Found NSString constant %s, which contains \"%s\"", value_name_cstr, cstr_array->getAsString().str().c_str());
else
log->Printf("Found NSString constant %s, which contains \"\"", value_name_cstr);
}
@@ -1224,7 +1224,7 @@
Constant *omvn_initializer = _objc_meth_var_name_->getInitializer();
- ConstantArray *omvn_initializer_array = dyn_cast<ConstantArray>(omvn_initializer);
+ ConstantDataArray *omvn_initializer_array = dyn_cast<ConstantDataArray>(omvn_initializer);
if (!omvn_initializer_array->isString())
return false;
@@ -1488,7 +1488,7 @@
memcpy (data, int_initializer->getValue().getRawData(), m_target_data->getTypeStoreSize(initializer_type));
return true;
}
- else if (ConstantArray *array_initializer = dyn_cast<ConstantArray>(initializer))
+ else if (ConstantDataArray *array_initializer = dyn_cast<ConstantDataArray>(initializer))
{
if (array_initializer->isString())
{
@@ -1504,7 +1504,13 @@
for (int i = 0; i < array_initializer->getNumOperands(); ++i)
{
- if (!MaterializeInitializer(data + (i * element_size), array_initializer->getOperand(i)))
+ Value *operand_value = array_initializer->getOperand(i);
+ Constant *operand_constant = dyn_cast<Constant>(operand_value);
+
+ if (!operand_constant)
+ return false;
+
+ if (!MaterializeInitializer(data + (i * element_size), operand_constant))
return false;
}
}
@@ -1926,7 +1932,7 @@
}
else
{
- ConstantArray *gc_array = dyn_cast<ConstantArray>(gc);
+ ConstantDataArray *gc_array = dyn_cast<ConstantDataArray>(gc);
if (!gc_array)
continue;