https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99668
Roger Sayle <roger at nextmovesoftware dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |roger at nextmovesoftware dot
com
--- Comment #2 from Roger Sayle <roger at nextmovesoftware dot com> ---
Conceptually, we'd like this VIEW_CONVERT_EXPR to be converted to the
equivalent:
v2df bar(_Complex double x)
{
return (v2df){ __real__ x, __imag__ x };
}
which compiles to:
bar:unpcklpd xmm0, xmm1
ret
I'm investigating doing this in the middle-end's expr.cc at RTL expansion time,
using vec_init_optab to eventually call gen_vec_initv2dfdf, but thought I'd
mention the above form in case the tree-ssa folks would prefer this to be
caught earlier (perhaps in match.pd) so that SSA sees:
v2df bar (complex double x)
{
double _1;
double _2;
v2df _4;
<bb 2> [local count: 1073741824]:
# DEBUG BEGIN_STMT
_1 = REALPART_EXPR <x_3(D)>;
_2 = IMAGPART_EXPR <x_3(D)>;
_4 = {_1, _2};
return _4;
}