ggc.h (GGC_RESIZEVAR): New, reorder macros.
[gcc.git] / gcc / tree-cfg.c
index 4eab1fd449ef7603ef1f5ff9a9d99b67ec415bd8..50f53a080e83ffa4846c3ca1bc1268c22646c3d1 100644 (file)
@@ -523,6 +523,7 @@ make_edges (void)
              break;
 
            case OMP_PARALLEL:
+           case OMP_TASK:
            case OMP_FOR:
            case OMP_SINGLE:
            case OMP_MASTER:
@@ -1936,16 +1937,17 @@ remove_useless_stmts_1 (tree *tp, struct rus_data *data)
       break;
 
     case OMP_PARALLEL:
+    case OMP_TASK:
       /* Make sure the outermost BIND_EXPR in OMP_BODY isn't removed
         as useless.  */
-      remove_useless_stmts_1 (&BIND_EXPR_BODY (OMP_BODY (*tp)), data);
+      remove_useless_stmts_1 (&BIND_EXPR_BODY (OMP_TASKREG_BODY (*tp)), data);
       data->last_goto = NULL;
       break;
 
     case OMP_SECTIONS:
     case OMP_SINGLE:
     case OMP_SECTION:
-    case OMP_MASTER :
+    case OMP_MASTER:
     case OMP_ORDERED:
     case OMP_CRITICAL:
       remove_useless_stmts_1 (&OMP_BODY (*tp), data);
@@ -3658,7 +3660,10 @@ verify_gimple_expr (tree expr)
           there is no sign or zero extension involved.  */
        if (((POINTER_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (op)))
             || (POINTER_TYPE_P (TREE_TYPE (op)) && INTEGRAL_TYPE_P (type)))
-           && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (op)))
+           && (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (op))
+               /* For targets were the precision of sizetype doesn't
+                  match that of pointers we need the following.  */
+               || type == sizetype || TREE_TYPE (op) == sizetype))
          return false;
 
        /* Allow conversion from integer to offset type and vice versa.  */
@@ -5617,7 +5622,7 @@ replace_by_duplicate_decl (tree *tp, struct pointer_map_t *vars_map,
       *loc = new_t;
     }
   else
-    new_t = *loc;
+    new_t = (tree) *loc;
 
   *tp = new_t;
 }
@@ -5653,7 +5658,7 @@ replace_ssa_name (tree name, struct pointer_map_t *vars_map,
       *loc = new_name;
     }
   else
-    new_name = *loc;
+    new_name = (tree) *loc;
 
   return new_name;
 }
@@ -5708,7 +5713,8 @@ move_stmt_r (tree *tp, int *walk_subtrees, void *data)
            {
              struct tree_map in, *out;
              in.base.from = t;
-             out = htab_find_with_hash (p->new_label_map, &in, DECL_UID (t));
+             out = (struct tree_map *)
+               htab_find_with_hash (p->new_label_map, &in, DECL_UID (t));
              if (out)
                *tp = t = out->to;
            }
@@ -5967,7 +5973,7 @@ new_label_mapper (tree decl, void *data)
 
   gcc_assert (TREE_CODE (decl) == LABEL_DECL);
 
-  m = xmalloc (sizeof (struct tree_map));
+  m = XNEW (struct tree_map);
   m->hash = DECL_UID (decl);
   m->base.from = decl;
   m->to = create_artificial_label ();