blob: 55e5fb0d686c80905f6e2ef3c2260c56915b960f [file] [log] [blame]
--- a/lib/Target/CppBackend/CPPBackend.cpp 2013-03-25 18:42:20.000000000 +0100
+++ a/lib/Target/CppBackend/CPPBackend.cpp 2013-06-20 10:57:56.348917453 +0200
@@ -374,8 +374,9 @@ std::string CppWriter::getCppName(Type*
case Type::FloatTyID: return "Type::getFloatTy(mod->getContext())";
case Type::DoubleTyID: return "Type::getDoubleTy(mod->getContext())";
case Type::LabelTyID: return "Type::getLabelTy(mod->getContext())";
case Type::X86_MMXTyID: return "Type::getX86_MMXTy(mod->getContext())";
+ case Type::MetadataTyID: return "Type::getMetadataTy(mod->getContext())";
default:
error("Invalid primitive type");
break;
}
@@ -444,8 +445,10 @@ std::string CppWriter::getCppName(const
return ValueNames[val] = name;
} else {
name = getTypePrefix(val->getType());
}
+ } else if (isa<MDNode>(val)) {
+ name = std::string("metadata_");
} else {
name = getTypePrefix(val->getType());
}
if (val->hasName())
@@ -1420,8 +1423,13 @@ void CppWriter::printInstruction(const I
<< ila->getConstraintString() << "\","
<< (ila->hasSideEffects() ? "true" : "false") << ");";
nl(Out);
}
+ if (const Function* F = dyn_cast<Function>(call->getCalledValue())) {
+ // Do not generate anything for debugging symbols intrinsics
+ if (F->getName().compare("llvm.dbg.value" ) == 0) break;
+ if (F->getName().compare("llvm.dbg.declare") == 0) break;
+ }
if (call->getNumArgOperands() > 1) {
Out << "std::vector<Value*> " << iName << "_params;";
nl(Out);
for (unsigned i = 0; i < call->getNumArgOperands(); ++i) {