aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-01-08 07:43:31 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-01-08 07:43:31 +0100
commit53290e072ae4d8e5d61f82d651b6fba309fed6f1 (patch)
tree9c330c06778ecd0226eeabc96443afbdd75b67e2 /libcpp
parent52ad5601bf56aba4d5da585c6a212ce3f6509af3 (diff)
re PR c++/69145 (Bogus 'warning: #pragma implementation for ‘...’ appears after file is included')
PR c++/69145 * files.c (cpp_included_before): If IS_ADHOC_LOC (location), lookup real location from the line_table. * g++.dg/ext/pr69145-1.C: New test. * g++.dg/ext/pr69145-2-very-long-filename.cc: New file. * g++.dg/ext/pr69145-2.h: New file. From-SVN: r232150
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/files.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 1151ad2180b..7845795b840 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2016-01-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/69145
+ * files.c (cpp_included_before): If IS_ADHOC_LOC (location), lookup
+ real location from the line_table.
+
2016-01-04 Jakub Jelinek <jakub@redhat.com>
Update copyright years.
diff --git a/libcpp/files.c b/libcpp/files.c
index 19527749d64..22b1d05b223 100644
--- a/libcpp/files.c
+++ b/libcpp/files.c
@@ -1224,10 +1224,12 @@ bool
cpp_included_before (cpp_reader *pfile, const char *fname,
source_location location)
{
- struct cpp_file_hash_entry *entry;
+ struct cpp_file_hash_entry *entry
+ = (struct cpp_file_hash_entry *)
+ htab_find_with_hash (pfile->file_hash, fname, htab_hash_string (fname));
- entry = (struct cpp_file_hash_entry *)
- htab_find_with_hash (pfile->file_hash, fname, htab_hash_string (fname));
+ if (IS_ADHOC_LOC (location))
+ location = get_location_from_adhoc_loc (pfile->line_table, location);
while (entry && (entry->start_dir == NULL || entry->u.file->err_no
|| entry->location > location))