[llvm-dev] Can creating new forms of debug info metadata be simplified?

Sohail Somani (Fizz Buzz Inc.) via llvm-dev llvm-dev at lists.llvm.org
Tue May 29 07:54:36 PDT 2018


Hi list,

Let’s talk about adding a new type of debug info metadata. Here are the
steps (at minimum - probably incomplete) one needs to take:

 1. Create a new class in the hierarchy
 2. Implement two forms of MD_NODE_GET
 3. Specialize MDNodeKeyImpl
 4. Modify LLParser.cpp and add serialization code for your special type
 5. Modify AsmWriter.cpp and add serialization code for your
    special typeI believe we can accomplish everything needed for debug info with just
step 1 using a pattern found in Boost Serialization. Imagine a new API
based on this concept:

class DIMyFancyType : public MDNode { StringRef FileName;
template<typename Visitor>  void visit(Visitor & v) { DINode::visit(s);
// or not, if you stay true to boost.serialization
v.name("DIMyFancyType"); v.property("FileName",FileName); } };With this, we could implement steps 2-5 using a little bit of template
meta-programming and we could also implement escape hatches where needed
to get more specific, allowing us to keep many things in one place.I imagine since there is now a .def file for the metadata (very useful!)
that this is on somebody’s mind and not just my own, so I’m curious
about what people think. I realize that “new forms of debug metadata” is
possibly not a very popular use case as there has been only one new kind
added in the last few years. However, in my humble opinion, it would
make it easier to add richer information allowing those of us extending
LLVM to create better debuggers/debugging experiences.Thanks for your time!

— Sohail Somani Fizz Buzz Inc. Booking schedule:
https://sohailsomani.youcanbook.me
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180529/caad40eb/attachment.html>


More information about the llvm-dev mailing list