+2018-07-12 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/86479
+ * fold-const.c (fold_binary_op_with_conditional_arg): Do not
+ move possibly trapping operations into the conditional.
+
2018-07-12 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (mprts_hook_cnt): Remove.
tree rhs = NULL_TREE;
enum tree_code cond_code = COND_EXPR;
+ /* Do not move possibly trapping operations into the conditional as this
+ pessimizes code and causes gimplification issues when applied late. */
+ if (operation_could_trap_p (code, FLOAT_TYPE_P (type),
+ ANY_INTEGRAL_TYPE_P (type)
+ && TYPE_OVERFLOW_TRAPS (type), op1))
+ return NULL_TREE;
+
if (TREE_CODE (cond) == COND_EXPR
|| TREE_CODE (cond) == VEC_COND_EXPR)
{
+2018-07-12 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/86479
+ * gcc.dg/graphite/pr86479.c: New testcase.
+
2018-07-11 Jakub Jelinek <jakub@redhat.com>
* gcc.target/i386/avx512bw-vpcmpb-2.c (CMP): Use SIZE macro instead
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-nest-optimize -fnon-call-exceptions -fno-guess-branch-probability -fno-tree-loop-im" } */
+
+__INTPTR_TYPE__ uf;
+
+void
+m7 (__INTPTR_TYPE__ *aw, __INTPTR_TYPE__ ws)
+{
+ __INTPTR_TYPE__ *e5 = &ws;
+
+ if (ws < 1)
+ {
+ int cq = 0;
+
+ while (cq < 1)
+ {
+ int *ng;
+ int *ud;
+
+ *e5 *= uf < 0;
+
+ for (*ng = 0; *ng < 2; ++*ng)
+ {
+ }
+
+ ws /= cq;
+ *aw *= ws;
+
+ for (*ud = 0; *ud < 2; ++*ud)
+ {
+ }
+ }
+ }
+
+ if (ws < 2)
+ e5 = &uf;
+
+ *e5 = 0;
+}