From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1611) id EFF9E385841A; Tue, 30 Aug 2022 16:57:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EFF9E385841A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1661878626; bh=eVfqB1u2COE60Gw86vW/Nm7KVYUGJxbL2JgpDK+Xo0M=; h=From:To:Subject:Date:From; b=OtO6ZInoItKLJ2WUmW5siamRrh8omJbMLQTMLYxIl7r/E3mZd6AYtNswkKzW3PKnP tYvy035Qi7JsHlMQDDIbRAKJiDGsR0BMQ75NcOtMXBBpQZcDPfNSl9/AMVMq5Fi9DY KFkpWpIa18oAePWXKst9rqIxsaVcIEROgDMFqqxA= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Martin Jambor To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-2293] vec: Add array_slice constructors from non-const and gc vectors X-Act-Checkin: gcc X-Git-Author: Martin Jambor X-Git-Refname: refs/heads/master X-Git-Oldrev: 75f59441cd63a1d07e86d70d59c518049f53904f X-Git-Newrev: 15433c214df295f2281a90fcf283355b21beca0e Message-Id: <20220830165705.EFF9E385841A@sourceware.org> Date: Tue, 30 Aug 2022 16:57:05 +0000 (GMT) List-Id: https://gcc.gnu.org/g:15433c214df295f2281a90fcf283355b21beca0e commit r13-2293-g15433c214df295f2281a90fcf283355b21beca0e Author: Martin Jambor Date: Tue Aug 30 18:50:35 2022 +0200 vec: Add array_slice constructors from non-const and gc vectors This patch adds constructors of array_slice that are required to create them from non-const (heap or auto) vectors or from GC vectors. gcc/ChangeLog: 2022-08-08 Martin Jambor * vec.h (array_slice): Add constructors for non-const reference to heap vector and pointers to heap vectors. Diff: --- gcc/vec.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gcc/vec.h b/gcc/vec.h index d048fa54ce8..1abe777baeb 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -2267,6 +2267,18 @@ public: array_slice (const vec &v) : m_base (v.address ()), m_size (v.length ()) {} + template + array_slice (vec &v) + : m_base (v.address ()), m_size (v.length ()) {} + + template + array_slice (const vec *v) + : m_base (v ? v->address () : nullptr), m_size (v ? v->length () : 0) {} + + template + array_slice (vec *v) + : m_base (v ? v->address () : nullptr), m_size (v ? v->length () : 0) {} + iterator begin () { return m_base; } iterator end () { return m_base + m_size; }