A command of the form: g++ -c -fdump-tree-original foo.cc produces a file foo.cc.original which contains a nearly-complete parse tree. The parse tree in question does *not* contain the values of real constants. This makes the tree inadequate for any program which tries to analyse the tree.
Here is a patch: --- /home/gui/gcc-3.4.2-old/gcc/tree-dump.c 2003-12-18 15:09:40.000000000 -0500 +++ /home/gui/gcc-3.4.2/gcc/tree-dump.c 2004-10-31 17:17:23.000000000 -0500 @@ -176,6 +176,19 @@ di->column += 14; } +/* Dump real number R using FIELD to identify it. */ + +void +dump_real (dump_info_p di, const char *field, const REAL_VALUE_TYPE *r) +{ + char buf[16]; + real_to_decimal(buf, r, sizeof(buf), 0, TRUE); + dump_maybe_newline (di); + di->column += + fprintf (di->stream, "%-4s: %s ", field, buf); +} + + /* Dump the string S. */ void @@ -509,6 +522,11 @@ dump_int (di, "lngt", TREE_STRING_LENGTH (t)); break; + + case REAL_CST: + dump_real (di, "valu", TREE_REAL_CST_PTR (t)); + break; + case TRUTH_NOT_EXPR: case ADDR_EXPR: case INDIRECT_REF: --- /home/gui/gcc-3.4.2-old/gcc/tree-dump.h 2003-06-08 10:21:54.000000000 -0400 +++ /home/gui/gcc-3.4.2/gcc/tree-dump.h 2004-10-31 17:17:34.000000000 -0500 @@ -22,6 +22,8 @@ #ifndef GCC_TREE_DUMP_H #define GCC_TREE_DUMP_H +#include "real.h" + /* Flags used with queue functions. */ #define DUMP_NONE 0 #define DUMP_BINFO 1 @@ -79,6 +81,7 @@ extern void dump_pointer (dump_info_p, const char *, void *); extern void dump_int (dump_info_p, const char *, int); +extern void dump_real (dump_info_p, const char *, const REAL_VALUE_TYPE *); extern void dump_string (dump_info_p, const char *); extern void dump_stmt (dump_info_p, tree); extern void dump_next_stmt (dump_info_p, tree); -- Summary: -fdump-tree-original omits real constant values Product: gcc Version: 3.4.2 Status: UNCONFIRMED Severity: minor Priority: P2 Component: debug AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dspeyer at wam dot umd dot edu CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: same GCC host triplet: Linux 2.4.20 / i686 / GLIBC 2.3.2 GCC target triplet: same http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18259