Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Artemiy Volkov <artemiyv@acm.org>
To: gdb-patches@sourceware.org
Cc: palves@redhat.com, keiths@redhat.com
Subject: Re: [PATCH v5 00/11] [PR gdb/14441] Support C++11 rvalue references in gdb
Date: Sun, 19 Jun 2016 15:08:00 -0000	[thread overview]
Message-ID: <20160619150831.GA6752@gmail.com> (raw)
In-Reply-To: <20160606192225.12384-1-artemiyv@acm.org>

On Mon, Jun 06, 2016 at 10:22:14PM +0300, Artemiy Volkov wrote:
> Hi all,
> 
> this is my fifth take on fixing gdb/14441 which deals with C++11 rvalue
> references.
> 
> The approach is rather straightforward and the work for the most part consisted
> of mimicking the behavior for regular references. In gdbtypes.c, several helper
> functions were introduced and some parameterized by the reference kind to
> simplify the access to reference type objects API.
> 
> The only interesting part is the addition of overloading resolution rules
> with regard to rvalue references. All of the cases introduced in 13.3.3.1.4 and
> 13.3.3.2 were accounted for at the beginning of rank_one_type().
> 
> With this patch it is now also possible to fix the evaluation of decltype,
> which should return a plain type object, an lvalue reference or an rvalue
> reference depending on a type category of the type of its operand. However,
> this would require introduction of the type category notion to gdb, which I
> think only needs adding a new constant to lval_type and propagating the type
> category through different parts of an expression in gdb/valops.c. I'm willing
> to do this if this patchset turns out to be OK.
> 
> Changes from v1 consist of dropping the libiberty part of 05/11 and the
> consequent testsuite changes. I have learned that introducing rvalue reference
> support to the demangler in cplus-dem.c is completely unnecessary, since
> virtually all contemporary compilers generate symbol names handled in
> cp-demangle.c. Therefore I have removed some of the testcases in
> gdb.cp/demangle.exp and switched the others to use the gnu-v3 demangling style.
> 
> Changes from v2 are numerous coding style fixes, improvements and
> simplifications of the changelog, reorganization and reordering of the
> patchset, removal of redundant code in gdb/python/*, addition of a couple of
> python tests, and a few bugfixes.
> 
> Changes from v3 are a few more coding style / English grammar fixes and code
> simplifications left over from v2.
> 
> Changes from v4 consist for the most part of reorganizing the additions to the
> testsuite: instead of putting the newly created testcases next to the matching
> lvalue reference tests, we create new files in the testsuite to place them
> into; also a small bug in the python part of the patchset has been fixed and
> the whole thing rebased against the current master branch. I have also added
> the PR number to the Changelog entries in the commit messages.

Ping?

> 
> Artemiy Volkov (11):
>   gdb: gdbtypes: add definitions for rvalue reference type
>   gdb: gdbtypes: change {lookup,make}_reference_type() API
>   gdb: valops: add ability to return rvalue reference values from
>     value_ref()
>   gdb: parse: support rvalue reference type
>   gdb: demangle: implement demangling for rvalue reference typenames
>   gdb: print: implement correct printing of rvalue reference types and
>     values
>   gdb: dwarf2read: support DW_TAG_rvalue_reference type
>   gdb: python: support rvalue references in the gdb module
>   gdb: convert lvalue reference type check to general reference type
>     check
>   gdb: gdbtypes: add rvalue references to overloading resolution
>   gdb: testsuite: add rvalue reference tests
> 
>  gdb/aarch64-tdep.c                                 |   5 +-
>  gdb/ada-lang.c                                     |   2 +-
>  gdb/amd64-tdep.c                                   |   2 +-
>  gdb/amd64-windows-tdep.c                           |   1 +
>  gdb/arm-tdep.c                                     |   5 +-
>  gdb/ax-gdb.c                                       |   2 +
>  gdb/c-exp.y                                        |   6 +-
>  gdb/c-typeprint.c                                  |  10 +-
>  gdb/c-valprint.c                                   |  14 +-
>  gdb/c-varobj.c                                     |  10 +-
>  gdb/compile/compile-c-symbols.c                    |   2 +-
>  gdb/completer.c                                    |   3 +-
>  gdb/cp-name-parser.y                               |   4 +
>  gdb/cp-support.c                                   |   3 +-
>  gdb/darwin-nat-info.c                              |   2 +-
>  gdb/dwarf2loc.c                                    |   4 +-
>  gdb/dwarf2read.c                                   |  15 +-
>  gdb/eval.c                                         |  16 +-
>  gdb/f-exp.y                                        |   2 +-
>  gdb/findvar.c                                      |   6 +-
>  gdb/gdbtypes.c                                     | 105 +++++++++++--
>  gdb/gdbtypes.h                                     |  20 ++-
>  gdb/guile/scm-type.c                               |   2 +-
>  gdb/guile/scm-value.c                              |   2 +-
>  gdb/hppa-tdep.c                                    |   1 +
>  gdb/infcall.c                                      |   5 +-
>  gdb/language.c                                     |   3 +-
>  gdb/m32c-tdep.c                                    |   8 +-
>  gdb/m88k-tdep.c                                    |   1 +
>  gdb/mn10300-tdep.c                                 |   1 +
>  gdb/msp430-tdep.c                                  |   2 +-
>  gdb/parse.c                                        |  39 ++---
>  gdb/parser-defs.h                                  |   1 +
>  gdb/ppc-sysv-tdep.c                                |   7 +-
>  gdb/printcmd.c                                     |   2 +-
>  gdb/python/lib/gdb/command/explore.py              |   2 +-
>  gdb/python/lib/gdb/types.py                        |   4 +-
>  gdb/python/py-type.c                               |  14 +-
>  gdb/python/py-value.c                              |  37 +++--
>  gdb/python/py-xmethods.c                           |  10 +-
>  gdb/s390-linux-tdep.c                              |   2 +-
>  gdb/sparc-tdep.c                                   |   1 +
>  gdb/sparc64-tdep.c                                 |   1 +
>  gdb/spu-tdep.c                                     |   1 +
>  gdb/stabsread.c                                    |   3 +-
>  gdb/symtab.c                                       |   3 +-
>  gdb/testsuite/gdb.cp/demangle.exp                  |  36 +++++
>  gdb/testsuite/gdb.cp/rvalue-ref-casts.cc           |  56 +++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-casts.exp          |  76 ++++++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-overload.cc        |  39 +++++
>  gdb/testsuite/gdb.cp/rvalue-ref-overload.exp       | 103 +++++++++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-params.cc          |  74 +++++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-params.exp         |  61 ++++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-sizeof.cc          |  73 +++++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-sizeof.exp         |  43 ++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-types.cc           |  73 +++++++++
>  gdb/testsuite/gdb.cp/rvalue-ref-types.exp          | 165 +++++++++++++++++++++
>  gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.cc |  55 +++++++
>  .../gdb.python/py-rvalue-ref-value-cc.exp          |  56 +++++++
>  gdb/typeprint.c                                    |   4 +-
>  gdb/valarith.c                                     |   6 +-
>  gdb/valops.c                                       |  70 ++++-----
>  gdb/valprint.c                                     |   5 +-
>  gdb/value.c                                        |  12 +-
>  gdb/value.h                                        |   2 +-
>  gdb/varobj.c                                       |   2 +-
>  66 files changed, 1235 insertions(+), 167 deletions(-)
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-casts.cc
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-casts.exp
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-overload.cc
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-overload.exp
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-params.cc
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-params.exp
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-sizeof.cc
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-sizeof.exp
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-types.cc
>  create mode 100644 gdb/testsuite/gdb.cp/rvalue-ref-types.exp
>  create mode 100644 gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.cc
>  create mode 100644 gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.exp
> 
> -- 
> 2.8.3
> 


      parent reply	other threads:[~2016-06-19 15:08 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-20 22:35 [PATCH 00/11] [PR gdb/14441] Support C++0x " Artemiy Volkov
2015-12-20 22:35 ` [PATCH 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2015-12-20 22:35 ` [PATCH 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2015-12-20 22:35 ` [PATCH 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2015-12-20 22:35 ` [PATCH 10/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2015-12-20 22:35 ` [PATCH 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2015-12-20 22:35 ` [PATCH 09/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2015-12-20 22:35 ` [PATCH 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2015-12-20 22:35 ` [PATCH 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2015-12-30 19:17   ` Pedro Alves
2015-12-20 22:35 ` [PATCH 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_AT_rvalue_reference type Artemiy Volkov
2015-12-20 22:35 ` [PATCH 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2015-12-20 22:35 ` [PATCH 08/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2015-12-28 21:09 ` [PATCH 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Artemiy Volkov
2016-01-20  9:42   ` Yao Qi
2016-01-19 18:54 ` [PATCH v2 " Artemiy Volkov
2016-01-19 18:54   ` [PATCH v2 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-02-19 18:53     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-02-19 18:54     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-02-19 18:50     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-02-19 18:56     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-02-19 18:52     ` Keith Seitz
2016-01-19 18:54   ` [PATCH v2 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-02-19 18:49     ` Keith Seitz
2016-02-23  7:04       ` Artemiy Volkov
2016-02-25  1:22         ` Keith Seitz
2016-02-25  1:32           ` Artemiy Volkov
2016-02-25  1:41             ` Keith Seitz
2016-02-25  1:45               ` Artemiy Volkov
2016-01-19 18:55   ` [PATCH v2 10/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-02-19 19:48     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-02-19 20:05     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_AT_rvalue_reference type Artemiy Volkov
2016-02-19 18:57     ` Keith Seitz
2016-01-19 18:55   ` [PATCH v2 08/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-02-19 19:01     ` Keith Seitz
2016-02-26  5:08       ` Artemiy Volkov
2016-01-19 18:55   ` [PATCH v2 09/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-02-19 19:46     ` Keith Seitz
2016-02-19 18:49   ` [PATCH v2 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Keith Seitz
2016-02-23  6:04     ` Artemiy Volkov
2016-03-05  3:20   ` [PATCH v3 " Artemiy Volkov
2016-03-05  3:20     ` [PATCH v3 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-03-16 22:26       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-03-16 22:08       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 09/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-03-16 22:41       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 08/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-03-16 22:32       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-03-16 22:19       ` Keith Seitz
2016-03-20 12:10         ` Artemiy Volkov
2016-03-05  3:20     ` [PATCH v3 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-03-16 22:25       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-03-16 22:22       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-03-16 22:23       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_AT_rvalue_reference type Artemiy Volkov
2016-03-16 22:28       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 10/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-03-16 22:45       ` Keith Seitz
2016-03-05  3:20     ` [PATCH v3 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-03-16 22:48       ` Keith Seitz
2016-03-21 21:02     ` [PATCH v4 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_TAG_rvalue_reference type Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 08/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-03-31 20:35         ` Keith Seitz
2016-04-02  8:28           ` Artemiy Volkov
2016-04-02  8:45             ` Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-03-21 21:02       ` [PATCH v4 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-03-21 21:03       ` [PATCH v4 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-03-21 21:03       ` [PATCH v4 09/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-03-31 20:37         ` Keith Seitz
2016-04-02  8:42           ` Artemiy Volkov
2016-03-21 21:03       ` [PATCH v4 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-03-21 21:15       ` [PATCH v4 10/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-03-31 20:35       ` [PATCH v4 00/11] [PR gdb/14441] Support C++0x rvalue references in gdb Keith Seitz
2016-04-02  8:48         ` Artemiy Volkov
2016-04-05 18:23           ` Pedro Alves
     [not found]             ` <20160406083016.GA31849@gmail.com>
2016-04-12 11:49               ` Pedro Alves
2016-04-19 15:51                 ` Artemiy Volkov
2016-04-22 11:31                   ` Pedro Alves
2016-06-06 19:22       ` [PATCH v5 00/11] [PR gdb/14441] Support C++11 " Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 08/11] [PR gdb/14441] gdb: python: support rvalue references in the gdb module Artemiy Volkov
2016-06-20 19:07           ` Pedro Alves
2016-06-06 19:23         ` [PATCH v5 09/11] [PR gdb/14441] gdb: convert lvalue reference type check to general reference type check Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 03/11] [PR gdb/14441] gdb: valops: add ability to return rvalue reference values from value_ref() Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 10/11] [PR gdb/14441] gdb: gdbtypes: add rvalue references to overloading resolution Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 05/11] [PR gdb/14441] gdb: demangle: implement demangling for rvalue reference typenames Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 01/11] [PR gdb/14441] gdb: gdbtypes: add definitions for rvalue reference type Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 07/11] [PR gdb/14441] gdb: dwarf2read: support DW_TAG_rvalue_reference type Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 02/11] [PR gdb/14441] gdb: gdbtypes: change {lookup,make}_reference_type() API Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 11/11] [PR gdb/14441] gdb: testsuite: add rvalue reference tests Artemiy Volkov
2016-06-20 19:04           ` Pedro Alves
2016-06-06 19:23         ` [PATCH v5 06/11] [PR gdb/14441] gdb: print: implement correct printing of rvalue reference types and values Artemiy Volkov
2016-06-06 19:23         ` [PATCH v5 04/11] [PR gdb/14441] gdb: parse: support rvalue reference type Artemiy Volkov
2016-06-19 15:08         ` Artemiy Volkov [this message]

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=20160619150831.GA6752@gmail.com \
    --to=artemiyv@acm.org \
    --cc=gdb-patches@sourceware.org \
    --cc=keiths@redhat.com \
    --cc=palves@redhat.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