------- Comment #10 from irar at il dot ibm dot com  2010-05-02 12:12 -------
Looks like it's caused by:
r158157 | rguenth | 2010-04-09 13:40:14 +0300 (Fri, 09 Apr 2010) | 28 lines

The problem is in getting vectype for f1_2:

foo (int b, double f1, double f2, int c1, int c2)
{
...
  float D.1999;
  float D.1998;
...

<bb 3>:
  D.1998_3 = (float) f1_2(D);
  REALPART_EXPR <u.cf> = D.1998_3;
  D.1999_5 = (float) f2_4(D);
  IMAGPART_EXPR <u.cf> = D.1999_5;
  D.2012_10 = u.ci;
  goto <bb 5>;

An immediate fix would be to replace the assert in 

  /* If op0 is an external or constant def use a vector type with
     the same size as the output vector type.  */
  if (!vectype)
    vectype = get_same_sized_vectype (TREE_TYPE (op0), vectype_out);
  gcc_assert (vectype);

with 'return false', since get_same_sized_vectype currently just redirects to
get_vectype_for_scalar_type. But the comment (and the future intent) seems
incorrect for external defs, as f1 and f2 in this test.

Ira


-- 

irar at il dot ibm dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenther at suse dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43901

Reply via email to