[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character [-Wnewline-eof]

2023-04-17 Thread egallager at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #16 from Eric Gallager  ---
(In reply to Andrew Pinski from comment #15)
> (In reply to Vincent Lefèvre from comment #14)
> > Even though GCC decides to add a newline to the logical file, so that the
> > missing diagnostic can be regarded as correct, I think that an optional
> > warning would be useful for portability.
> > https://gcc.gnu.org/legacy-ml/gcc-patches/2007-04/msg00651.html was
> > suggesting "add -W(no-)eof-newline". So why hasn't -Wno-eof-newline been
> > added?
> 
> Because it was decided the warning was not needed at all so why have an
> option to turn it on/off if it was not a good warning.

It might not have been *needed*, but some people still might *want* it anyways.
I think it's a good warning anyways just for style purposes, even if it isn't
strictly necessary.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character [-Wnewline-eof]

2023-04-17 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #15 from Andrew Pinski  ---
(In reply to Vincent Lefèvre from comment #14)
> Even though GCC decides to add a newline to the logical file, so that the
> missing diagnostic can be regarded as correct, I think that an optional
> warning would be useful for portability.
> https://gcc.gnu.org/legacy-ml/gcc-patches/2007-04/msg00651.html was
> suggesting "add -W(no-)eof-newline". So why hasn't -Wno-eof-newline been
> added?

Because it was decided the warning was not needed at all so why have an option
to turn it on/off if it was not a good warning.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character [-Wnewline-eof]

2023-04-17 Thread vincent-gcc at vinc17 dot net via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #14 from Vincent Lefèvre  ---
(In reply to Andrew Pinski from comment #13)
> GCC removed the pedwarning on purpose (between GCC 4.1 and 4.4), see PR
> 14331 and PR 68994. 

No, PR 14331 was just asking to remove the warning by default, not that
`-pedantic` shouldn't warn: "I checked through the gcc manual, and didn't found
any option to suppress the warning message "no newline at end of file".

And PR 68994 was complaining about the missing warning.

> https://gcc.gnu.org/legacy-ml/gcc-patches/2007-04/msg00651.html
> is the specific one about GCC's behavior and since it is considered
> undefined at compile time (not a runtime one) GCC behavior is correct so is
> clang

Even though GCC decides to add a newline to the logical file, so that the
missing diagnostic can be regarded as correct, I think that an optional warning
would be useful for portability.
https://gcc.gnu.org/legacy-ml/gcc-patches/2007-04/msg00651.html was suggesting
"add -W(no-)eof-newline". So why hasn't -Wno-eof-newline been added?

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2023-04-16 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

Andrew Pinski  changed:

   What|Removed |Added

   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=68994

--- Comment #13 from Andrew Pinski  ---
(In reply to Sam James from comment #11)
> Came across this because Clang has this warning for -pedantic but GCC
> doesn't.

GCC removed the pedwarning on purpose (between GCC 4.1 and 4.4), see PR 14331
and PR 68994. 

https://gcc.gnu.org/legacy-ml/gcc-patches/2007-04/msg00651.html
is the specific one about GCC's behavior and since it is considered undefined
at compile time (not a runtime one) GCC behavior is correct so is clang

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2023-04-16 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #12 from Sam James  ---
(In reply to Sam James from comment #11)
> C99 seems to explicitly say, within Clause J.2, in the second bullet point:

This seems to be in C23 still.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2023-04-16 Thread sjames at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #11 from Sam James  ---
C99 seems to explicitly say, within Clause J.2, in the second bullet point:
>
>1 The behavior is undefined in the following circumstances:
>
>[...]
>A nonempty source file does not end in a new-line character which is not 
> >immediately preceded by a backslash character or ends in a partial 
> >preprocessing token or comment (5.1.1.2). 

Came across this because Clang has this warning for -pedantic but GCC doesn't.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-07 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #10 from Jonathan Wakely  ---
(In reply to Vincent Lefèvre from comment #9)
> Changed back to INVALID (there's a bug in bugzilla, which changes INVALID to
> FIXED after a reload + a new comment).

Sounds like something your browser did, bugzilla doesn't do that.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread vincent-gcc at vinc17 dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

Vincent Lefèvre  changed:

   What|Removed |Added

 Resolution|FIXED   |INVALID

--- Comment #9 from Vincent Lefèvre  ---
Changed back to INVALID (there's a bug in bugzilla, which changes INVALID to
FIXED after a reload + a new comment).

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread vincent-gcc at vinc17 dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #8 from Vincent Lefèvre  ---
(In reply to Vincent Lefèvre from comment #7)
> Here one gets two different results!

For this latest issue (which is the cause of the error in C), I've reported
PR81746.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread vincent-gcc at vinc17 dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #7 from Vincent Lefèvre  ---
And with only the preprocessor:

$ printf 'int main(void) { return 0; } \\' | gcc -E -
# 1 ""
# 1 ""
# 1 ""
# 31 ""
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "" 2
# 1 ""
int main(void) { return 0; } \
$ printf 'int main(void) { return 0; } \\\n' | gcc -E -
# 1 ""
# 1 ""
# 1 ""
# 31 ""
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "" 2
# 1 ""
:1:30: warning: backslash-newline at end of file
int main(void) { return 0; }
$

Here one gets two different results!

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread vincent-gcc at vinc17 dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #6 from Vincent Lefèvre  ---
(In reply to Andrew Pinski from comment #5)
> Also see http://www.opengroup.org/austin/aardvark/latest/xcubug2.txt
> ERN 76

This is not about the missing newline at the end of a file.

Moreover, GCC doesn't seem to be consistent:

$ printf 'int main(void) { return 0; } \\' | gcc -xc -std=c99 - && echo OK
:1:30: error: stray ‘\’ in program
$ printf 'int main(void) { return 0; } \\\n' | gcc -xc -std=c99 - && echo OK
:1:30: warning: backslash-newline at end of file
OK
$

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #5 from Andrew Pinski  ---
Also see http://www.opengroup.org/austin/aardvark/latest/xcubug2.txt
ERN 76

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread vincent-gcc at vinc17 dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

Vincent Lefèvre  changed:

   What|Removed |Added

 Resolution|INVALID |FIXED

--- Comment #4 from Vincent Lefèvre  ---
(In reply to Andrew Pinski from comment #3)
> https://gcc.gnu.org/ml/gcc-patches/2007-04/msg00504.html
> 
> See that reasoning there.

"It's really not undefined at all.  gcc would be still be standard
conformant if we defined all input to end with a newline, whether or
not the actual physical Unix input file did so."

OK, but this needs to be documented.

The GCC manual says:


4.2 Environment
===

The behavior of most of these points are dependent on the implementation
of the C library, and are not defined by GCC itself.

   * 'The mapping between physical source file multibyte characters and
 the source character set in translation phase 1 (C90, C99 and C11
 5.1.1.2).'


However, the fact that all input files are regarded to end with a newline is
completely specific to GCC, not part of how the C library works.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #3 from Andrew Pinski  ---
https://gcc.gnu.org/ml/gcc-patches/2007-04/msg00504.html

See that reasoning there.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #1 from Andrew Pinski  ---
IIRC There was some discussion before and it was decided that the warning was
not needed.

[Bug preprocessor/81745] missing warning with -pedantic when a C file does not end with a newline character

2017-08-06 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81745

--- Comment #2 from Andrew Pinski  ---
See the thread starting at
https://gcc.gnu.org/ml/gcc-patches/2007-04/msg00457.html .