+2018-05-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/85863
+ * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
+ comparisons when vectype is specified.
+ (vectorizable_condition): Do not specify vectype for
+ vect_is_simple_cond when SLP vectorizing.
+
2018-05-21 Michael Meissner <meissner@linux.ibm.com>
PR target/85657
+2018-05-22 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/85863
+ * gfortran.fortran-torture/compile/pr85863.f: New testcase.
+
2018-05-22 Janus Weil <janus@gcc.gnu.org>
PR fortran/85841
--- /dev/null
+! { dg-do compile }
+! { dg-additional-options "-ffast-math -ftree-vectorize" }
+ SUBROUTINE SOBOOK(MHSO,HSOMAX,MS)
+ IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ COMPLEX*16 HSOT,HSO1(2)
+ PARAMETER (ZERO=0.0D+00,TWO=2.0D+00)
+ DIMENSION SOL1(3,2),SOL2(3)
+ CALL FOO(SOL1,SOL2)
+ SQRT2=SQRT(TWO)
+ DO IH=1,MHSO
+ IF(MS.EQ.0) THEN
+ HSO1(IH) = DCMPLX(ZERO,-SOL1(3,IH))
+ HSOT = DCMPLX(ZERO,-SOL2(3))
+ ELSE
+ HSO1(IH) = DCMPLX(-SOL1(2,IH),SOL1(1,IH))/SQRT2
+ HSOT = DCMPLX(-SOL2(2),SOL2(1))/SQRT2
+ ENDIF
+ ENDDO
+ HSOT=HSOT+HSO1(1)
+ HSOMAX=MAX(HSOMAX,ABS(HSOT))
+ RETURN
+ END
*comp_vectype = vectype1 ? vectype1 : vectype2;
/* Invariant comparison. */
- if (! *comp_vectype)
+ if (! *comp_vectype && vectype)
{
tree scalar_type = TREE_TYPE (lhs);
/* If we can widen the comparison to match vectype do so. */
else_clause = gimple_assign_rhs3 (stmt);
if (!vect_is_simple_cond (cond_expr, stmt_info->vinfo,
- &comp_vectype, &dts[0], vectype)
+ &comp_vectype, &dts[0], slp_node ? NULL : vectype)
|| !comp_vectype)
return false;