For example: (gdb) call debug_tree(type) <void_type 0xb7bd6ac8 void sizes-gimplified visited VOID align 8 symtab 152957560 alias set -1 LLVM: void pointer_to_this <pointer_type 0xb7bd6b40>>
Enjoy! Duncan.
Index: gcc.llvm.master/gcc/print-tree.c =================================================================== --- gcc.llvm.master.orig/gcc/print-tree.c 2007-02-15 20:31:54.000000000 +0100 +++ gcc.llvm.master/gcc/print-tree.c 2007-02-15 22:33:46.000000000 +0100 @@ -603,6 +603,16 @@ lang_hooks.print_type (file, node, indent); + /* APPLE LOCAL begin LLVM */ +#ifdef ENABLE_LLVM + if (GET_TYPE_LLVM (node)) + { + indent_to (file, indent + 4); + print_llvm_type (file, GET_TYPE_LLVM (node)); + } +#endif + /* APPLE LOCAL end LLVM */ + if (TYPE_POINTER_TO (node) || TREE_CHAIN (node)) indent_to (file, indent + 3); Index: gcc.llvm.master/gcc/llvm-backend.cpp =================================================================== --- gcc.llvm.master.orig/gcc/llvm-backend.cpp 2007-02-15 20:34:11.000000000 +0100 +++ gcc.llvm.master/gcc/llvm-backend.cpp 2007-02-15 20:41:41.000000000 +0100 @@ -892,4 +892,13 @@ WriteAsOperand(FS, (Value*)LLVM, true, TheModule); } +// print_llvm_type - Print the specified LLVM type symbolically, called by +// print-tree.c for tree dumps. +// +void print_llvm_type(FILE *file, void *LLVM) { + oFILEstream FS(file); + FS << "LLVM: "; + WriteTypeSymbolic(FS, (const Type*)LLVM, TheModule); +} + /* APPLE LOCAL end LLVM (ENTIRE FILE!) */ Index: gcc.llvm.master/gcc/llvm.h =================================================================== --- gcc.llvm.master.orig/gcc/llvm.h 2007-02-15 20:32:52.000000000 +0100 +++ gcc.llvm.master/gcc/llvm.h 2007-02-15 20:41:24.000000000 +0100 @@ -80,6 +80,11 @@ */ void print_llvm(FILE *file, void *LLVM); +/* print_llvm_type - Print the specified LLVM type symbolically, called by + * print-tree.c for tree dumps. + */ +void print_llvm_type(FILE *file, void *LLVM); + /* Init pch writing. */ void llvm_pch_write_init(void); Index: gcc.llvm.master/gcc/tree.h =================================================================== --- gcc.llvm.master.orig/gcc/tree.h 2007-02-15 20:39:44.000000000 +0100 +++ gcc.llvm.master/gcc/tree.h 2007-02-15 20:40:24.000000000 +0100 @@ -2092,6 +2092,7 @@ ? (void*)(NODE)->decl.llvm \ : (make_decl_llvm (NODE), (void*)(NODE)->decl.llvm))) #define SET_DECL_LLVM(NODE, LLVM) (DECL_CHECK (NODE)->decl.llvm = (long)LLVM) +#define GET_TYPE_LLVM(NODE) (void *)(TYPE_CHECK (NODE)->type.symtab.llvm) #endif /* Returns nonzero if the DECL_LLVM for NODE has already been set. */ #define DECL_LLVM_SET_P(NODE) (DECL_CHECK (NODE)->decl.llvm != 0)
_______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits