middle-end/97579 - fix VEC_COND_EXPR ISEL optab query
authorRichard Biener <rguenther@suse.de>
Tue, 3 Nov 2020 13:53:24 +0000 (14:53 +0100)
committerRichard Biener <rguenther@suse.de>
Tue, 3 Nov 2020 15:23:06 +0000 (16:23 +0100)
This fixes a mistake in the optab query done by ISEL.  It
doesn't fix the PR but shifts the ICE elsewhere.

2020-11-03  Richard Biener  <rguenther@suse.de>

PR middle-end/97579
* gimple-isel.cc (gimple_expand_vec_cond_expr): Use
the correct types for the vcond_mask/vec_cmp optab queries.

gcc/gimple-isel.cc

index b64e31fc6feff9e91a93c3eecbe3cdb7709972a6..9186ff55cdd9a3a6d2884567ee8e6f8c22df15e9 100644 (file)
@@ -162,11 +162,12 @@ gimple_expand_vec_cond_expr (gimple_stmt_iterator *gsi,
          op0a = gimple_assign_rhs1 (def_stmt);
          op0b = gimple_assign_rhs2 (def_stmt);
 
+         tree op0_type = TREE_TYPE (op0);
          tree op0a_type = TREE_TYPE (op0a);
          if (used_vec_cond_exprs >= 2
-             && (get_vcond_mask_icode (mode, TYPE_MODE (op0a_type))
+             && (get_vcond_mask_icode (mode, TYPE_MODE (op0_type))
                  != CODE_FOR_nothing)
-             && expand_vec_cmp_expr_p (op0a_type, TREE_TYPE (lhs), tcode))
+             && expand_vec_cmp_expr_p (op0a_type, op0_type, tcode))
            {
              /* Keep the SSA name and use vcond_mask.  */
              tcode = TREE_CODE (op0);