------- 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