--- 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(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(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 " << iName << "_params;"; nl(Out); for (unsigned i = 0; i < call->getNumArgOperands(); ++i) {