So one would expect -dD and -dM to differ substantially.
But....
(martinrb@spraggett) ~ $ gcc -E -dM -x c /dev/null | sort >/tmp/t1
(martinrb@spraggett) ~ $ gcc -E -dD -x c /dev/null | sort >/tmp/t2
(martinrb@spraggett) ~ $ diff /tmp/t[12]
0a1,4
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/dev/null"
# 1 "/dev/null"
(martinrb@spraggett) ~ $ wc /tmp/t[12]
111 340 3482 /tmp/t1
115 352 3552 /tmp/t2
226 692 7034 total
(martinrb@spraggett) ~ $ gcc --version
gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
--
Summary: gcc -E -dD prints predefined macros, contrary to
docs
Product: gcc
Version: 4.2.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: preprocessor
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: martinrb at google dot com
GCC host triplet: x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37549