+2003-05-04 Neil Booth <neil@daikokuya.co.uk>
+
+ * cppinit.c (cpp_create_reader, post_options): Warn about
+ trigraphs unless explicity set or -trigraphs.
+ * cpplex.c (warn_in_comment): New.
+ (_cpp_process_line_notes): Better handling of -Wtrigraphs.
+ (_cpp_skip_block_comment): Add call to _cpp_process_line_notes.
+ * doc/cppopts.texi, doc/cpp.texi: Update.
+
2003-05-04 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
* Makefile.in (LIBGCOV): Add _gcov_merge_add.
@item -Wtrigraphs
@opindex Wtrigraphs
@anchor{Wtrigraphs}
-Warn if any trigraphs that may change the meaning of a program are
-encountered. This option is in effect unless trigraphs are turned on,
-and is implied by @option{-Wall}. With the exception of a trigraph
-that would form an escaped newline, warnings are not given for
-trigraphs within comments as they do not affect the meaning of the
-program.
+Most trigraphs in comments cannot affect the meaning of the program.
+However, a trigraph that would form an escaped newline (@samp{??/} at
+the end of a line) can, by changing where the comment begins or ends.
+Therefore, only trigraphs that would form escaped newlines produce
+warnings inside a comment.
+
+This option is implied by @option{-Wall}. If @option{-Wall} is not
+given, this option is still enabled unless trigraphs are enabled. To
+get trigraph conversion without warnings, but get the other
+@option{-Wall} warnings, use @samp{-trigraphs -Wall -Wno-trigraphs}.
@item -Wtraditional
@opindex Wtraditional
+2003-05-04 Neil Booth <neil@daikokuya.co.uk>
+
+ * gcc.dg/cpp/Wtrigraphs.c: Update.
+ * gcc.dg/cpp/Wtrigraphs-2.c: New tests.
+
2003-05-03 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/ppc-fsel-1.c: New test.
/* { dg-do preprocess } */
/* { dg-options "-std=c99 -Wtrigraphs -fno-show-column" } */
-/* Test we don't double warn for trigraphs immediately after preceding
- text. Source Neil Booth. 4 May 2003. */
+/* Test warnings for trigraphs in comments, with trigraphs enabled.
+ Neil Booth. 4 May 2003. */
-/* { dg-bogus "ignored" } Test ??< ??= a few ??/ random things in
+/* { dg-bogus "converted" } Test ??< ??= a few ??/ random things in
{ dg-warning "converted" } some ??/
- { dg-bogus "ignored" } ??< comments. */
+ { dg-bogus "converted" } ??< comments. */
-// { dg-bogus "ignored" } More ??/ comment ??> tests.
+// { dg-bogus "converted" } More ??/ comment ??> tests.
// { dg-warning "converted" } Another ??/
Test
// { dg-warning "converted" } And another with space after ??/
the escape
-// { dg-bogus "ignored" } A tricky one ??/\
+// { dg-bogus "converted" } A tricky one ??/\