This is the mail archive of the 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/29612] New: gcc --save-temps does not give "multi-character character constant" error

When I compile this simple C file:

#include <stddef.h>
int main() {
  return '\1\2';

I get a warning:

foo.c:3:10: warning: multi-character character constant

When I compile the same file using --save-temps, I do not get a warning. 
Similarly, if I use -E to produce a preprocessed file, and compile that, I do
not get a warning.  This is a bug: options like --save-temps and -E should not
affect the set of warnings which are issued.

However ,I noticed that I do get a warning if I compile with --save-temps

This appears to be a bug in libcpp: when a line directive indicates that it is
entering a system header file, it records the current state.  However, it
apparently does not restore the old state when it exits the system header file.
 The effect is that preprocessor warnings and errors are suppressed in a .i
file if a system header file is included.

           Summary: gcc --save-temps does not give "multi-character
                    character constant" error
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ian at airs dot com

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