re PR lto/42665 (Internal compiler exception in with gfortran when using -fwhole...
authorRichard Guenther <rguenther@suse.de>
Thu, 14 Jan 2010 09:38:56 +0000 (09:38 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 14 Jan 2010 09:38:56 +0000 (09:38 +0000)
2010-01-14  Richard Guenther  <rguenther@suse.de>

PR lto/42665
* gimple.c (iterative_hash_gimple_type): Avoid hashing
error_mark_node.

From-SVN: r155885

gcc/ChangeLog
gcc/gimple.c

index 1865878..88f7830 100644 (file)
@@ -1,3 +1,9 @@
+2010-01-14  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/42665
+       * gimple.c (iterative_hash_gimple_type): Avoid hashing
+       error_mark_node.
+
 2010-01-14  Ira Rosen  <irar@il.ibm.com>
 
        PR tree-optimization/42709
index 3ee15b5..dce5ba5 100644 (file)
@@ -3707,8 +3707,12 @@ iterative_hash_gimple_type (tree type, hashval_t val,
   /* For integer types hash the types min/max values and the string flag.  */
   if (TREE_CODE (type) == INTEGER_TYPE)
     {
-      v = iterative_hash_expr (TYPE_MIN_VALUE (type), v);
-      v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
+      /* OMP lowering can introduce error_mark_node in place of
+        random local decls in types.  */
+      if (TYPE_MIN_VALUE (type) != error_mark_node)
+       v = iterative_hash_expr (TYPE_MIN_VALUE (type), v);
+      if (TYPE_MAX_VALUE (type) != error_mark_node)
+       v = iterative_hash_expr (TYPE_MAX_VALUE (type), v);
       v = iterative_hash_hashval_t (TYPE_STRING_FLAG (type), v);
     }