From 39f7ea2368560f87a4b5f6a635f23814e58d8444 Mon Sep 17 00:00:00 2001
From: Richard Biener <rguenther@suse.de>
Date: Thu, 18 Oct 2018 08:51:32 +0000
Subject: re PR tree-optimization/87087 (Optimization hangs up and consumes
 over 15Gb of memory)

2018-10-18  Richard Biener  <rguenther@suse.de>

	PR middle-end/87087
	Revert
	2018-02-07  Richard Biener  <rguenther@suse.de>

        PR tree-optimization/84204
        * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
        this place.

	* gcc.dg/torture/pr87087.c: New testcase.
	* gcc.dg/graphite/pr84204.c: XFAIL.
	* gcc.dg/graphite/pr85935.c: Likewise.

From-SVN: r265262
---
 gcc/tree-chrec.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

(limited to 'gcc/tree-chrec.c')

diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index 04d33ef..896ff35 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -375,10 +375,12 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
 
 	default:
 	  {
-	    if (tree_contains_chrecs (op0, NULL)
-		|| tree_contains_chrecs (op1, NULL))
+	    int size = 0;
+	    if ((tree_contains_chrecs (op0, &size)
+		 || tree_contains_chrecs (op1, &size))
+		&& size < PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
 	      return build2 (code, type, op0, op1);
-	    else
+	    else if (size < PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
 	      {
 		if (code == POINTER_PLUS_EXPR)
 		  return fold_build_pointer_plus (fold_convert (type, op0),
@@ -388,6 +390,8 @@ chrec_fold_plus_1 (enum tree_code code, tree type,
 				      fold_convert (type, op0),
 				      fold_convert (type, op1));
 	      }
+	    else
+	      return chrec_dont_know;
 	  }
 	}
     }
-- 
cgit v1.1