aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2011-08-28 20:14:46 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2011-08-28 22:14:46 +0200
commit892a371f3b8c8ce79f59540908a8660cfc07f880 (patch)
treeeceb7d4375de4bb00babcce955c7e39bab611ff1 /libcpp
parente90abaa0a28ccc5581f5b7c7abc789c8fb84764c (diff)
downloadgcc-892a371f3b8c8ce79f59540908a8660cfc07f880.zip
gcc-892a371f3b8c8ce79f59540908a8660cfc07f880.tar.gz
gcc-892a371f3b8c8ce79f59540908a8660cfc07f880.tar.bz2
Fix the use of linemap_add and remove unnecessary kludge
libcpp/ * line-map.c (linemap_add): Assert that reason must not be LC_RENAME when called for the first time on a "main input file". c-family/ * c-pch.c (c_common_read_pch): Call linemap_add with LC_ENTER as it's the first time it's being called on this main TU. gcc/lto/ * lto-lang.c (lto_init): Likewise. Also, avoid calling linemap_add twice. gcc/fortran/ * scanner.c (load_file): Don't abuse LC_RENAME reason while (indirectly) calling linemap_add. From-SVN: r178146
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog5
-rw-r--r--libcpp/line-map.c9
2 files changed, 9 insertions, 5 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 8a5e899..4ecda03 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,8 @@
+2011-08-28 Dodji Seketeli <dodji@redhat.com>
+
+ * line-map.c (linemap_add): Assert that reason must not be
+ LC_RENAME when called for the first time on a "main input file".
+
2011-08-22 Gabriel Charette <gchare@google.com>
* init.c (cpp_create_reader): Inititalize forced_token_location_p.
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index dd3f11c..2a0749a 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -114,11 +114,10 @@ linemap_add (struct line_maps *set, enum lc_reason reason,
if (reason == LC_RENAME_VERBATIM)
reason = LC_RENAME;
- /* If we don't keep our line maps consistent, we can easily
- segfault. Don't rely on the client to do it for us. */
- if (set->depth == 0)
- reason = LC_ENTER;
- else if (reason == LC_LEAVE)
+ if (set->depth == 0 && reason == LC_RENAME)
+ abort ();
+
+ if (reason == LC_LEAVE)
{
struct line_map *from;
bool error;