From: Jakub Jelinek Date: Fri, 8 Jan 2016 06:43:31 +0000 (+0100) Subject: re PR c++/69145 (Bogus 'warning: #pragma implementation for ‘...’ appears after file... X-Git-Tag: upstream/12.2.0~49651 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=53290e072ae4d8e5d61f82d651b6fba309fed6f1;p=platform%2Fupstream%2Fgcc.git 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 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5840815..aaee559 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2016-01-08 Jakub Jelinek + + PR c++/69145 + * 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. + 2016-01-07 Martin Sebor PR c/68966 diff --git a/gcc/testsuite/g++.dg/ext/pr69145-1.C b/gcc/testsuite/g++.dg/ext/pr69145-1.C new file mode 100644 index 0000000..be0def7 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/pr69145-1.C @@ -0,0 +1,4 @@ +// PR c++/69145 +// { dg-do compile } +#pragma implementation "pr69145-2-very-long-filename.cc" // { dg-bogus "appears after file is included" } +#include "pr69145-2-very-long-filename.cc" diff --git a/gcc/testsuite/g++.dg/ext/pr69145-2-very-long-filename.cc b/gcc/testsuite/g++.dg/ext/pr69145-2-very-long-filename.cc new file mode 100644 index 0000000..dd68fe0 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/pr69145-2-very-long-filename.cc @@ -0,0 +1,3 @@ +// PR c++/69145 +// { dg-do compile } */ +#include "pr69145-2.h" diff --git a/gcc/testsuite/g++.dg/ext/pr69145-2.h b/gcc/testsuite/g++.dg/ext/pr69145-2.h new file mode 100644 index 0000000..342aa85 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/pr69145-2.h @@ -0,0 +1,3 @@ +#ifndef PR69145_2_H +# define PR69145_2_H +#endif diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 1151ad2..7845795 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2016-01-08 Jakub Jelinek + + 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 Update copyright years. diff --git a/libcpp/files.c b/libcpp/files.c index 1952774..22b1d05 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))