https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64517
Dominique d'Humieres <dominiq at lps dot ens.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2015-01-09 Component|fortran |preprocessor Ever confirmed|0 |1 --- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- Fist the -E and -M options are not gfortran specific (see https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options). For the following C code cat vbmi.c typedef char __v64qi __attribute__ ((__vector_size__ (64))); __v64qi _mm512_multishift_epi64_epi8 (__v64qi __X, __v64qi __Y) { return (__v64qi) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X, (__v64qi) __Y, (__v64qi) __Y, -1); } gcc vbmi.c -M gives vbmi.o: vbmi.c gcc vbmi.c -E gives # 1 "vbmi.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "vbmi.c" typedef char __v64qi __attribute__ ((__vector_size__ (64))); __v64qi _mm512_multishift_epi64_epi8 (__v64qi __X, __v64qi __Y) { return (__v64qi) __builtin_ia32_vpmultishiftqb512_mask ((__v64qi) __X, (__v64qi) __Y, (__v64qi) __Y, -1); } and gcc vbmi.c -E -M gives vbmi.o: vbmi.c So it seems that the sentence Passing -M to the driver implies -E, ... is not accurate. Thus I am moving the PR to the 'preprocessor' component. > There is a bigger problem that I didn't immediately recognize with > the empty file: Using `-M` results in gfortran trying to compile > the source. I.e., it does *not* stop after preprocessing, which > it should if `-E` is implied. I don't see that (at least using -E on a code generating *.mod files when compiled does not generate these files). Note that the use of preprocessor with fortran leads to several PRs: see pr47485, pr47486, pr47720, and pr49149.