From b46ebc6c45d7a74ec18a0644f8b4e3c66ea84fb8 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 20 Apr 2018 10:31:23 +0000 Subject: re PR tree-optimization/85475 (Compile time hog w/ -O1 -fpeel-loops) 2018-04-20 Richard Biener PR middle-end/85475 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential complexity by forcing a single use of the multiply operand. * gcc.dg/torture/pr85475.c: New testcase. From-SVN: r259519 --- gcc/match.pd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/match.pd') diff --git a/gcc/match.pd b/gcc/match.pd index 442aad1..0de4432 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -2578,8 +2578,9 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) /* Reassociate (X * CST) * Y to (X * Y) * CST. This does not introduce signed overflow for CST != 0 && CST != -1. */ (simplify - (mult:c (mult:s @0 INTEGER_CST@1) @2) + (mult:c (mult:s@3 @0 INTEGER_CST@1) @2) (if (TREE_CODE (@2) != INTEGER_CST + && single_use (@3) && !integer_zerop (@1) && !integer_minus_onep (@1)) (mult (mult @0 @2) @1))) -- cgit v1.1