aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-05-03 18:30:37 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-05-03 18:30:37 +0000
commit6add7e946e2254cbc23517a5b6ace896515efd45 (patch)
tree5b54fd75fd28c348f895e73ff35746d06e0027f9
parentbb3398ca65dc96386528d6f0b4e80613392bbff6 (diff)
downloadgcc-6add7e946e2254cbc23517a5b6ace896515efd45.zip
gcc-6add7e946e2254cbc23517a5b6ace896515efd45.tar.gz
gcc-6add7e946e2254cbc23517a5b6ace896515efd45.tar.bz2
re PR c++/28501 (ICE with __real__ and implicit type conversion)
/cp 2011-05-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/28501 * call.c (add_builtin_candidate): Handle REALPART_EXPR and IMAGPART_EXPR. /testsuite 2011-05-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/28501 * g++.dg/ext/complex9.C: New. From-SVN: r173337
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/call.c9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ext/complex9.C8
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e44ff10..dccd765 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/28501
+ * call.c (add_builtin_candidate): Handle REALPART_EXPR and
+ IMAGPART_EXPR.
+
2011-05-02 Lawrence Crowl <crowl@google.com>
* decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 4dbcce9..f5bd521 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -1,6 +1,7 @@
/* Functions related to invoking methods and overloaded functions.
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010, 2011
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) and
modified by Brendan Kehoe (brendan@cygnus.com).
@@ -2586,6 +2587,12 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
types are TYPE2. */
break;
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
+ if (ARITHMETIC_TYPE_P (type1))
+ break;
+ return;
+
default:
gcc_unreachable ();
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a796f4f..332b209 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/28501
+ * g++.dg/ext/complex9.C: New.
+
2011-05-03 Stuart Henderson <shenders@gcc.gnu.org>
From Mike Frysinger
diff --git a/gcc/testsuite/g++.dg/ext/complex9.C b/gcc/testsuite/g++.dg/ext/complex9.C
new file mode 100644
index 0000000..5bb1625
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complex9.C
@@ -0,0 +1,8 @@
+// PR c++/28501
+
+struct A
+{
+ operator int();
+};
+
+int i = __real__ A();