From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1930) id 0D4823858012; Tue, 31 Aug 2021 17:24:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0D4823858012 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Martin Sebor To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-3267] Disable gcc_rich_location copying and assignment. X-Act-Checkin: gcc X-Git-Author: Martin Sebor X-Git-Refname: refs/heads/master X-Git-Oldrev: e45d5b6bf1bcf9fd16c3ecfadb9bde69f890b28d X-Git-Newrev: e4d2305adf4e9d11e396c1c5e5ae6214340cbcc2 Message-Id: <20210831172458.0D4823858012@sourceware.org> Date: Tue, 31 Aug 2021 17:24:58 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Aug 2021 17:24:58 -0000 https://gcc.gnu.org/g:e4d2305adf4e9d11e396c1c5e5ae6214340cbcc2 commit r12-3267-ge4d2305adf4e9d11e396c1c5e5ae6214340cbcc2 Author: Martin Sebor Date: Tue Aug 31 11:15:21 2021 -0600 Disable gcc_rich_location copying and assignment. gcc/cp/ChangeLog: * parser.c (cp_parser_selection_statement): Use direct initialization instead of copy. gcc/ChangeLog: * gcc-rich-location.h (gcc_rich_location): Make ctor explicit. libcpp/ChangeLog: * include/line-map.h (class rich_location): Disable copying and assignment. Diff: --- gcc/cp/parser.c | 4 ++-- gcc/gcc-rich-location.h | 6 ++++-- libcpp/include/line-map.h | 6 ++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 7dc4eae7102..1e2a4b121ea 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -12848,7 +12848,7 @@ cp_parser_selection_statement (cp_parser* parser, bool *if_p, IF_STMT_CONSTEVAL_P (statement) = true; condition = finish_if_stmt_cond (boolean_false_node, statement); - gcc_rich_location richloc = tok->location; + gcc_rich_location richloc (tok->location); bool non_compound_stmt_p = false; if (cp_lexer_next_token_is_not (parser->lexer, CPP_OPEN_BRACE)) { @@ -12876,7 +12876,7 @@ cp_parser_selection_statement (cp_parser* parser, bool *if_p, RID_ELSE)) { cp_token *else_tok = cp_lexer_peek_token (parser->lexer); - gcc_rich_location else_richloc = else_tok->location; + gcc_rich_location else_richloc (else_tok->location); guard_tinfo = get_token_indent_info (else_tok); /* Consume the `else' keyword. */ cp_lexer_consume_token (parser->lexer); diff --git a/gcc/gcc-rich-location.h b/gcc/gcc-rich-location.h index 00747631025..2a9e5db65d5 100644 --- a/gcc/gcc-rich-location.h +++ b/gcc/gcc-rich-location.h @@ -21,14 +21,16 @@ along with GCC; see the file COPYING3. If not see #define GCC_RICH_LOCATION_H /* A gcc_rich_location is libcpp's rich_location with additional - helper methods for working with gcc's types. */ + helper methods for working with gcc's types. The class is not + copyable or assignable because rich_location isn't. */ + class gcc_rich_location : public rich_location { public: /* Constructors. */ /* Constructing from a location. */ - gcc_rich_location (location_t loc, const range_label *label = NULL) + explicit gcc_rich_location (location_t loc, const range_label *label = NULL) : rich_location (line_table, loc, label) { } diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index 7d964172469..464494bfb5b 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -1670,6 +1670,12 @@ class rich_location /* Destructor. */ ~rich_location (); + /* The class manages the memory pointed to by the elements of + the M_FIXIT_HINTS vector and is not meant to be copied or + assigned. */ + rich_location (const rich_location &) = delete; + void operator= (const rich_location &) = delete; + /* Accessors. */ location_t get_loc () const { return get_loc (0); } location_t get_loc (unsigned int idx) const;