mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-12 01:41:37 +00:00
Always check if a method or a type exist before trying to create it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141490 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
48f248ad5f
commit
f8557957fb
@ -534,11 +534,19 @@ void CppWriter::printType(Type* Ty) {
|
||||
case Type::StructTyID: {
|
||||
StructType* ST = cast<StructType>(Ty);
|
||||
if (!ST->isLiteral()) {
|
||||
Out << "StructType *" << typeName << " = ";
|
||||
Out << "StructType *" << typeName << " = mod->getTypeByName(\"";
|
||||
printEscapedString(ST->getName());
|
||||
Out << "\");";
|
||||
nl(Out);
|
||||
Out << "if (!" << typeName << ") {";
|
||||
nl(Out);
|
||||
Out << typeName << " = ";
|
||||
Out << "StructType::create(mod->getContext(), \"";
|
||||
printEscapedString(ST->getName());
|
||||
Out << "\");";
|
||||
nl(Out);
|
||||
Out << "}";
|
||||
nl(Out);
|
||||
// Indicate that this type is now defined.
|
||||
DefinedTypes.insert(Ty);
|
||||
}
|
||||
@ -560,12 +568,18 @@ void CppWriter::printType(Type* Ty) {
|
||||
Out << "StructType *" << typeName << " = ";
|
||||
Out << "StructType::get(" << "mod->getContext(), ";
|
||||
} else {
|
||||
Out << "if (" << typeName << "->isOpaque()) {";
|
||||
nl(Out);
|
||||
Out << typeName << "->setBody(";
|
||||
}
|
||||
|
||||
Out << typeName << "_fields, /*isPacked=*/"
|
||||
<< (ST->isPacked() ? "true" : "false") << ");";
|
||||
nl(Out);
|
||||
if (!ST->isLiteral()) {
|
||||
Out << "}";
|
||||
nl(Out);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Type::ArrayTyID: {
|
||||
@ -1538,13 +1552,12 @@ void CppWriter::printFunctionUses(const Function* F) {
|
||||
|
||||
void CppWriter::printFunctionHead(const Function* F) {
|
||||
nl(Out) << "Function* " << getCppName(F);
|
||||
if (is_inline) {
|
||||
Out << " = mod->getFunction(\"";
|
||||
printEscapedString(F->getName());
|
||||
Out << "\", " << getCppName(F->getFunctionType()) << ");";
|
||||
nl(Out) << "if (!" << getCppName(F) << ") {";
|
||||
nl(Out) << getCppName(F);
|
||||
}
|
||||
Out << " = mod->getFunction(\"";
|
||||
printEscapedString(F->getName());
|
||||
Out << "\");";
|
||||
nl(Out) << "if (!" << getCppName(F) << ") {";
|
||||
nl(Out) << getCppName(F);
|
||||
|
||||
Out<< " = Function::Create(";
|
||||
nl(Out,1) << "/*Type=*/" << getCppName(F->getFunctionType()) << ",";
|
||||
nl(Out) << "/*Linkage=*/";
|
||||
@ -1581,10 +1594,8 @@ void CppWriter::printFunctionHead(const Function* F) {
|
||||
Out << "->setGC(\"" << F->getGC() << "\");";
|
||||
nl(Out);
|
||||
}
|
||||
if (is_inline) {
|
||||
Out << "}";
|
||||
nl(Out);
|
||||
}
|
||||
Out << "}";
|
||||
nl(Out);
|
||||
printAttributes(F->getAttributes(), getCppName(F));
|
||||
printCppName(F);
|
||||
Out << "->setAttributes(" << getCppName(F) << "_PAL);";
|
||||
|
Loading…
x
Reference in New Issue
Block a user