| --- 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) { |