public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/14186] New: const volatile is ignored for TYPE_INSTANCE
@ 2012-05-30 22:22 jan.kratochvil at redhat dot com
  2012-06-19 20:42 ` [Bug c++/14186] " tromey at redhat dot com
  2012-06-20 14:56 ` tromey at redhat dot com
  0 siblings, 2 replies; 3+ messages in thread
From: jan.kratochvil at redhat dot com @ 2012-05-30 22:22 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=14186

             Bug #: 14186
           Summary: const volatile is ignored for TYPE_INSTANCE
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned@sourceware.org
        ReportedBy: jan.kratochvil@redhat.com
    Classification: Unclassified


Trailing const or volatile get parsed by they are ignored.

Output $3 should match $2, not $1.

p 'CV::m(int)'
$1 = {void (CV * const, CV::t)} 0x400944 <CV::m(int)>

p 'CV::m(int) const'
$2 = {void (const CV * const, CV::t)} 0x400952 <CV::m(int) const>

p CV::m(int) const
$3 = {void (CV * const, CV::t)} 0x400944 <CV::m(int)>
KFAIL: gdb.cp/cpexprs.exp: p CV::m(int) const (PRMS: gdb/9999)

former c-exp.y line:
exp     :       exp '(' nonempty_typelist ')' const_or_volatile
or new line:
exp    :       exp '(' 
                       /* This is to save the value of arglist_len
                          being accumulated by an outer function call.  */
                       { start_arglist (); }
               arglist_final ')' const_or_volatile     %prec ARROW
just ignore that 'const_or_volatile'.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/14186] const volatile is ignored for TYPE_INSTANCE
  2012-05-30 22:22 [Bug c++/14186] New: const volatile is ignored for TYPE_INSTANCE jan.kratochvil at redhat dot com
@ 2012-06-19 20:42 ` tromey at redhat dot com
  2012-06-20 14:56 ` tromey at redhat dot com
  1 sibling, 0 replies; 3+ messages in thread
From: tromey at redhat dot com @ 2012-06-19 20:42 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=14186

Tom Tromey <tromey at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tromey at redhat dot com

--- Comment #1 from Tom Tromey <tromey at redhat dot com> 2012-06-19 20:42:16 UTC ---
I looked into this a bit.  I have a partial patch.
It is turning out to be pretty ugly to pass the cv-qualifiers
from the parser down through OP_SCOPE to value_aggregate_elt.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/14186] const volatile is ignored for TYPE_INSTANCE
  2012-05-30 22:22 [Bug c++/14186] New: const volatile is ignored for TYPE_INSTANCE jan.kratochvil at redhat dot com
  2012-06-19 20:42 ` [Bug c++/14186] " tromey at redhat dot com
@ 2012-06-20 14:56 ` tromey at redhat dot com
  1 sibling, 0 replies; 3+ messages in thread
From: tromey at redhat dot com @ 2012-06-20 14:56 UTC (permalink / raw)
  To: gdb-prs

http://sourceware.org/bugzilla/show_bug.cgi?id=14186

--- Comment #2 from Tom Tromey <tromey at redhat dot com> 2012-06-20 14:55:38 UTC ---
Created attachment 6461
  --> http://sourceware.org/bugzilla/attachment.cgi?id=6461
start of a patch

Here's the start of a patch.

It has some unnecessary stuff in it, since I was hacking around
a bit.  But some parts should be ok, like the c-exp.y change.

The TYPE_INSTANCE code seems very suspect to me.  The parser production
just uses 'exp' -- but this means all kinds of weird things can be parsed
here.  (On further reflection I wish I hadn't allowed this extension...)
Also the code in eval.c does not use cleanups, so it can leak memory on errors.

The fundamental problem I hit is that rank_one_type does not consider
cv-qualifiers.  So, even after getting the qualifiers all the way through,
we still get the wrong answer; and I didn't want to try fixing this problem
yet.

The cv-qualifier problem could be hacked around in compare_parameters,
but that seemed too hackish for me.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-06-20 14:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-30 22:22 [Bug c++/14186] New: const volatile is ignored for TYPE_INSTANCE jan.kratochvil at redhat dot com
2012-06-19 20:42 ` [Bug c++/14186] " tromey at redhat dot com
2012-06-20 14:56 ` tromey at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).