http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28501
Paolo Carlini <paolo.carlini at oracle dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|mark at codesourcery dot |jason at gcc dot gnu.org,
|com, mmitchel at gcc dot |paolo.carlini at oracle dot
|gnu.org |com
Known to fail| |
--- Comment #7 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-05-03
15:48:01 UTC ---
Hi Jason. A small issue which I fixed a few days ago reminded me this one,
pretty old, on which I worked a bit two years ago, then left alone...
At the time I figured out the below patchlet, which still avoids the ICE,
passes the testsuite, and apparently provides a sensible semantics (eg, if the
operator returns 1, i is initialized to 1; if the testcase is tweaked to use
__imag__, i is initialized to 0).
What do you think? Or shall we just reject the snippet?
Index: call.c
===================================================================
--- call.c (revision 173309)
+++ call.c (working copy)
@@ -2586,6 +2586,12 @@ add_builtin_candidate (struct z_candidate **candid
types are TYPE2. */
break;
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
+ if (ARITHMETIC_TYPE_P (type1))
+ break;
+ return;
+
default:
gcc_unreachable ();
}