diff options
author | Neil Booth <neil@daikokuya.co.uk> | 2003-08-02 16:29:46 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2003-08-02 16:29:46 +0000 |
commit | 49634b3a45f7d9e65a521ac665014d6a81194dc4 (patch) | |
tree | 2f3f5d24ede7076f17367de0a1945c6a8e563d8f /gcc/testsuite/gcc.dg/cpp | |
parent | cf1ee30c6769682cfba0b8518349a451e04d5dcc (diff) | |
download | gcc-49634b3a45f7d9e65a521ac665014d6a81194dc4.zip gcc-49634b3a45f7d9e65a521ac665014d6a81194dc4.tar.gz gcc-49634b3a45f7d9e65a521ac665014d6a81194dc4.tar.bz2 |
cppfiles.c (struct _cpp_file): Rename once_only_next to next_file.
* cppfiles.c (struct _cpp_file): Rename once_only_next to
next_file. Remove import and pragma_once, add once_only.
(find_file): Add new file structures to the all_files list.
(should_stack_file): Mark #import-ed files once-only, and
don't stack them if the file has already been stacked.
(_cp_mark_file_once_only): Simplify.
* cpphash.h (struct cpp_reader): Rename once_only_files
to all_files. Rename saw_pragma_once to seen_once_only.
(_cpp_mark_file_once_only): Update prototype.
* cpplib.c (do_pragma_once): Update.
testsuite:
* import1.c, import2.c: New tests.
From-SVN: r70106
Diffstat (limited to 'gcc/testsuite/gcc.dg/cpp')
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/import1.c | 16 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/import1.h | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/import2.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/import2.h | 4 |
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/cpp/import1.c b/gcc/testsuite/gcc.dg/cpp/import1.c new file mode 100644 index 0000000..d118d7f --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/import1.c @@ -0,0 +1,16 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "" } */ + +/* This tests that our eagerness to apply the multiple include guard + optimization to the #import doesn't stop us marking the file + once-only. + + Neil Booth, 2 August 2003. */ + +#include "import1.h" +#import "import1.h" +#undef IMPORT1_H +#define BUG +#include "import1.h" diff --git a/gcc/testsuite/gcc.dg/cpp/import1.h b/gcc/testsuite/gcc.dg/cpp/import1.h new file mode 100644 index 0000000..936c525 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/import1.h @@ -0,0 +1,6 @@ +#ifndef IMPORT1_H +#define IMPORT1_H +#ifdef BUG +#error Should not happen +#endif +#endif diff --git a/gcc/testsuite/gcc.dg/cpp/import2.c b/gcc/testsuite/gcc.dg/cpp/import2.c new file mode 100644 index 0000000..5c32523 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/import2.c @@ -0,0 +1,11 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. */ + +/* { dg-do preprocess } */ +/* { dg-options "" } */ + +/* This tests that the file is only included once + Neil Booth, 2 August 2003. */ + +#include "import2.h" +#import "import2.h" +#include "import2.h" diff --git a/gcc/testsuite/gcc.dg/cpp/import2.h b/gcc/testsuite/gcc.dg/cpp/import2.h new file mode 100644 index 0000000..c6a0fa5 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/import2.h @@ -0,0 +1,4 @@ +#ifdef BUG +#error Should not happen! +#endif +#define BUG |