This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, trunk, 4.9, 4.8] Fix PR57653, filename information discarded when using -imacros
- From: Peter Bergner <bergner at vnet dot ibm dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: "Joseph S. Myers" <joseph at codesourcery dot com>, Manuel López-Ibáñez <manu at gcc dot gnu dot org>, Allan McRae <allan at archlinux dot org>
- Date: Thu, 24 Apr 2014 11:16:01 -0500
- Subject: [PATCH, trunk, 4.9, 4.8] Fix PR57653, filename information discarded when using -imacros
- Authentication-results: sourceware.org; auth=none
Allan reported this, but we've had people report the same issue to us.
Manuel supplied the patch, but couldn't bootstrap and regtest it.
He did have a question of whether this was the "correct" fix:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57653#c18
...so I thought I could at least bootstrap and regtest the patch, which I have
done on trunk, 4.9 and the 4.8 branches. They all passed with not regressions.
I can also confirm that the patch fixes the error Allan and we are seeing.
Although, I will note that I needed a fairly new distro installed to
see this. With an older distro (glibc?), the error doesn't recreate.
Can someone please review Manuel's patch for correctness? If it's ok,
Manuel can you commit this to trunk and the branches? Or do you want
me to commit it for you?
I will note that I attempted to create a testsuite test case for this,
but dg-error and dg-message both seem to only allow you to match the
error output after the line #/row #, so it seems impossible to test
for this. If someone has any suggestions on how a test case can be
written, I'm willing to try it.
Peter
PR c/57653
* c-family/c-opts.c:
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c (revision 209715)
+++ gcc/c-family/c-opts.c (working copy)
@@ -1357,6 +1357,10 @@
static void
push_command_line_include (void)
{
+ // This can happen if disabled by -imacros for example.
+ if (include_cursor > deferred_count)
+ return;
+
if (!done_preinclude)
{
done_preinclude = true;