This patch adds the functionalities to print MDNode in tree shape. For example, instead of printing a MDNode like this:
<0x5643e1166888> = !DILocalVariable(name: "foo", arg: 2, scope: <0x5643e11c9740>, file: <0x5643e11c6ec0>, line: 8, type: <0x5643e11ca8e0>, flags: DIFlagPublic | DIFlagFwdDecl, align: 8)
The printTree/dumpTree functions can give you:
<0x5643e1166888> = !DILocalVariable(name: "foo", arg: 2, scope: <0x5643e11c9740>, file: <0x5643e11c6ec0>, line: 8, type: <0x5643e11ca8e0>, flags: DIFlagPublic | DIFlagFwdDecl, align: 8) <0x5643e11c9740> = distinct !DISubprogram(scope: null, spFlags: 0) <0x5643e11c6ec0> = distinct !DIFile(filename: "file.c", directory: "/path/to/dir") <0x5643e11ca8e0> = distinct !DIDerivedType(tag: DW_TAG_pointer_type, baseType: <0x5643e11668d8>, size: 1, align: 2) <0x5643e11668d8> = !DIBasicType(tag: DW_TAG_unspecified_type, name: "basictype")
Which is useful when using it in debugger. Where sometimes printing the whole module to see all MDNodes is too expensive.
Nit, I think this can be \{. Looks more TeXy.