mirror of git://gcc.gnu.org/git/gcc.git
* match.pd (-1 / B < A): Use :c to avoid pattern duplication.
From-SVN: r237307
This commit is contained in:
parent
7cfa10f33c
commit
603aeb8750
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-06-10 Alexander Monakov <amonakov@ispras.ru>
|
||||||
|
|
||||||
|
* match.pd (-1 / B < A): Use :c to avoid pattern duplication.
|
||||||
|
|
||||||
2016-06-10 Maxim Ostapenko <m.ostapenko@samsung.com>
|
2016-06-10 Maxim Ostapenko <m.ostapenko@samsung.com>
|
||||||
|
|
||||||
PR sanitizer/71480
|
PR sanitizer/71480
|
||||||
|
|
|
||||||
14
gcc/match.pd
14
gcc/match.pd
|
|
@ -2626,22 +2626,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
|
||||||
&& types_match (TREE_TYPE (@0), TREE_TYPE (@1)))
|
&& types_match (TREE_TYPE (@0), TREE_TYPE (@1)))
|
||||||
(out (imagpart @2) { build_zero_cst (TREE_TYPE (@0)); }))))
|
(out (imagpart @2) { build_zero_cst (TREE_TYPE (@0)); }))))
|
||||||
|
|
||||||
/* For unsigned operands, A > -1 / B checks whether A * B would overflow.
|
/* For unsigned operands, -1 / B < A checks whether A * B would overflow.
|
||||||
Simplify it to __builtin_mul_overflow (A, B, <unused>). */
|
Simplify it to __builtin_mul_overflow (A, B, <unused>). */
|
||||||
/* -1 / B < A */
|
|
||||||
(for cmp (lt ge)
|
(for cmp (lt ge)
|
||||||
out (ne eq)
|
out (ne eq)
|
||||||
(simplify
|
(simplify
|
||||||
(cmp (trunc_div:s integer_all_onesp @1) @0)
|
(cmp:c (trunc_div:s integer_all_onesp @1) @0)
|
||||||
(if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0)))
|
|
||||||
(with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); }
|
|
||||||
(out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); })))))
|
|
||||||
|
|
||||||
/* A > -1 / B */
|
|
||||||
(for cmp (gt le)
|
|
||||||
out (ne eq)
|
|
||||||
(simplify
|
|
||||||
(cmp @0 (trunc_div:s integer_all_onesp @1))
|
|
||||||
(if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0)))
|
(if (TYPE_UNSIGNED (TREE_TYPE (@0)) && !VECTOR_TYPE_P (TREE_TYPE (@0)))
|
||||||
(with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); }
|
(with { tree t = TREE_TYPE (@0), cpx = build_complex_type (t); }
|
||||||
(out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); })))))
|
(out (imagpart (IFN_MUL_OVERFLOW:cpx @0 @1)) { build_zero_cst (t); })))))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue