mirror of git://gcc.gnu.org/git/gcc.git
re PR pch/13675 (#including a precompiled header more than once in the same unit fails)
PR pch/13675 * files.c (struct _cpp_file): Remove pch field. (pch_open_file): Don't set file->pch, just file->pchname. (should_stack_file): After pfile->cb.read_pch call free pchname and clear pchname, don't close file->fd. Test file->pchname instead of file->pch. Don't close fd after cb. (_cpp_stack_include): Test file->pchname instead of file->pch. * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f). From-SVN: r133790
This commit is contained in:
parent
764a79eda2
commit
d4c32e1d76
|
|
@ -1,3 +1,8 @@
|
||||||
|
2008-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR pch/13675
|
||||||
|
* c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
|
||||||
|
|
||||||
2008-04-01 Rafael Espindola <espindola@google.com>
|
2008-04-01 Rafael Espindola <espindola@google.com>
|
||||||
|
|
||||||
* tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
|
* tree-vrp.c (extract_code_and_val_from_cond_with_ops): New.
|
||||||
|
|
|
||||||
|
|
@ -373,6 +373,7 @@ c_common_read_pch (cpp_reader *pfile, const char *name,
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
{
|
{
|
||||||
cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen");
|
cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen");
|
||||||
|
close (fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -381,6 +382,7 @@ c_common_read_pch (cpp_reader *pfile, const char *name,
|
||||||
if (fread (&h, sizeof (h), 1, f) != 1)
|
if (fread (&h, sizeof (h), 1, f) != 1)
|
||||||
{
|
{
|
||||||
cpp_errno (pfile, CPP_DL_ERROR, "reading");
|
cpp_errno (pfile, CPP_DL_ERROR, "reading");
|
||||||
|
fclose (f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -417,7 +419,10 @@ c_common_read_pch (cpp_reader *pfile, const char *name,
|
||||||
gt_pch_restore (f);
|
gt_pch_restore (f);
|
||||||
|
|
||||||
if (cpp_read_state (pfile, name, f, smd) != 0)
|
if (cpp_read_state (pfile, name, f, smd) != 0)
|
||||||
|
{
|
||||||
|
fclose (f);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
fclose (f);
|
fclose (f);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,13 @@
|
||||||
|
2008-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR pch/13675
|
||||||
|
* files.c (struct _cpp_file): Remove pch field.
|
||||||
|
(pch_open_file): Don't set file->pch, just file->pchname.
|
||||||
|
(should_stack_file): After pfile->cb.read_pch call
|
||||||
|
free pchname and clear pchname, don't close file->fd.
|
||||||
|
Test file->pchname instead of file->pch. Don't close fd after cb.
|
||||||
|
(_cpp_stack_include): Test file->pchname instead of file->pch.
|
||||||
|
|
||||||
2008-03-28 Tom Tromey <tromey@redhat.com>
|
2008-03-28 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* Makefile.in (POSTCOMPILE): New variable.
|
* Makefile.in (POSTCOMPILE): New variable.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/* Part of CPP library. File handling.
|
/* Part of CPP library. File handling.
|
||||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
|
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
|
||||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Per Bothner, 1994.
|
Written by Per Bothner, 1994.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
|
|
@ -106,9 +106,6 @@ struct _cpp_file
|
||||||
|
|
||||||
/* If BUFFER above contains the true contents of the file. */
|
/* If BUFFER above contains the true contents of the file. */
|
||||||
bool buffer_valid;
|
bool buffer_valid;
|
||||||
|
|
||||||
/* File is a PCH (on return from find_include_file). */
|
|
||||||
bool pch;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* A singly-linked list for all searches for a given file name, with
|
/* A singly-linked list for all searches for a given file name, with
|
||||||
|
|
@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_file *file, bool *invalid_pch)
|
||||||
}
|
}
|
||||||
closedir (pchdir);
|
closedir (pchdir);
|
||||||
}
|
}
|
||||||
if (valid)
|
if (!valid)
|
||||||
file->pch = true;
|
|
||||||
else
|
|
||||||
*invalid_pch = true;
|
*invalid_pch = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _cpp_file *file, bool import)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Handle PCH files immediately; don't stack them. */
|
/* Handle PCH files immediately; don't stack them. */
|
||||||
if (file->pch)
|
if (file->pchname)
|
||||||
{
|
{
|
||||||
pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path);
|
pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path);
|
||||||
close (file->fd);
|
|
||||||
file->fd = -1;
|
file->fd = -1;
|
||||||
|
free ((void *) file->pchname);
|
||||||
|
file->pchname = NULL;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, const char *fname, int angle_brackets,
|
||||||
complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we
|
complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we
|
||||||
found a PCH file (in which case linemap_add is not called) or we
|
found a PCH file (in which case linemap_add is not called) or we
|
||||||
were included from the command-line. */
|
were included from the command-line. */
|
||||||
if (! file->pch && file->err_no == 0 && type != IT_CMDLINE)
|
if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE)
|
||||||
pfile->line_table->highest_location--;
|
pfile->line_table->highest_location--;
|
||||||
|
|
||||||
return _cpp_stack_file (pfile, file, type == IT_IMPORT);
|
return _cpp_stack_file (pfile, file, type == IT_IMPORT);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue