Discussion:
[Bug c++/17494] New: Ternary operator not evaluated correctly
sivachandra at gmail dot com
2014-10-20 13:35:27 UTC
Permalink
https://sourceware.org/bugzilla/show_bug.cgi?id=17494

Bug ID: 17494
Summary: Ternary operator not evaluated correctly
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: c++
Assignee: unassigned at sourceware dot org
Reporter: sivachandra at gmail dot com

Consider the following code:

class A
{
public:
A () { a = 12345; }
int geta ();

int a;
};

int
A::geta ()
{
return a;
}

int
main ()
{
A a;
return 0; /* Break here */
}

I see this with GDB:

(gdb) p a.geta()
$3 = 12345
(gdb) p false ? a.geta() : 123
$2 = {a = 12345}

The result is of the wrong type (and value).

Similarly:

(gdb) p (true ? 123 : a.geta()) + 1
Can't do that binary op on that type
--
You are receiving this mail because:
You are on the CC list for the bug.
sivachandra at gmail dot com
2014-10-20 13:36:26 UTC
Permalink
https://sourceware.org/bugzilla/show_bug.cgi?id=17494

Siva Chandra <sivachandra at gmail dot com> changed:

What |Removed |Added
----------------------------------------------------------------------------
CC| |sivachandra at gmail dot com
Assignee|unassigned at sourceware dot org |sivachandra at google dot com
--
You are receiving this mail because:
You are on the CC list for the bug.
cvs-commit at gcc dot gnu.org
2014-11-04 02:06:47 UTC
Permalink
https://sourceware.org/bugzilla/show_bug.cgi?id=17494

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".

The branch, master has been updated
via e0f52461c2467b6610391681fa27cd9b3c5def57 (commit)
from f868b157aa4079bcdcb482b6b6634b5df8f74dbd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e0f52461c2467b6610391681fa27cd9b3c5def57

commit e0f52461c2467b6610391681fa27cd9b3c5def57
Author: Siva Chandra <***@chromium.org>
Date: Sat Oct 18 06:14:00 2014 -0700

Fix evaluation of method calls under EVAL_SKIP.

When evaluating method calls under EVAL_SKIP, the "object" and the
arguments to the method should also be evaluated under EVAL_SKIP,
instead of skipping to evaluate them as was being done previously.

gdb/ChangeLog:

PR c++/17494
* eval.c (evaluate_subexp_standard): Evaluate the "object" and
the method args also under EVAL_SKIP when evaluating method
calls under EVAL_SKIP.

gdb/testsuite/ChangeLog:

PR c++/17494
* gdb.cp/pr17494.cc: New file.
* gdb.cp/pr17494.exp: New file.

-----------------------------------------------------------------------

Summary of changes:
gdb/ChangeLog | 7 ++++
gdb/eval.c | 13 ++++---
gdb/testsuite/ChangeLog | 6 +++
gdb/testsuite/gdb.cp/pr17494.cc | 63 ++++++++++++++++++++++++++++++++++++++
gdb/testsuite/gdb.cp/pr17494.exp | 57 ++++++++++++++++++++++++++++++++++
5 files changed, 140 insertions(+), 6 deletions(-)
create mode 100644 gdb/testsuite/gdb.cp/pr17494.cc
create mode 100644 gdb/testsuite/gdb.cp/pr17494.exp
--
You are receiving this mail because:
You are on the CC list for the bug.
simon.marchi at ericsson dot com
2018-08-20 02:55:44 UTC
Permalink
https://sourceware.org/bugzilla/show_bug.cgi?id=17494

Simon Marchi <simon.marchi at ericsson dot com> changed:

What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |simon.marchi at ericsson dot com
Resolution|--- |FIXED

--- Comment #2 from Simon Marchi <simon.marchi at ericsson dot com> ---
This seems fixed by the aforementioned commit.
--
You are receiving this mail because:
You are on the CC list for the bug.
Loading...