Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: Pedro Alves <palves@redhat.com>
Cc: Simon Marchi <simon.marchi@ericsson.com>,
	gdb-patches@sourceware.org,        arnez@linux.vnet.ibm.com
Subject: Re: [PATCH] Make dwarf_expr_piece::pieces an std::vector
Date: Thu, 14 Sep 2017 13:58:00 -0000	[thread overview]
Message-ID: <b0b8e11af47b21fff242168dc0e06297@polymtl.ca> (raw)
In-Reply-To: <bdf858fd-f651-63f7-127b-ec3b64bd6e3a@redhat.com>

On 2017-09-14 12:24, Pedro Alves wrote:
> On 09/14/2017 10:26 AM, Simon Marchi wrote:
>> On 2017-09-14 11:21, Pedro Alves wrote:
> 
>>> I wonder if there's ever a case for 'const T &&' parameters,
>>> and if GCC could warn about them.  At least in non-template
>>> functions.
>> 
> 
> FYI, I filed https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82213 now.

Thanks, I couldn't have stated it as clearly as you did.

>> Oops, I started with a const reference, before changing it to rvalue
>> reference (and forgot to remove the const).  Does the patch look good 
>> to
>> you otherwise?
>> 
> 
> Sure, with tiny nit below.
> 
>>  /* Expand the memory allocated stack to contain at least
>> @@ -285,14 +282,9 @@ dwarf_expr_context::stack_empty_p () const
>>  void
>>  dwarf_expr_context::add_piece (ULONGEST size, ULONGEST offset)
>>  {
>> -  struct dwarf_expr_piece *p;
>> +  this->pieces.emplace_back ();
>> +  dwarf_expr_piece *p = &(this->pieces.back ());
>> 
> 
> The extra parens look odd to me:
> 
> - dwarf_expr_piece *p = &(this->pieces.back ());
> + dwarf_expr_piece *p = &this->pieces.back ();
> 
> ('p' could be a reference instead, since it's always
> non-null, but I guess even better would be to move most
> of the code below to a dwarf_expr_piece ctor.  But you don't
> really have to do that.  I definitely understand not wanting
> to change too much at a time.  And I wouldn't have said a thing
> if it weren't for the parens making me pause.  :-))

I initially left it as a pointer out of laziness, but I've changed it to 
a reference now.  I am pushing the patch with this and the const rvalue 
reference fixed.

I tried to add some constructors, but I didn't know how to design it 
nicely to support different types of value locations.  Maybe the best 
would be to add some factory functions that build various kinds of 
pieces, and make the constructor private.  Something like:

struct dwarf_expr_piece
{
   static dwarf_expr_piece make_memory_piece (CORE_ADDR addr, bool 
in_stack_memory)
   static dwarf_expr_piece make_register_piece (int regno);

private:
   dwarf_expr_piece ();
};

I'll try that for a follow-up patch.

Simon


  reply	other threads:[~2017-09-14 13:58 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-14  8:17 Simon Marchi
2017-09-14  9:21 ` Pedro Alves
2017-09-14  9:26   ` Simon Marchi
2017-09-14 10:24     ` Pedro Alves
2017-09-14 13:58       ` Simon Marchi [this message]
2017-09-14 14:14         ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b0b8e11af47b21fff242168dc0e06297@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=arnez@linux.vnet.ibm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    --cc=simon.marchi@ericsson.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox