Checked this with gcc-3.4.6 and gcc 4.1.2 on an ubuntu edgy box. [EMAIL PROTECTED]:~/try/bug$ cat makefile
all: gcc-3.4 -c main.c -o obj-c/main.o -MMD -MF obj-c/main.d gcc-3.4 -E main.c -o obj-E/main.i -MMD -MF obj-E/main.d diff obj-c/main.d obj-E/main.d [EMAIL PROTECTED]:~/try/bug$ cat main.c #include "aaa.h" int main(void) { return AAA; } gcc-3.4 -c main.c -o obj-c/main.o -MMD -MF obj-c/main.d gcc-3.4 -E main.c -o obj-E/main.i -MMD -MF obj-E/main.d diff obj-c/main.d obj-E/main.d 1c1 < obj-c/main.o: main.c aaa.h --- > main.o: main.c aaa.h Contents of obj-c and obj-E are [EMAIL PROTECTED]:~/try/bug$ ls obj-c/ main.d main.o [EMAIL PROTECTED]:~/try/bug$ ls obj-E/ main.d main.i A workaround that we can do is to use the -MT with the option at the moment. -- Summary: behaviour with -MMD and -c / -E causes differring behaviours. Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: driver AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ramana dot radhakrishnan at codito dot com GCC host triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30491