re PR rtl-optimization/79901 (ICE in prepare_cmp_insn, at optabs.c:3904)
PR rtl-optimization/79901 * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no min/max expander, expand it using expand_vec_cond_expr. From-SVN: r245946
This commit is contained in:
parent
1f6dba54da
commit
cd5c0aeeae
|
@ -1,5 +1,9 @@
|
|||
2017-03-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/79901
|
||||
* expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
|
||||
min/max expander, expand it using expand_vec_cond_expr.
|
||||
|
||||
PR sanitizer/79897
|
||||
* ubsan.c (ubsan_encode_value): Call mark_addressable on the
|
||||
temporary.
|
||||
|
|
12
gcc/expr.c
12
gcc/expr.c
|
@ -8943,6 +8943,18 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode,
|
|||
if (temp != 0)
|
||||
return temp;
|
||||
|
||||
/* For vector MIN <x, y>, expand it a VEC_COND_EXPR <x <= y, x, y>
|
||||
and similarly for MAX <x, y>. */
|
||||
if (VECTOR_TYPE_P (type))
|
||||
{
|
||||
tree t0 = make_tree (type, op0);
|
||||
tree t1 = make_tree (type, op1);
|
||||
tree comparison = build2 (code == MIN_EXPR ? LE_EXPR : GE_EXPR,
|
||||
type, t0, t1);
|
||||
return expand_vec_cond_expr (type, comparison, t0, t1,
|
||||
original_target);
|
||||
}
|
||||
|
||||
/* At this point, a MEM target is no longer useful; we will get better
|
||||
code without it. */
|
||||
|
||||
|
|
Loading…
Reference in New Issue