This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug preprocessor/64517] Inconsistent behavior when mixing -E and -M
- From: "dominiq at lps dot ens.fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 09 Jan 2015 11:03:16 +0000
- Subject: [Bug preprocessor/64517] Inconsistent behavior when mixing -E and -M
- Auto-submitted: auto-generated
- References: <bug-64517-4 at http dot gcc dot gnu dot org/bugzilla/>
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.