mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-04 21:31:03 +00:00
Fix PR1525:
Use a better determinator for identifying constant array initializers that are or are not zero terminated and generate code appropriately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37720 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7f32156bb9
commit
c38adbb846
@ -720,12 +720,18 @@ void CppWriter::printConstant(const Constant *CV) {
|
||||
} else if (const ConstantArray *CA = dyn_cast<ConstantArray>(CV)) {
|
||||
if (CA->isString() && CA->getType()->getElementType() == Type::Int8Ty) {
|
||||
Out << "Constant* " << constName << " = ConstantArray::get(\"";
|
||||
printEscapedString(CA->getAsString());
|
||||
std::string tmp = CA->getAsString();
|
||||
bool nullTerminate = false;
|
||||
if (tmp[tmp.length()-1] == 0) {
|
||||
tmp.erase(tmp.length()-1);
|
||||
nullTerminate = true;
|
||||
}
|
||||
printEscapedString(tmp);
|
||||
// Determine if we want null termination or not.
|
||||
if (CA->getType()->getNumElements() <= CA->getAsString().length())
|
||||
Out << "\", false";// No null terminator
|
||||
else
|
||||
if (nullTerminate)
|
||||
Out << "\", true"; // Indicate that the null terminator should be added.
|
||||
else
|
||||
Out << "\", false";// No null terminator
|
||||
Out << ");";
|
||||
} else {
|
||||
Out << "std::vector<Constant*> " << constName << "_elems;";
|
||||
|
Loading…
x
Reference in New Issue
Block a user