Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Sanimir Agovic <sanimir.agovic@intel.com>
Cc: tromey@redhat.com, palves@redhat.com, xdje42@gmail.com,
	gdb-patches@sourceware.org, keven.boell@intel.com
Subject: Re: [PATCH v4 05/13] vla: update type from newly created value
Date: Wed, 18 Dec 2013 03:44:00 -0000	[thread overview]
Message-ID: <20131218034412.GE3493@adacore.com> (raw)
In-Reply-To: <1387282678-3847-6-git-send-email-sanimir.agovic@intel.com>

> Constructing a value based on a type and address might change the type
> of the newly constructed value. Thus re-fetch type via value_type to ensure
> we have the correct type at hand.
> 
> 2013-10-18  Sanimir Agovic  <sanimir.agovic@intel.com>
>             Keven Boell  <keven.boell@intel.com>
> 
> 	* ada-lang.c (ada_value_primitive_packed_val): Re-fetch type from value.
> 	(ada_template_to_fixed_record_type_1): Likewise.
> 	(ada_to_fixed_type_1): Likewise.
> 	* cp-valprint.c (cp_print_value_fields_rtti): Likewise.
> 	(cp_print_value): Likewise.
> 	* d-valprint.c (dynamic_array_type): Likewise.
> 	* jv-valprint.c (java_value_print): Likewise.
> 	* valops.c (value_ind): Likewise.
> 	* value.c (coerce_ref): Likewise.

This patch makes me a little nervous, but unfortunately, the only option
I have to help with that is going to be a little labor-intensive, so
may not be practical. I'll leave it to you and the maintainers who have
been reviewing your patches so far.

I see that the type re-fetch was not added systematically, but only in
some of the locations where value_at/value_at_lazy/
value_from_contents_and_address are being called?  Was it in order
to fix some regressions revealed by the testsuite?  If that's the case,
I think this patch should be merged with the patch that causes the
regressions, just to make sure that each patch individually causes
no regression. This also helps when using the bisect feature of git.

It looks like it's very easy to miss a case where we should re-fetch
the type, which is what makes me slightly nervous. It's also putting
the onus on the user to remember that value_[...] may return a value
whose type is different from the one he has. So, now the labor-intensive
suggestion: How about adding a type parameter to those 3 functions,
to force the user to think about it and give him a chance to DTRT from
the start? This parameter would be allowed to be NULL in the cases were
we know we don't need to re-fecth. Another advantage I see from
this approach is that vendor code-bases would stop building as soon as
your change is imported, directing their attention to this change and
the implicit question, for each location, that needs to be answered.

I did a quick grep, and counted about 70 locations that would need
to be adjusted if we were to go that route.

-- 
Joel


  reply	other threads:[~2013-12-18  3:44 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-17 12:18 [PATCH v4 00/13] C99 variable length array support Sanimir Agovic
2013-12-17 12:18 ` [PATCH v4 06/13] vla: print "variable length" for unresolved dynamic bounds Sanimir Agovic
2013-12-17 12:18 ` [PATCH v4 07/13] vla: support for DW_AT_count Sanimir Agovic
2013-12-17 12:18 ` [PATCH v4 05/13] vla: update type from newly created value Sanimir Agovic
2013-12-18  3:44   ` Joel Brobecker [this message]
2013-12-17 12:18 ` [PATCH v4 04/13] vla: enable sizeof operator for indirection Sanimir Agovic
2014-01-15 21:28   ` Tom Tromey
2014-01-16 17:02     ` Agovic, Sanimir
2013-12-17 12:18 ` [PATCH v4 01/13] vla: introduce new bound type abstraction adapt uses Sanimir Agovic
2013-12-18  3:24   ` Joel Brobecker
2013-12-18 15:59     ` Agovic, Sanimir
2014-01-15 21:39       ` Tom Tromey
2014-01-16  2:45         ` Joel Brobecker
2014-01-16 17:03         ` Agovic, Sanimir
2014-01-16 17:39           ` Tom Tromey
2013-12-17 12:18 ` [PATCH v4 02/13] type: add c99 variable length array support Sanimir Agovic
2014-01-15 21:07   ` Tom Tromey
2014-01-16 17:01     ` Agovic, Sanimir
2013-12-17 12:19 ` [PATCH v4 03/13] vla: enable sizeof operator to work with variable length arrays Sanimir Agovic
2014-01-15 21:24   ` Tom Tromey
2013-12-17 12:19 ` [PATCH v4 09/13] test: cover subranges with present DW_AT_count attribute Sanimir Agovic
2013-12-17 12:19 ` [PATCH v4 08/13] vla: resolve dynamic bounds if value contents is a constant byte-sequence Sanimir Agovic
2013-12-17 12:19 ` [PATCH v4 10/13] test: multi-dimensional c99 vla Sanimir Agovic
2013-12-17 12:19 ` [PATCH v4 11/13] test: evaluate pointers to C99 vla correctly Sanimir Agovic
2013-12-17 12:19 ` [PATCH v4 12/13] test: basic c99 vla tests for C primitives Sanimir Agovic
2014-01-15 21:39   ` Tom Tromey
2014-01-16 17:02     ` Agovic, Sanimir
2014-01-16 17:33       ` Tom Tromey
2014-01-17 13:36         ` Agovic, Sanimir
2014-01-20  5:47           ` Tom Tromey
2014-01-20  9:32             ` Agovic, Sanimir
2013-12-17 12:19 ` [PATCH v4 13/13] test: add mi vla test Sanimir Agovic
2013-12-18  3:01 ` [PATCH v4 00/13] C99 variable length array support Joel Brobecker
2014-01-15 21:41 ` Tom Tromey
2014-01-16 17:05   ` Agovic, Sanimir
2014-01-16 22:11     ` Tom Tromey

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=20131218034412.GE3493@adacore.com \
    --to=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=keven.boell@intel.com \
    --cc=palves@redhat.com \
    --cc=sanimir.agovic@intel.com \
    --cc=tromey@redhat.com \
    --cc=xdje42@gmail.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