From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 86427 invoked by alias); 5 Jul 2019 15:27:18 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 86418 invoked by uid 89); 5 Jul 2019 15:27:18 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,SPF_PASS autolearn=ham version=3.3.1 spammy=Associate X-HELO: foss.arm.com Received: from foss.arm.com (HELO foss.arm.com) (217.140.110.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 05 Jul 2019 15:27:16 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1E19528 for ; Fri, 5 Jul 2019 08:27:15 -0700 (PDT) Received: from localhost (e121540-lin.manchester.arm.com [10.32.98.39]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B86473F246 for ; Fri, 5 Jul 2019 08:27:14 -0700 (PDT) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: [10/11] Use file_location for md_reader's ptr_loc References: Date: Fri, 05 Jul 2019 15:31:00 -0000 In-Reply-To: (Richard Sandiford's message of "Fri, 05 Jul 2019 16:05:51 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2019-07/txt/msg00459.txt.bz2 Use file_location for md_reader's ptr_loc. Also make it public, so that clients can use the location for error reporting. I'll apply this once the port changes are in. (It could go in now, but it's Friday afternoon...) 2019-07-05 Richard Sandiford gcc/ * read-md.h (md_reader::ptr_loc): Moved from read-md.c. Use file_location instead of separate fields. (md_reader::set_md_ptr_loc): Take a file_location instead of a separate filename and line number. * read-md.c (ptr_loc): As above. (md_reader::copy_md_ptr_loc): Update for new ptr_loc layout. (md_reader::fprint_md_ptr_loc): Likewise. (md_reader::set_md_ptr_loc): Likewise. Take a file_location instead of a separate filename and line number. (md_reader::read_string): Update call accordingly. Index: gcc/read-md.h =================================================================== --- gcc/read-md.h 2019-05-12 12:27:15.753897237 +0100 +++ gcc/read-md.h 2019-07-05 15:08:52.698765764 +0100 @@ -148,6 +148,13 @@ struct mapping; class md_reader { public: + /* Associates PTR (which can be a string, etc.) with the file location + specified by LOC. */ + struct ptr_loc { + const void *ptr; + file_location loc; + }; + md_reader (bool compact); virtual ~md_reader (); @@ -182,7 +189,7 @@ struct mapping; void require_word_ws (const char *expected); int peek_char (void); - void set_md_ptr_loc (const void *ptr, const char *filename, int lineno); + void set_md_ptr_loc (const void *ptr, file_location); const struct ptr_loc *get_md_ptr_loc (const void *ptr); void copy_md_ptr_loc (const void *new_ptr, const void *old_ptr); void fprint_md_ptr_loc (FILE *outf, const void *ptr); Index: gcc/read-md.c =================================================================== --- gcc/read-md.c 2019-03-08 18:15:36.692740380 +0000 +++ gcc/read-md.c 2019-07-05 15:08:52.698765764 +0100 @@ -43,14 +43,6 @@ int have_error = 0; #endif /* #ifndef GENERATOR_FILE */ -/* Associates PTR (which can be a string, etc.) with the file location - specified by FILENAME and LINENO. */ -struct ptr_loc { - const void *ptr; - const char *filename; - int lineno; -}; - /* This callback will be invoked whenever an md include directive is processed. To be used for creation of the dependency file. */ void (*include_callback) (const char *); @@ -94,25 +86,24 @@ leading_ptr_eq_p (const void *def1, cons return *(const void *const *) def1 == *(const void *const *) def2; } -/* Associate PTR with the file position given by FILENAME and LINENO. */ +/* Associate PTR with the file position given by FILE_LOC. */ void -md_reader::set_md_ptr_loc (const void *ptr, const char *filename, int lineno) +md_reader::set_md_ptr_loc (const void *ptr, file_location file_loc) { struct ptr_loc *loc; loc = (struct ptr_loc *) obstack_alloc (&m_ptr_loc_obstack, sizeof (struct ptr_loc)); loc->ptr = ptr; - loc->filename = filename; - loc->lineno = lineno; + loc->loc = file_loc; *htab_find_slot (m_ptr_locs, loc, INSERT) = loc; } /* Return the position associated with pointer PTR. Return null if no position was set. */ -const struct ptr_loc * +const md_reader::ptr_loc * md_reader::get_md_ptr_loc (const void *ptr) { return (const struct ptr_loc *) htab_find (m_ptr_locs, &ptr); @@ -125,7 +116,7 @@ md_reader::copy_md_ptr_loc (const void * { const struct ptr_loc *loc = get_md_ptr_loc (old_ptr); if (loc != 0) - set_md_ptr_loc (new_ptr, loc->filename, loc->lineno); + set_md_ptr_loc (new_ptr, loc->loc); } /* If PTR is associated with a known file position, print a #line @@ -136,7 +127,7 @@ md_reader::fprint_md_ptr_loc (FILE *outf { const struct ptr_loc *loc = get_md_ptr_loc (ptr); if (loc != 0) - fprintf (outf, "#line %d \"%s\"\n", loc->lineno, loc->filename); + fprintf (outf, "#line %d \"%s\"\n", loc->loc.lineno, loc->loc.filename); } /* Special fprint_md_ptr_loc for writing to STDOUT. */ @@ -672,7 +663,7 @@ md_reader::read_string (int star_if_brac { char *stringbuf; int saw_paren = 0; - int c, old_lineno; + int c; c = read_skip_spaces (); if (c == '(') @@ -681,7 +672,7 @@ md_reader::read_string (int star_if_brac c = read_skip_spaces (); } - old_lineno = get_lineno (); + file_location loc = get_current_location (); if (c == '"') stringbuf = read_quoted_string (); else if (c == '{') @@ -704,7 +695,7 @@ md_reader::read_string (int star_if_brac if (saw_paren) require_char_ws (')'); - set_md_ptr_loc (stringbuf, get_filename (), old_lineno); + set_md_ptr_loc (stringbuf, loc); return stringbuf; }