]> gcc.gnu.org Git - gcc.git/commitdiff
re PR tree-optimization/18663 (ACATS ICE cc1221d expected integer_cst, have nop_expr...
authorEric Botcazou <ebotcazou@libertysurf.fr>
Mon, 21 Feb 2005 07:27:14 +0000 (08:27 +0100)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 21 Feb 2005 07:27:14 +0000 (07:27 +0000)
PR tree-optimization/18663
* tree-ssa-dom.c (extract_range_from_cond): Return 0
if the type has variable bounds.

From-SVN: r95320

gcc/ChangeLog
gcc/tree-ssa-dom.c

index 881f157122f918df8069fa462ba2b2e5132216fe..f807935067fdce5503213a4625caadd30891c544 100644 (file)
@@ -1,3 +1,9 @@
+2005-02-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR tree-optimization/18663
+       * tree-ssa-dom.c (extract_range_from_cond): Return 0
+       if the type has variable bounds.
+
 2005-02-20  Kazu Hirata  <kazu@cs.umass.edu>
 
        * gcse.c: Remove an obsolete comment.
index 0d34ea22fcfead479beb239361aff727eb0be413..88c7f92fd4bbdc166552a304f9bb143730374d7a 100644 (file)
@@ -3189,16 +3189,19 @@ extract_range_from_cond (tree cond, tree *hi_p, tree *lo_p, int *inverted_p)
   tree op1 = TREE_OPERAND (cond, 1);
   tree high, low, type;
   int inverted;
-  
+
+  type = TREE_TYPE (op1);
+
   /* Experiments have shown that it's rarely, if ever useful to
      record ranges for enumerations.  Presumably this is due to
      the fact that they're rarely used directly.  They are typically
      cast into an integer type and used that way.  */
-  if (TREE_CODE (TREE_TYPE (op1)) != INTEGER_TYPE)
+  if (TREE_CODE (type) != INTEGER_TYPE
+      /* We don't know how to deal with types with variable bounds.  */
+      || TREE_CODE (TYPE_MIN_VALUE (type)) != INTEGER_CST
+      || TREE_CODE (TYPE_MAX_VALUE (type)) != INTEGER_CST)
     return 0;
 
-  type = TREE_TYPE (op1);
-
   switch (TREE_CODE (cond))
     {
     case EQ_EXPR:
This page took 0.071498 seconds and 5 git commands to generate.