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