This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug preprocessor/64517] Inconsistent behavior when mixing -E and -M


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64517

--- Comment #3 from Thomas Fanning <thfanning at gmail dot com> ---
In gcc-4.9.2, using both -M and -E produce the expected output: dependencies
only. But in gfortran, both preprocessed output and dependencies are produced.
This is incorrect.

It seems to me that the gfortran driver is not setting up the preprocessing
environment correctly, so I'm not sure this is strictly a preprocessor problem.

For the following C code: preprocess.c

  // It's me!
  #include "UTIL_System.h"

  int main()
  {
    return 0;
  }

gcc -M preprocess.c
--> preprocess.o: preprocess.c UTIL_System.h  <-- dependencies

gcc -M -E preprocess.c
--> preprocess.o: preprocess.c UTIL_System.h  <-- dependencies

Since GNU make defines CPP = '$(CC) -E', it is essential that combining -E and
-M are compatible.

For the following gfortran file however: preprocess.F90

  ! It's me!
  program test
  #include "UTIL_System.h"
  print *, "Hello, World!"
  end program

gfortran -M preprocess.F90
--> preprocess.o: preprocess.F90 UTIL_System.h  <-- dependencies

But gfortran -M -E preprocess.F90
--> # 1 "preprocess.F90"
--> # 1 "<built-in>"
--> # 1 "<command-line>"
--> # 1 "preprocess.F90"
--> ! It's me!
--> program test
--> 
--> # 1 "UTIL_System.h" 1
--> # 4 "preprocess.F90" 2
--> print *, "Hello, World!"
--> end program
--> preprocess.o: preprocess.F90 UTIL_System.h  <-- dependencies


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]