aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/cpp
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.co.uk>2003-08-02 16:29:46 +0000
committerNeil Booth <neil@gcc.gnu.org>2003-08-02 16:29:46 +0000
commit49634b3a45f7d9e65a521ac665014d6a81194dc4 (patch)
tree2f3f5d24ede7076f17367de0a1945c6a8e563d8f /gcc/testsuite/gcc.dg/cpp
parentcf1ee30c6769682cfba0b8518349a451e04d5dcc (diff)
downloadgcc-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.c16
-rw-r--r--gcc/testsuite/gcc.dg/cpp/import1.h6
-rw-r--r--gcc/testsuite/gcc.dg/cpp/import2.c11
-rw-r--r--gcc/testsuite/gcc.dg/cpp/import2.h4
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