From d09e893f10b6bb8bea9eafce9fd3f008f9cb5027 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 1 Jan 2006 00:45:58 +0100 Subject: re PR c++/25294 (Bogus "unterminated comment" error from #pragma comment) PR c++/25294 * directives.c (do_pragma): If pragma line ends with multi-line block comment, end the saved deferred pragma string before that comment. Handle embedded '\0' chars on the pragma line. * gcc.dg/pragma-pack-3.c: New test. * g++.dg/parse/pragma3.C: New test. From-SVN: r109201 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/parse/pragma3.C | 26 ++++++++++++++++++++++++++ gcc/testsuite/gcc.dg/pragma-pack-3.c | 27 +++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 gcc/testsuite/g++.dg/parse/pragma3.C create mode 100644 gcc/testsuite/gcc.dg/pragma-pack-3.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a3accaf..e953e00 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-01-01 Jakub Jelinek + + PR c++/25294 + * gcc.dg/pragma-pack-3.c: New test. + * g++.dg/parse/pragma3.C: New test. + 2005-12-30 John David Anglin PR middle-end/24827 diff --git a/gcc/testsuite/g++.dg/parse/pragma3.C b/gcc/testsuite/g++.dg/parse/pragma3.C new file mode 100644 index 0000000..36d7a8c --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/pragma3.C @@ -0,0 +1,26 @@ +// PR c++/25294 +// { dg-do run } + +extern "C" void abort (void); + +struct S +{ + char a[3]; +#pragma pack(1) /* A block comment + that ends on the next line. */ + struct T + { + char b; + int c; + } d; +#pragma pack /*/ */ () // C++ comment + int e; +} s; + +int +main () +{ + if (sizeof (int) == 4 && sizeof (s) != 12) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/pragma-pack-3.c b/gcc/testsuite/gcc.dg/pragma-pack-3.c new file mode 100644 index 0000000..e276bd0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pragma-pack-3.c @@ -0,0 +1,27 @@ +/* PR c++/25294 */ +/* { dg-options "-std=gnu99" } */ +/* { dg-do run } */ + +extern void abort (void); + +struct S +{ + char a[3]; +#pragma pack(1) /* A block comment + that ends on the next line. */ + struct T + { + char b; + int c; + } d; +#pragma pack /*/ */ () // C++ comment + int e; +} s; + +int +main () +{ + if (sizeof (int) == 4 && sizeof (s) != 12) + abort (); + return 0; +} -- cgit v1.1