This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gimple-classes, committed 01/44] Use gassign * rather than gimple in various places


Use gassign * everywhere that a stmt is built from a
gimple_build_assign_* call, to ease making the gimple_assign_
accessors typesafe (and to better document the code).

gcc/ChangeLog.gimple-classes:
	* asan.c (build_shadow_mem_access): Strengthen local "g" from
	gimple to gassign *.
	(maybe_create_ssa_name): Likewise.
	(maybe_cast_to_ptrmode): Likewise.
	(instrument_mem_region_access): Likewise.
	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise
	for local "set_stmt".
	* cgraphunit.c (cgraph_node::expand_thunk): Likewise for locals
	"stmt".
	* gimple-fold.c (gimplify_and_update_call_from_tree): Likewise for
	local "new_stmt".
	(gimple_fold_builtin_memory_op): Likewise for both "new_stmt" and
	for locals "repl".
	(gimple_fold_builtin_memset): Likewise for "store".
	(gimple_fold_builtin_memset): Likewise for "asgn".
	* gimple-match-head.c (maybe_push_res_to_seq): Likewise for
	"new_stmt".
	* gimplify.c (gimplify_bind_expr): Likewise for "clobber_stmt".
	* graphite-sese-to-poly.c (rewrite_cross_bb_scalar_dependence):
	Likewise for "name_stmt".
	* ipa-prop.c (ipa_modify_call_arguments): Likewise. for "tem".
	* ipa-split.c (split_function): Likewise for "cpy".
	* predict.c (pass_strip_predict_hints::execute): Likewise for
	"ass_stmt".
	* trans-mem.c (tm_log_emit_saves): Likewise for "stmt".
	(tm_log_emit_restores): Likewise.
	(build_tm_load): Likewise for "g".
	(build_tm_store): Likewise.
	* tree-call-cdce.c (gen_conditions_for_pow_int_base): Likewise for
	"stmt1".  Strengthen local "stmt2" from gimple to gcond *.
	* tree-cfg.c (make_blocks): Strengthen local "s" from gimple to
	gassign *.
	(handle_abnormal_edges): Likewise for "assignment".
	* tree-emutls.c (lower_emutls_1): Likewise for "x".
	* tree-if-conv.c (ifc_temp_var): Likewise for "stmt".
	(convert_scalar_cond_reduction): Likewise for "new_assign".
	(predicate_scalar_phi): Likewise for "new_stmt".
	* tree-inline.c (remap_ssa_name): Likewise for "init_stmt".
	(copy_bb): Likewise for "new_stmt".
	(setup_one_parameter): Likewise for "init_stmt".
	* tree-loop-distribution.c (generate_memset_builtin): Likewise for
	"cstmt".
	* tree-nested.c (init_tmp_var): Likewise for "stmt".
	(save_tmp_var): Likewise.
	* tree-parloops.c (create_loads_for_reductions): Likewise.
	(create_final_loads_for_reduction): Likewise.
	(create_stores_for_reduction): Likewise.
	(create_loads_and_stores_for_name): Likewise.
	* tree-ssa-dse.c (dse_optimize_stmt): Likewise for "new_stmt".
	* tree-ssa-forwprop.c (associate_pointerplus): Likewise for
	"ostmt".
	* tree-ssa-loop-im.c (sm_set_flag_if_changed::operator): Likewise
	for "stmt".
	* tree-ssa-math-opts.c (execute_cse_sincos_1): Eliminate local
	"stmt", splitting its users into new local gcall * "call_stmt"
	and gassign * "assign_stmt".
	(build_and_insert_ref): Strengthen local "stmt" from gimple to
	gassign *.
	(bswap_replace): Likewise for "load_stmt", "addr_stmt",
	"convert_stmt".
	* tree-ssa-phiopt.c (neg_replacement): Likewise for "new_stmt".
	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
	Likewise for "stmt".
	* tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Likewise
	for "g".
	* tree-ssa-strlen.c (get_string_length): ELiminate local
	"lenstmt", splitting its users into new local gcall * "call_stmt"
	and gassign * "assign_stmt".
	(handle_builtin_memset): Strengthen local "assign" from gimple to
	gassign *.
	* tree-switch-conversion.c (build_one_array): Likewise for "load".
	(build_arrays): Likewise for "stmt".
	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise for
	"vec_stmt".
	(vect_permute_store_chain): Likewise for "perm_stmt".
	(vect_permute_load_chain): Likewise.
	(vect_shift_permute_load_chain): Likewise.
	* tree-vect-generic.c (expand_vector_divmod): Likewise for "stmt".
	(vector_element): Likewise for "asgn".
	* tree-vect-loop-manip.c (vect_create_cond_for_align_checks):
	Likewise for "and_stmt".
	(vect_create_cond_for_align_checks): Likewise for "addr_stmt" and
	"or_stmt".
	* tree-vect-loop.c (vect_is_simple_reduction_1): Likewise for
	"negate_stmt".
	(get_initial_def_for_induction): Likewise for "init_stmt" and
	"new_stmt".
	(vectorizable_reduction): Likewise for "new_stmt".
	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise for
	"pattern_stmt".
	(vect_recog_sad_pattern): Likewise.
	(vect_recog_widen_mult_pattern): Likewise for "new_stmt",
	"pattern_stmt".
	(vect_recog_widen_sum_pattern): Likewise for "pattern_stmt".
	(vect_recog_over_widening_pattern): Likewise.
	(vect_recog_widen_shift_pattern): Likewise.
	* tree-vect-slp.c (vect_get_constant_vectors): Likewise for
	"init_stmt".
	(vect_create_mask_and_perm): Likewise for "perm_stmt".
	(vect_schedule_slp_instance): Likewise for "new_stmt".
	* tree-vect-stmts.c (read_vector_array): Likewise.
	(write_vector_array): Likewise.
	(vect_init_vector): Likewise for "init_stmt".
	(vectorizable_call): Likewise.
	* tree-vrp.c (simplify_internal_call_using_ranges): Likewise for
	"g".
	* tsan.c (instrument_expr): Split local gimple "g" into more
	tightly-scoped locals, two of type gassign *, one of gcall *.
---
 gcc/ChangeLog.gimple-classes | 111 +++++++++++++++++++++++++++++++++++++++++++
 gcc/asan.c                   |   8 ++--
 gcc/cgraph.c                 |   2 +-
 gcc/cgraphunit.c             |   4 +-
 gcc/gimple-fold.c            |  13 ++---
 gcc/gimple-match-head.c      |   4 +-
 gcc/gimplify.c               |   2 +-
 gcc/graphite-sese-to-poly.c  |   2 +-
 gcc/ipa-prop.c               |   2 +-
 gcc/ipa-split.c              |   2 +-
 gcc/predict.c                |   2 +-
 gcc/trans-mem.c              |   8 ++--
 gcc/tree-call-cdce.c         |   3 +-
 gcc/tree-cfg.c               |   4 +-
 gcc/tree-emutls.c            |   2 +-
 gcc/tree-if-conv.c           |   6 +--
 gcc/tree-inline.c            |   6 +--
 gcc/tree-loop-distribution.c |   2 +-
 gcc/tree-nested.c            |   4 +-
 gcc/tree-parloops.c          |   8 ++--
 gcc/tree-ssa-dse.c           |   2 +-
 gcc/tree-ssa-forwprop.c      |   2 +-
 gcc/tree-ssa-loop-im.c       |   2 +-
 gcc/tree-ssa-math-opts.c     |  31 ++++++------
 gcc/tree-ssa-phiopt.c        |   3 +-
 gcc/tree-ssa-pre.c           |   2 +-
 gcc/tree-ssa-reassoc.c       |   2 +-
 gcc/tree-ssa-strlen.c        |  22 +++++----
 gcc/tree-switch-conversion.c |   4 +-
 gcc/tree-vect-data-refs.c    |   8 ++--
 gcc/tree-vect-generic.c      |   4 +-
 gcc/tree-vect-loop-manip.c   |   4 +-
 gcc/tree-vect-loop.c         |   8 ++--
 gcc/tree-vect-patterns.c     |  15 +++---
 gcc/tree-vect-slp.c          |   7 +--
 gcc/tree-vect-stmts.c        |   8 ++--
 gcc/tree-vrp.c               |   4 +-
 gcc/tsan.c                   |  10 ++--
 38 files changed, 228 insertions(+), 105 deletions(-)

diff --git a/gcc/ChangeLog.gimple-classes b/gcc/ChangeLog.gimple-classes
index 7d9dfb3..9998737 100644
--- a/gcc/ChangeLog.gimple-classes
+++ b/gcc/ChangeLog.gimple-classes
@@ -1,3 +1,114 @@
+2014-10-30  David Malcolm  <dmalcolm@redhat.com>
+
+	* asan.c (build_shadow_mem_access): Strengthen local "g" from
+	gimple to gassign *.
+	(maybe_create_ssa_name): Likewise.
+	(maybe_cast_to_ptrmode): Likewise.
+	(instrument_mem_region_access): Likewise.
+	* cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise
+	for local "set_stmt".
+	* cgraphunit.c (cgraph_node::expand_thunk): Likewise for locals
+	"stmt".
+	* gimple-fold.c (gimplify_and_update_call_from_tree): Likewise for
+	local "new_stmt".
+	(gimple_fold_builtin_memory_op): Likewise for both "new_stmt" and
+	for locals "repl".
+	(gimple_fold_builtin_memset): Likewise for "store".
+	(gimple_fold_builtin_memset): Likewise for "asgn".
+	* gimple-match-head.c (maybe_push_res_to_seq): Likewise for
+	"new_stmt".
+	* gimplify.c (gimplify_bind_expr): Likewise for "clobber_stmt".
+	* graphite-sese-to-poly.c (rewrite_cross_bb_scalar_dependence):
+	Likewise for "name_stmt".
+	* ipa-prop.c (ipa_modify_call_arguments): Likewise. for "tem".
+	* ipa-split.c (split_function): Likewise for "cpy".
+	* predict.c (pass_strip_predict_hints::execute): Likewise for
+	"ass_stmt".
+	* trans-mem.c (tm_log_emit_saves): Likewise for "stmt".
+	(tm_log_emit_restores): Likewise.
+	(build_tm_load): Likewise for "g".
+	(build_tm_store): Likewise.
+	* tree-call-cdce.c (gen_conditions_for_pow_int_base): Likewise for
+	"stmt1".  Strengthen local "stmt2" from gimple to gcond *.
+	* tree-cfg.c (make_blocks): Strengthen local "s" from gimple to
+	gassign *.
+	(handle_abnormal_edges): Likewise for "assignment".
+	* tree-emutls.c (lower_emutls_1): Likewise for "x".
+	* tree-if-conv.c (ifc_temp_var): Likewise for "stmt".
+	(convert_scalar_cond_reduction): Likewise for "new_assign".
+	(predicate_scalar_phi): Likewise for "new_stmt".
+	* tree-inline.c (remap_ssa_name): Likewise for "init_stmt".
+	(copy_bb): Likewise for "new_stmt".
+	(setup_one_parameter): Likewise for "init_stmt".
+	* tree-loop-distribution.c (generate_memset_builtin): Likewise for
+	"cstmt".
+	* tree-nested.c (init_tmp_var): Likewise for "stmt".
+	(save_tmp_var): Likewise.
+	* tree-parloops.c (create_loads_for_reductions): Likewise.
+	(create_final_loads_for_reduction): Likewise.
+	(create_stores_for_reduction): Likewise.
+	(create_loads_and_stores_for_name): Likewise.
+	* tree-ssa-dse.c (dse_optimize_stmt): Likewise for "new_stmt".
+	* tree-ssa-forwprop.c (associate_pointerplus): Likewise for
+	"ostmt".
+	* tree-ssa-loop-im.c (sm_set_flag_if_changed::operator): Likewise
+	for "stmt".
+	* tree-ssa-math-opts.c (execute_cse_sincos_1): Eliminate local
+	"stmt", splitting its users into new local gcall * "call_stmt"
+	and gassign * "assign_stmt".
+	(build_and_insert_ref): Strengthen local "stmt" from gimple to
+	gassign *.
+	(bswap_replace): Likewise for "load_stmt", "addr_stmt",
+	"convert_stmt".
+	* tree-ssa-phiopt.c (neg_replacement): Likewise for "new_stmt".
+	* tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
+	Likewise for "stmt".
+	* tree-ssa-reassoc.c (optimize_range_tests_to_bit_test): Likewise
+	for "g".
+	* tree-ssa-strlen.c (get_string_length): ELiminate local
+	"lenstmt", splitting its users into new local gcall * "call_stmt"
+	and gassign * "assign_stmt".
+	(handle_builtin_memset): Strengthen local "assign" from gimple to
+	gassign *.
+	* tree-switch-conversion.c (build_one_array): Likewise for "load".
+	(build_arrays): Likewise for "stmt".
+	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise for
+	"vec_stmt".
+	(vect_permute_store_chain): Likewise for "perm_stmt".
+	(vect_permute_load_chain): Likewise.
+	(vect_shift_permute_load_chain): Likewise.
+	* tree-vect-generic.c (expand_vector_divmod): Likewise for "stmt".
+	(vector_element): Likewise for "asgn".
+	* tree-vect-loop-manip.c (vect_create_cond_for_align_checks):
+	Likewise for "and_stmt".
+	(vect_create_cond_for_align_checks): Likewise for "addr_stmt" and
+	"or_stmt".
+	* tree-vect-loop.c (vect_is_simple_reduction_1): Likewise for
+	"negate_stmt".
+	(get_initial_def_for_induction): Likewise for "init_stmt" and
+	"new_stmt".
+	(vectorizable_reduction): Likewise for "new_stmt".
+	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise for
+	"pattern_stmt".
+	(vect_recog_sad_pattern): Likewise.
+	(vect_recog_widen_mult_pattern): Likewise for "new_stmt",
+	"pattern_stmt".
+	(vect_recog_widen_sum_pattern): Likewise for "pattern_stmt".
+	(vect_recog_over_widening_pattern): Likewise.
+	(vect_recog_widen_shift_pattern): Likewise.
+	* tree-vect-slp.c (vect_get_constant_vectors): Likewise for
+	"init_stmt".
+	(vect_create_mask_and_perm): Likewise for "perm_stmt".
+	(vect_schedule_slp_instance): Likewise for "new_stmt".
+	* tree-vect-stmts.c (read_vector_array): Likewise.
+	(write_vector_array): Likewise.
+	(vect_init_vector): Likewise for "init_stmt".
+	(vectorizable_call): Likewise.
+	* tree-vrp.c (simplify_internal_call_using_ranges): Likewise for
+	"g".
+	* tsan.c (instrument_expr): Split local gimple "g" into more
+	tightly-scoped locals, two of type gassign *, one of gcall *.
+
 2014-10-29  David Malcolm  <dmalcolm@redhat.com>
 
 	* coretypes.h (struct gpredict): Add forward declaration.
diff --git a/gcc/asan.c b/gcc/asan.c
index 9a310b4..68b4676 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -1523,7 +1523,7 @@ build_shadow_mem_access (gimple_stmt_iterator *gsi, location_t location,
 {
   tree t, uintptr_type = TREE_TYPE (base_addr);
   tree shadow_type = TREE_TYPE (shadow_ptr_type);
-  gimple g;
+  gassign *g;
 
   t = build_int_cst (uintptr_type, ASAN_SHADOW_SHIFT);
   g = gimple_build_assign_with_ops (RSHIFT_EXPR,
@@ -1564,7 +1564,7 @@ maybe_create_ssa_name (location_t loc, tree base, gimple_stmt_iterator *iter,
 {
   if (TREE_CODE (base) == SSA_NAME)
     return base;
-  gimple g
+  gassign *g
     = gimple_build_assign_with_ops (TREE_CODE (base),
 				    make_ssa_name (TREE_TYPE (base), NULL),
 				    base, NULL_TREE);
@@ -1585,7 +1585,7 @@ maybe_cast_to_ptrmode (location_t loc, tree len, gimple_stmt_iterator *iter,
 {
   if (ptrofftype_p (len))
     return len;
-  gimple g
+  gassign *g
     = gimple_build_assign_with_ops (NOP_EXPR,
 				    make_ssa_name (pointer_sized_int_node, NULL),
 				    len, NULL);
@@ -1854,7 +1854,7 @@ instrument_mem_region_access (tree base, tree len,
 static bool
 instrument_strlen_call (gimple_stmt_iterator *iter)
 {
-  gimple g;
+  gassign *g;
   gcall *call = as_a <gcall *> (gsi_stmt (*iter));
   gcc_assert (is_gimple_call (call));
 
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index e480f73..e123c2c 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -1410,7 +1410,7 @@ cgraph_edge::redirect_call_stmt_to_callee (void)
 					TREE_TYPE (lhs), NULL);
 	  var = get_or_create_ssa_default_def
 		  (DECL_STRUCT_FUNCTION (e->caller->decl), var);
-	  gimple set_stmt = gimple_build_assign (lhs, var);
+	  gassign *set_stmt = gimple_build_assign (lhs, var);
           gsi = gsi_for_stmt (new_stmt);
 	  gsi_insert_before_without_update (&gsi, set_stmt, GSI_SAME_STMT);
 	  update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), set_stmt);
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index f4f3f42..fb8714b 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1569,7 +1569,7 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
 	      {
 		tmp = create_tmp_reg (TYPE_MAIN_VARIANT
 				      (TREE_TYPE (arg)), "arg");
-		gimple stmt = gimple_build_assign (tmp, arg);
+		gassign *stmt = gimple_build_assign (tmp, arg);
 		gsi_insert_after (&bsi, stmt, GSI_NEW_STMT);
 	      }
 	    vargs.quick_push (tmp);
@@ -1622,7 +1622,7 @@ cgraph_node::expand_thunk (bool output_asm_thunks, bool force_gimple_thunk)
 				     fixed_offset, virtual_offset);
 	      if (true_label)
 		{
-		  gimple stmt;
+		  gassign *stmt;
 		  bsi = gsi_last_bb (else_bb);
 		  stmt = gimple_build_assign (restmp,
 					      build_zero_cst (TREE_TYPE (restmp)));
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 4b45648..60a272f 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -665,7 +665,8 @@ void
 gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
 {
   tree lhs;
-  gimple stmt, new_stmt;
+  gimple stmt;
+  gassign *new_stmt;
   gimple_stmt_iterator i;
   gimple_seq stmts = NULL;
 
@@ -865,7 +866,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
 		    srcmem = NULL_TREE;
 		  if (srcmem)
 		    {
-		      gimple new_stmt;
+		      gassign *new_stmt;
 		      if (is_gimple_reg_type (TREE_TYPE (srcmem)))
 			{
 			  new_stmt = gimple_build_assign (NULL_TREE, srcmem);
@@ -1152,7 +1153,7 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
 	    }
 	}
 
-      gimple new_stmt;
+      gassign *new_stmt;
       if (is_gimple_reg_type (TREE_TYPE (srcvar)))
 	{
 	  new_stmt = gimple_build_assign (NULL_TREE, srcvar);
@@ -1189,7 +1190,7 @@ done:
 
   dest = force_gimple_operand_gsi (gsi, dest, false, NULL_TREE, true,
 				   GSI_SAME_STMT);
-  gimple repl = gimple_build_assign (lhs, dest);
+  gassign *repl = gimple_build_assign (lhs, dest);
   gsi_replace (gsi, repl, true);
   return true;
 }
@@ -1260,7 +1261,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len)
     }
 
   var = fold_build2 (MEM_REF, etype, dest, build_int_cst (ptr_type_node, 0));
-  gimple store = gimple_build_assign (var, build_int_cst_type (etype, cval));
+  gassign *store = gimple_build_assign (var, build_int_cst_type (etype, cval));
   gimple_set_vuse (store, gimple_vuse (stmt));
   tree vdef = gimple_vdef (stmt);
   if (vdef && TREE_CODE (vdef) == SSA_NAME)
@@ -1271,7 +1272,7 @@ gimple_fold_builtin_memset (gimple_stmt_iterator *gsi, tree c, tree len)
   gsi_insert_before (gsi, store, GSI_SAME_STMT);
   if (gimple_call_lhs (stmt))
     {
-      gimple asgn = gimple_build_assign (gimple_call_lhs (stmt), dest);
+      gassign *asgn = gimple_build_assign (gimple_call_lhs (stmt), dest);
       gsi_replace (gsi, asgn, true);
     }
   else
diff --git a/gcc/gimple-match-head.c b/gcc/gimple-match-head.c
index 9c6da59..520e523 100644
--- a/gcc/gimple-match-head.c
+++ b/gcc/gimple-match-head.c
@@ -333,8 +333,8 @@ maybe_push_res_to_seq (code_helper rcode, tree type, tree *ops,
       if (!res)
 	res = make_ssa_name (type, NULL);
       maybe_build_generic_op (rcode, type, &ops[0], ops[1], ops[2]);
-      gimple new_stmt = gimple_build_assign_with_ops (rcode, res,
-						      ops[0], ops[1], ops[2]);
+      gassign *new_stmt = gimple_build_assign_with_ops (rcode, res,
+							ops[0], ops[1], ops[2]);
       gimple_seq_add_stmt_without_update (seq, new_stmt);
       return res;
     }
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 36367fe..1ce5fa1 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -1151,7 +1151,7 @@ gimplify_bind_expr (tree *expr_p, gimple_seq *pre_p)
 	  && flag_stack_reuse != SR_NONE)
 	{
 	  tree clobber = build_constructor (TREE_TYPE (t), NULL);
-	  gimple clobber_stmt;
+	  gassign *clobber_stmt;
 	  TREE_THIS_VOLATILE (clobber) = 1;
 	  clobber_stmt = gimple_build_assign (t, clobber);
 	  gimple_set_location (clobber_stmt, end_locus);
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 16d1bb6..c994fa6 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -2345,7 +2345,7 @@ static void
 rewrite_cross_bb_scalar_dependence (scop_p scop, tree zero_dim_array,
 				    tree def, gimple use_stmt)
 {
-  gimple name_stmt;
+  gassign *name_stmt;
   tree name;
   ssa_op_iter iter;
   use_operand_p use_p;
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 47a8f03..6495e2b 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -4300,7 +4300,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcall *stmt,
 	         a load into a temporary.  */
 	      if (is_gimple_reg_type (TREE_TYPE (expr)))
 		{
-		  gimple tem = gimple_build_assign (NULL_TREE, expr);
+		  gassign *tem = gimple_build_assign (NULL_TREE, expr);
 		  if (gimple_in_ssa_p (cfun))
 		    {
 		      gimple_set_vuse (tem, gimple_vuse (stmt));
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index 145aceb..ed5c1a7 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -1492,7 +1492,7 @@ split_function (struct split_point *split_point)
 		  gsi_insert_after (&gsi, call, GSI_NEW_STMT);
 		  if (!useless_type_conversion_p (TREE_TYPE (retval), restype))
 		    {
-		      gimple cpy;
+		      gassign *cpy;
 		      tree tem = create_tmp_reg (restype, NULL);
 		      tem = make_ssa_name (tem, call);
 		      cpy = gimple_build_assign_with_ops (NOP_EXPR, retval,
diff --git a/gcc/predict.c b/gcc/predict.c
index fad0f10..ed8f352 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -3123,7 +3123,7 @@ unsigned int
 pass_strip_predict_hints::execute (function *fun)
 {
   basic_block bb;
-  gimple ass_stmt;
+  gassign *ass_stmt;
   tree var;
 
   FOR_EACH_BB_FN (bb, fun)
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index eb1f5be..7e82de5 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -1281,7 +1281,7 @@ tm_log_emit_saves (basic_block entry_block, basic_block bb)
 {
   size_t i;
   gimple_stmt_iterator gsi = gsi_last_bb (bb);
-  gimple stmt;
+  gassign *stmt;
   struct tm_log_entry l, *lp;
 
   for (i = 0; i < tm_log_save_addresses.length (); ++i)
@@ -1318,7 +1318,7 @@ tm_log_emit_restores (basic_block entry_block, basic_block bb)
   int i;
   struct tm_log_entry l, *lp;
   gimple_stmt_iterator gsi;
-  gimple stmt;
+  gassign *stmt;
 
   for (i = tm_log_save_addresses.length () - 1; i >= 0; i--)
     {
@@ -2169,7 +2169,7 @@ build_tm_load (location_t loc, tree lhs, tree rhs, gimple_stmt_iterator *gsi)
     }
   else
     {
-      gimple g;
+      gassign *g;
       tree temp;
 
       temp = create_tmp_reg (t, NULL);
@@ -2247,7 +2247,7 @@ build_tm_store (location_t loc, tree lhs, tree rhs, gimple_stmt_iterator *gsi)
     }
   else if (!useless_type_conversion_p (simple_type, type))
     {
-      gimple g;
+      gassign *g;
       tree temp;
 
       temp = create_tmp_reg (simple_type, NULL);
diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c
index 23c2df5..86b3df9 100644
--- a/gcc/tree-call-cdce.c
+++ b/gcc/tree-call-cdce.c
@@ -468,7 +468,8 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
   tree int_type;
   tree temp, tempn;
   tree cst0;
-  gimple stmt1, stmt2;
+  gassign *stmt1;
+  gcond *stmt2;
   int bit_sz, max_exp;
   inp_domain exp_domain;
 
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index b0df8b6..1d1aaef 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -527,7 +527,7 @@ make_blocks (gimple_seq seq)
 	    {
 	      tree lhs = gimple_get_lhs (stmt);
 	      tree tmp = create_tmp_var (TREE_TYPE (lhs), NULL);
-	      gimple s = gimple_build_assign (lhs, tmp);
+	      gassign *s = gimple_build_assign (lhs, tmp);
 	      gimple_set_location (s, gimple_location (stmt));
 	      gimple_set_block (s, gimple_block (stmt));
 	      gimple_set_lhs (stmt, tmp);
@@ -739,7 +739,7 @@ handle_abnormal_edges (basic_block *dispatcher_bbs,
 	      gcc_assert (computed_goto_p (last));
 
 	      /* Copy the original computed goto's destination into VAR.  */
-	      gimple assignment
+	      gassign *assignment
 		= gimple_build_assign (var, gimple_goto_dest (last));
 	      gsi_insert_before (&gsi, assignment, GSI_SAME_STMT);
 
diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c
index f456b4b..ec3ea61 100644
--- a/gcc/tree-emutls.c
+++ b/gcc/tree-emutls.c
@@ -489,7 +489,7 @@ lower_emutls_1 (tree *ptr, int *walk_subtrees, void *cb_data)
 	     new assignment statement, and substitute yet another SSA_NAME.  */
 	  if (wi->changed)
 	    {
-	      gimple x;
+	      gassign *x;
 
 	      addr = create_tmp_var (TREE_TYPE (t), NULL);
 	      x = gimple_build_assign (addr, t);
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index f0beb31..62b1632 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -261,7 +261,7 @@ static tree
 ifc_temp_var (tree type, tree expr, gimple_stmt_iterator *gsi)
 {
   tree new_name = make_temp_ssa_name (type, NULL, "_ifc_");
-  gimple stmt = gimple_build_assign (new_name, expr);
+  gassign *stmt = gimple_build_assign (new_name, expr);
   gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
   return new_name;
 }
@@ -1523,7 +1523,7 @@ convert_scalar_cond_reduction (gimple reduc, gimple_stmt_iterator *gsi,
 			       tree cond, tree op0, tree op1, bool swap)
 {
   gimple_stmt_iterator stmt_it;
-  gimple new_assign;
+  gassign *new_assign;
   tree rhs;
   tree rhs1 = gimple_assign_rhs1 (reduc);
   tree tmp = make_temp_ssa_name (TREE_TYPE (rhs1), NULL, "_ifc_");
@@ -1575,7 +1575,7 @@ predicate_scalar_phi (gphi *phi, tree cond,
 		      basic_block true_bb,
 		      gimple_stmt_iterator *gsi)
 {
-  gimple new_stmt;
+  gassign *new_stmt;
   basic_block bb;
   tree rhs, res, arg, scev;
 
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 9cd25c6..53b5d35 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -319,7 +319,7 @@ remap_ssa_name (tree name, copy_body_data *id)
 		  || EDGE_COUNT (id->entry_bb->preds) != 1))
 	    {
 	      gimple_stmt_iterator gsi = gsi_last_bb (id->entry_bb);
-	      gimple init_stmt;
+	      gassign *init_stmt;
 	      tree zero = build_zero_cst (TREE_TYPE (new_tree));
 
 	      init_stmt = gimple_build_assign (new_tree, zero);
@@ -1827,7 +1827,7 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
 		 the number of anonymous arguments.  */
 	      size_t nargs = gimple_call_num_args (id->call_stmt);
 	      tree count, p;
-	      gimple new_stmt;
+	      gassign *new_stmt;
 
 	      for (p = DECL_ARGUMENTS (id->src_fn); p; p = DECL_CHAIN (p))
 		nargs--;
@@ -2951,7 +2951,7 @@ static gimple
 setup_one_parameter (copy_body_data *id, tree p, tree value, tree fn,
 		     basic_block bb, tree *vars)
 {
-  gimple init_stmt = NULL;
+  gassign *init_stmt = NULL;
   tree var;
   tree rhs = value;
   tree def = (gimple_in_ssa_p (cfun)
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 31ea04c..f0bac46 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -822,7 +822,7 @@ generate_memset_builtin (struct loop *loop, partition_t partition)
     val = fold_convert (integer_type_node, val);
   else if (!useless_type_conversion_p (integer_type_node, TREE_TYPE (val)))
     {
-      gimple cstmt;
+      gassign *cstmt;
       tree tem = make_ssa_name (integer_type_node, NULL);
       cstmt = gimple_build_assign_with_ops (NOP_EXPR, tem, val, NULL_TREE);
       gsi_insert_after (&gsi, cstmt, GSI_CONTINUE_LINKING);
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index 57acc50..50d7873 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -436,7 +436,7 @@ static tree
 init_tmp_var (struct nesting_info *info, tree exp, gimple_stmt_iterator *gsi)
 {
   tree t;
-  gimple stmt;
+  gassign *stmt;
 
   t = create_tmp_var_for (info, TREE_TYPE (exp), NULL);
   stmt = gimple_build_assign (t, exp);
@@ -467,7 +467,7 @@ static tree
 save_tmp_var (struct nesting_info *info, tree exp, gimple_stmt_iterator *gsi)
 {
   tree t;
-  gimple stmt;
+  gassign *stmt;
 
   t = create_tmp_var_for (info, TREE_TYPE (exp), NULL);
   stmt = gimple_build_assign (exp, t);
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index a1e0778..785bdec 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -1152,7 +1152,7 @@ int
 create_loads_for_reductions (reduction_info **slot, struct clsn_data *clsn_data)
 {
   struct reduction_info *const red = *slot;
-  gimple stmt;
+  gassign *stmt;
   gimple_stmt_iterator gsi;
   tree type = TREE_TYPE (gimple_assign_lhs (red->reduc_stmt));
   tree load_struct;
@@ -1189,7 +1189,7 @@ create_final_loads_for_reduction (reduction_info_table_type *reduction_list,
 {
   gimple_stmt_iterator gsi;
   tree t;
-  gimple stmt;
+  gassign *stmt;
 
   gsi = gsi_after_labels (ld_st_data->load_bb);
   t = build_fold_addr_expr (ld_st_data->store);
@@ -1213,7 +1213,7 @@ create_stores_for_reduction (reduction_info **slot, struct clsn_data *clsn_data)
 {
   struct reduction_info *const red = *slot;
   tree t;
-  gimple stmt;
+  gassign *stmt;
   gimple_stmt_iterator gsi;
   tree type = TREE_TYPE (gimple_assign_lhs (red->reduc_stmt));
 
@@ -1235,7 +1235,7 @@ create_loads_and_stores_for_name (name_to_copy_elt **slot,
 {
   struct name_to_copy_elt *const elt = *slot;
   tree t;
-  gimple stmt;
+  gassign *stmt;
   gimple_stmt_iterator gsi;
   tree type = TREE_TYPE (elt->new_name);
   tree load_struct;
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c
index 91017ff..3434a80 100644
--- a/gcc/tree-ssa-dse.c
+++ b/gcc/tree-ssa-dse.c
@@ -266,7 +266,7 @@ dse_optimize_stmt (gimple_stmt_iterator *gsi)
 	      tree lhs = gimple_call_lhs (stmt);
 	      if (lhs)
 		{
-		  gimple new_stmt = gimple_build_assign (lhs, ptr);
+		  gassign *new_stmt = gimple_build_assign (lhs, ptr);
 		  unlink_stmt_vdef (stmt);
 		  if (gsi_replace (gsi, new_stmt, true))
 		    bitmap_set_bit (need_eh_cleanup, gimple_bb (stmt)->index);
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 55de465..1f4c9de 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -2968,7 +2968,7 @@ associate_pointerplus (gimple_stmt_iterator *gsi)
     return false;
 
   tree off = make_ssa_name (TREE_TYPE (off1), NULL);
-  gimple ostmt = gimple_build_assign_with_ops (PLUS_EXPR, off, off1, off2);
+  gassign *ostmt = gimple_build_assign_with_ops (PLUS_EXPR, off, off1, off2);
   gsi_insert_before (gsi, ostmt, GSI_SAME_STMT);
 
   gimple_assign_set_rhs_with_ops (gsi, POINTER_PLUS_EXPR, ptr, off);
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 6f64f4a..cb0ce4b 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -1928,7 +1928,7 @@ sm_set_flag_if_changed::operator () (mem_ref_loc_p loc)
       && gimple_assign_lhs_ptr (loc->stmt) == loc->ref)
     {
       gimple_stmt_iterator gsi = gsi_for_stmt (loc->stmt);
-      gimple stmt = gimple_build_assign (flag, boolean_true_node);
+      gassign *stmt = gimple_build_assign (flag, boolean_true_node);
       gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
     }
   return false;
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index 5211b89..b408b9f 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -737,7 +737,8 @@ execute_cse_sincos_1 (tree name)
   gimple_stmt_iterator gsi;
   imm_use_iterator use_iter;
   tree fndecl, res, type;
-  gimple def_stmt, use_stmt, stmt;
+  gimple def_stmt, use_stmt;
+  gcall *call_stmt;
   int seen_cos = 0, seen_sin = 0, seen_cexpi = 0;
   vec<gimple> stmts = vNULL;
   basic_block top_bb = NULL;
@@ -782,9 +783,10 @@ execute_cse_sincos_1 (tree name)
   fndecl = mathfn_built_in (type, BUILT_IN_CEXPI);
   if (!fndecl)
     return false;
-  stmt = gimple_build_call (fndecl, 1, name);
-  res = make_temp_ssa_name (TREE_TYPE (TREE_TYPE (fndecl)), stmt, "sincostmp");
-  gimple_call_set_lhs (stmt, res);
+  call_stmt = gimple_build_call (fndecl, 1, name);
+  res = make_temp_ssa_name (TREE_TYPE (TREE_TYPE (fndecl)), call_stmt,
+			    "sincostmp");
+  gimple_call_set_lhs (call_stmt, res);
 
   def_stmt = SSA_NAME_DEF_STMT (name);
   if (!SSA_NAME_IS_DEFAULT_DEF (name)
@@ -792,12 +794,12 @@ execute_cse_sincos_1 (tree name)
       && gimple_bb (def_stmt) == top_bb)
     {
       gsi = gsi_for_stmt (def_stmt);
-      gsi_insert_after (&gsi, stmt, GSI_SAME_STMT);
+      gsi_insert_after (&gsi, call_stmt, GSI_SAME_STMT);
     }
   else
     {
       gsi = gsi_after_labels (top_bb);
-      gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
+      gsi_insert_before (&gsi, call_stmt, GSI_SAME_STMT);
     }
   sincos_stats.inserted++;
 
@@ -826,11 +828,12 @@ execute_cse_sincos_1 (tree name)
 	}
 
 	/* Replace call with a copy.  */
-	stmt = gimple_build_assign (gimple_call_lhs (use_stmt), rhs);
+	gassign *assign_stmt = gimple_build_assign (gimple_call_lhs (use_stmt),
+						    rhs);
 
 	gsi = gsi_for_stmt (use_stmt);
-	gsi_replace (&gsi, stmt, true);
-	if (gimple_purge_dead_eh_edges (gimple_bb (stmt)))
+	gsi_replace (&gsi, assign_stmt, true);
+	if (gimple_purge_dead_eh_edges (gimple_bb (assign_stmt)))
 	  cfg_changed = true;
     }
 
@@ -1115,7 +1118,7 @@ build_and_insert_ref (gimple_stmt_iterator *gsi, location_t loc, tree type,
 		      const char *name, enum tree_code code, tree arg0)
 {
   tree result = make_temp_ssa_name (type, NULL, name);
-  gimple stmt = gimple_build_assign (result, build1 (code, type, arg0));
+  gassign *stmt = gimple_build_assign (result, build1 (code, type, arg0));
   gimple_set_location (stmt, loc);
   gsi_insert_before (gsi, stmt, GSI_SAME_STMT);
   return result;
@@ -2201,7 +2204,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
       gimple_stmt_iterator gsi_ins = gsi_for_stmt (src_stmt);
       tree addr_expr, addr_tmp, val_expr, val_tmp;
       tree load_offset_ptr, aligned_load_type;
-      gimple addr_stmt, load_stmt;
+      gassign *load_stmt;
       unsigned align;
 
       align = get_object_alignment (src);
@@ -2222,7 +2225,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
 	{
 	  addr_tmp = make_temp_ssa_name (TREE_TYPE (addr_expr), NULL,
 					 "load_src");
-	  addr_stmt = gimple_build_assign (addr_tmp, addr_expr);
+	  gassign *addr_stmt = gimple_build_assign (addr_tmp, addr_expr);
 	  gsi_insert_before (&gsi, addr_stmt, GSI_SAME_STMT);
 	}
 
@@ -2299,7 +2302,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
   /* Convert the src expression if necessary.  */
   if (!useless_type_conversion_p (TREE_TYPE (tmp), bswap_type))
     {
-      gimple convert_stmt;
+      gassign *convert_stmt;
       tmp = make_temp_ssa_name (bswap_type, NULL, "bswapsrc");
       convert_stmt = gimple_build_assign_with_ops (NOP_EXPR, tmp, src, NULL);
       gsi_insert_before (&gsi, convert_stmt, GSI_SAME_STMT);
@@ -2312,7 +2315,7 @@ bswap_replace (gimple cur_stmt, gimple_stmt_iterator gsi, gimple src_stmt,
   /* Convert the result if necessary.  */
   if (!useless_type_conversion_p (TREE_TYPE (tgt), bswap_type))
     {
-      gimple convert_stmt;
+      gassign *convert_stmt;
       tmp = make_temp_ssa_name (bswap_type, NULL, "bswapdst");
       convert_stmt = gimple_build_assign_with_ops (NOP_EXPR, tgt, tmp, NULL);
       gsi_insert_after (&gsi, convert_stmt, GSI_SAME_STMT);
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index ccb6c6b..dafd82d 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -1301,7 +1301,8 @@ neg_replacement (basic_block cond_bb, basic_block middle_bb,
 		 edge e0 ATTRIBUTE_UNUSED, edge e1,
 		 gimple phi, tree arg0, tree arg1)
 {
-  gimple new_stmt, cond;
+  gassign *new_stmt;
+  gimple cond;
   gimple_stmt_iterator gsi;
   gimple assign;
   edge true_edge, false_edge;
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 886e6fc2..5973e64 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4020,7 +4020,7 @@ eliminate_dom_walker::before_dom_children (basic_block b)
 
 	  if (!useless_type_conversion_p (TREE_TYPE (res), TREE_TYPE (sprime)))
 	    sprime = fold_convert (TREE_TYPE (res), sprime);
-	  gimple stmt = gimple_build_assign (res, sprime);
+	  gassign *stmt = gimple_build_assign (res, sprime);
 	  /* ???  It cannot yet be necessary (DOM walk).  */
 	  gimple_set_plf (stmt, NECESSARY, gimple_plf (phi, NECESSARY));
 
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index dec357a..a1714fd 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -2591,7 +2591,7 @@ optimize_range_tests_to_bit_test (enum tree_code opcode, int first, int length,
 	  gimple_seq_add_seq_without_update (&seq, seq2);
 	  gcc_assert (TREE_CODE (exp) == SSA_NAME);
 	  gimple_set_visited (SSA_NAME_DEF_STMT (exp), true);
-	  gimple g
+	  gassign *g
 	    = gimple_build_assign_with_ops (BIT_IOR_EXPR,
 					    make_ssa_name (optype, NULL),
 					    tem, exp);
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
index 4d35bc9..f9cfed5 100644
--- a/gcc/tree-ssa-strlen.c
+++ b/gcc/tree-ssa-strlen.c
@@ -416,7 +416,9 @@ get_string_length (strinfo si)
 
   if (si->stmt)
     {
-      gimple stmt = si->stmt, lenstmt;
+      gimple stmt = si->stmt;
+      gcall *call_stmt;
+      gassign *assign_stmt;
       tree callee, lhs, fn, tem;
       location_t loc;
       gimple_stmt_iterator gsi;
@@ -440,11 +442,11 @@ get_string_length (strinfo si)
 	  fn = builtin_decl_implicit (BUILT_IN_STRLEN);
 	  gcc_assert (lhs == NULL_TREE);
 	  tem = unshare_expr (gimple_call_arg (stmt, 0));
-	  lenstmt = gimple_build_call (fn, 1, tem);
-	  lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), lenstmt);
-	  gimple_call_set_lhs (lenstmt, lhs);
-	  gimple_set_vuse (lenstmt, gimple_vuse (stmt));
-	  gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
+	  call_stmt = gimple_build_call (fn, 1, tem);
+	  lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), call_stmt);
+	  gimple_call_set_lhs (call_stmt, lhs);
+	  gimple_set_vuse (call_stmt, gimple_vuse (stmt));
+	  gsi_insert_before (&gsi, call_stmt, GSI_SAME_STMT);
 	  tem = gimple_call_arg (stmt, 0);
           if (!ptrofftype_p (TREE_TYPE (lhs)))
             {
@@ -452,13 +454,13 @@ get_string_length (strinfo si)
               lhs = force_gimple_operand_gsi (&gsi, lhs, true, NULL_TREE,
                                               true, GSI_SAME_STMT);
             }
-	  lenstmt
+	  assign_stmt
 	    = gimple_build_assign_with_ops
 	        (POINTER_PLUS_EXPR,
 		 make_ssa_name (TREE_TYPE (gimple_call_arg (stmt, 0)), NULL),
 		 tem, lhs);
-	  gsi_insert_before (&gsi, lenstmt, GSI_SAME_STMT);
-	  gimple_call_set_arg (stmt, 0, gimple_assign_lhs (lenstmt));
+	  gsi_insert_before (&gsi, assign_stmt, GSI_SAME_STMT);
+	  gimple_call_set_arg (stmt, 0, gimple_assign_lhs (assign_stmt));
 	  lhs = NULL_TREE;
 	  /* FALLTHRU */
 	case BUILT_IN_STRCPY:
@@ -1673,7 +1675,7 @@ handle_builtin_memset (gimple_stmt_iterator *gsi)
   unlink_stmt_vdef (stmt2);
   if (lhs)
     {
-      gimple assign = gimple_build_assign (lhs, ptr);
+      gassign *assign = gimple_build_assign (lhs, ptr);
       gsi_replace (gsi, assign, false);
     }
   else
diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c
index 334d775..074b5a4 100644
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -1037,7 +1037,7 @@ build_one_array (gswitch *swtch, int num, tree arr_index_type,
 		 gphi *phi, tree tidx, struct switch_conv_info *info)
 {
   tree name, cst;
-  gimple load;
+  gassign *load;
   gimple_stmt_iterator gsi = gsi_for_stmt (swtch);
   location_t loc = gimple_location (swtch);
 
@@ -1103,7 +1103,7 @@ build_arrays (gswitch *swtch, struct switch_conv_info *info)
 {
   tree arr_index_type;
   tree tidx, sub, utype;
-  gimple stmt;
+  gassign *stmt;
   gimple_stmt_iterator gsi;
   gphi_iterator gpi;
   int i;
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index de6a531..eeeab25 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -4057,7 +4057,7 @@ vect_create_data_ref_ptr (gimple stmt, tree aggr_type, struct loop *at_loop,
   tree aggr_ptr_type;
   tree aggr_ptr;
   tree new_temp;
-  gimple vec_stmt;
+  gassign *vec_stmt;
   gimple_seq new_stmt_list = NULL;
   edge pe = NULL;
   basic_block new_bb;
@@ -4591,7 +4591,7 @@ vect_permute_store_chain (vec<tree> dr_chain,
 			  vec<tree> *result_chain)
 {
   tree vect1, vect2, high, low;
-  gimple perm_stmt;
+  gassign *perm_stmt;
   tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
   tree perm_mask_low, perm_mask_high;
   tree data_ref;
@@ -5164,7 +5164,7 @@ vect_permute_load_chain (vec<tree> dr_chain,
   tree data_ref, first_vect, second_vect;
   tree perm_mask_even, perm_mask_odd;
   tree perm3_mask_low, perm3_mask_high;
-  gimple perm_stmt;
+  gassign *perm_stmt;
   tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
   unsigned int i, j, log_length = exact_log2 (length);
   unsigned nelt = TYPE_VECTOR_SUBPARTS (vectype);
@@ -5363,7 +5363,7 @@ vect_shift_permute_load_chain (vec<tree> dr_chain,
   tree vect[3], vect_shift[3], data_ref, first_vect, second_vect;
   tree perm2_mask1, perm2_mask2, perm3_mask;
   tree select_mask, shift1_mask, shift2_mask, shift3_mask, shift4_mask;
-  gimple perm_stmt;
+  gassign *perm_stmt;
 
   tree vectype = STMT_VINFO_VECTYPE (vinfo_for_stmt (stmt));
   unsigned int i;
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 55ab637..6d9029a 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -629,7 +629,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0,
 	      && expand_vec_cond_expr_p (type, type))
 	    {
 	      tree zero, cst, cond;
-	      gimple stmt;
+	      gassign *stmt;
 
 	      zero = build_zero_cst (type);
 	      cond = build2 (LT_EXPR, type, op0, zero);
@@ -1136,7 +1136,7 @@ static tree
 vector_element (gimple_stmt_iterator *gsi, tree vect, tree idx, tree *ptmpvec)
 {
   tree vect_type, vect_elt_type;
-  gimple asgn;
+  gassign *asgn;
   tree tmpvec;
   tree arraytype;
   bool need_asgn = true;
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index cb76ade..f97ac0f 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -2121,7 +2121,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
   char tmp_name[20];
   tree or_tmp_name = NULL_TREE;
   tree and_tmp_name;
-  gimple and_stmt;
+  gassign *and_stmt;
   tree ptrsize_zero;
   tree part_cond_expr;
 
@@ -2140,7 +2140,7 @@ vect_create_cond_for_align_checks (loop_vec_info loop_vinfo,
       tree addr_base;
       tree addr_tmp_name;
       tree new_or_tmp_name;
-      gimple addr_stmt, or_stmt;
+      gassign *addr_stmt, *or_stmt;
       stmt_vec_info stmt_vinfo = vinfo_for_stmt (ref_stmt);
       tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
       bool negative = tree_int_cst_compare
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 5149db7..4bfa089 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -2502,8 +2502,8 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi,
     {
       tree rhs = gimple_assign_rhs2 (def_stmt);
       tree negrhs = make_ssa_name (TREE_TYPE (rhs), NULL);
-      gimple negate_stmt = gimple_build_assign_with_ops (NEGATE_EXPR, negrhs,
-							 rhs, NULL);
+      gassign *negate_stmt =  gimple_build_assign_with_ops (NEGATE_EXPR, negrhs,
+							    rhs, NULL);
       gimple_stmt_iterator gsi = gsi_for_stmt (def_stmt);
       set_vinfo_for_stmt (negate_stmt, new_stmt_vec_info (negate_stmt, 
 							  loop_info, NULL));
@@ -3271,7 +3271,7 @@ get_initial_def_for_induction (gimple iv_phi)
   tree new_vec, vec_init, vec_step, t;
   tree new_var;
   tree new_name;
-  gimple init_stmt, new_stmt;
+  gassign *init_stmt, *new_stmt;
   gphi *induction_phi;
   tree induc_def, vec_def, vec_dest;
   tree init_expr, step_expr;
@@ -4769,7 +4769,7 @@ vectorizable_reduction (gimple stmt, gimple_stmt_iterator *gsi,
   stmt_vec_info prev_stmt_info, prev_phi_info;
   bool single_defuse_cycle = false;
   tree reduc_def = NULL_TREE;
-  gimple new_stmt = NULL;
+  gassign *new_stmt = NULL;
   int j;
   tree ops[3];
   bool nested_cycle = false, found_nested_cycle_def = false;
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index b84248e..61d4b04 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -286,7 +286,7 @@ vect_recog_dot_prod_pattern (vec<gimple> *stmts, tree *type_in,
   tree oprnd00, oprnd01;
   stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt);
   tree type, half_type;
-  gimple pattern_stmt;
+  gassign *pattern_stmt;
   tree prod_type;
   loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
   struct loop *loop;
@@ -672,8 +672,8 @@ vect_recog_sad_pattern (vec<gimple> *stmts, tree *type_in,
 
   /* Pattern detected. Create a stmt to be used to replace the pattern: */
   tree var = vect_recog_temp_ssa_var (sum_type, NULL);
-  gimple pattern_stmt = gimple_build_assign_with_ops
-                          (SAD_EXPR, var, sad_oprnd0, sad_oprnd1, plus_oprnd1);
+  gassign *pattern_stmt = gimple_build_assign_with_ops (
+			    SAD_EXPR, var, sad_oprnd0, sad_oprnd1, plus_oprnd1);
 
   if (dump_enabled_p ())
     {
@@ -856,7 +856,7 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts,
   gimple def_stmt0, def_stmt1;
   tree oprnd0, oprnd1;
   tree type, half_type0, half_type1;
-  gimple new_stmt = NULL, pattern_stmt = NULL;
+  gassign *new_stmt = NULL, *pattern_stmt = NULL;
   tree vectype, vecitype;
   tree var;
   enum tree_code dummy_code;
@@ -1190,7 +1190,7 @@ vect_recog_widen_sum_pattern (vec<gimple> *stmts, tree *type_in,
   tree oprnd0, oprnd1;
   stmt_vec_info stmt_vinfo = vinfo_for_stmt (last_stmt);
   tree type, half_type;
-  gimple pattern_stmt;
+  gassign *pattern_stmt;
   loop_vec_info loop_info = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
   struct loop *loop;
   tree var;
@@ -1504,7 +1504,8 @@ vect_recog_over_widening_pattern (vec<gimple> *stmts,
                                   tree *type_in, tree *type_out)
 {
   gimple stmt = stmts->pop ();
-  gimple pattern_stmt = NULL, new_def_stmt, prev_stmt = NULL, use_stmt = NULL;
+  gassign *pattern_stmt = NULL;
+  gimple new_def_stmt, prev_stmt = NULL, use_stmt = NULL;
   tree op0, op1, vectype = NULL_TREE, use_lhs, use_type;
   tree var = NULL_TREE, new_type = NULL_TREE, new_oprnd;
   bool first;
@@ -1699,7 +1700,7 @@ vect_recog_widen_shift_pattern (vec<gimple> *stmts,
   gimple def_stmt0;
   tree oprnd0, oprnd1;
   tree type, half_type0;
-  gimple pattern_stmt;
+  gassign *pattern_stmt;
   tree vectype, vectype_out = NULL_TREE;
   tree var;
   enum tree_code dummy_code;
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index 0e9abdb..05ba780 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -2604,7 +2604,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
 		{
 		  tree new_temp
 		    = make_ssa_name (TREE_TYPE (vector_type), NULL);
-		  gimple init_stmt;
+		  gassign *init_stmt;
 		  op = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (vector_type),
 			       op);		  
 		  init_stmt
@@ -2813,7 +2813,7 @@ vect_create_mask_and_perm (gimple stmt, gimple next_scalar_stmt,
                            int ncopies, int vect_stmts_counter)
 {
   tree perm_dest;
-  gimple perm_stmt = NULL;
+  gassign *perm_stmt = NULL;
   stmt_vec_info next_stmt_info;
   int i, stride;
   tree first_vec, second_vec, data_ref;
@@ -3189,7 +3189,8 @@ vect_schedule_slp_instance (slp_tree node, slp_instance instance,
 static void
 vect_remove_slp_scalar_calls (slp_tree node)
 {
-  gimple stmt, new_stmt;
+  gimple stmt;
+  gassign *new_stmt;
   gimple_stmt_iterator gsi;
   int i;
   slp_tree child;
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 02ac7d0..a282cea 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -150,7 +150,7 @@ read_vector_array (gimple stmt, gimple_stmt_iterator *gsi, tree scalar_dest,
 		   tree array, unsigned HOST_WIDE_INT n)
 {
   tree vect_type, vect, vect_name, array_ref;
-  gimple new_stmt;
+  gassign *new_stmt;
 
   gcc_assert (TREE_CODE (TREE_TYPE (array)) == ARRAY_TYPE);
   vect_type = TREE_TYPE (TREE_TYPE (array));
@@ -176,7 +176,7 @@ write_vector_array (gimple stmt, gimple_stmt_iterator *gsi, tree vect,
 		    tree array, unsigned HOST_WIDE_INT n)
 {
   tree array_ref;
-  gimple new_stmt;
+  gassign *new_stmt;
 
   array_ref = build4 (ARRAY_REF, TREE_TYPE (vect), array,
 		      build_int_cst (size_type_node, n),
@@ -1314,7 +1314,7 @@ tree
 vect_init_vector (gimple stmt, tree val, tree type, gimple_stmt_iterator *gsi)
 {
   tree new_var;
-  gimple init_stmt;
+  gassign *init_stmt;
   tree vec_oprnd;
   tree new_temp;
 
@@ -2465,7 +2465,7 @@ vectorizable_call (gimple gs, gimple_stmt_iterator *gsi, gimple *vec_stmt,
 	      tree cst = build_vector (vectype_out, v);
 	      tree new_var
 		= vect_get_new_vect_var (vectype_out, vect_simple_var, "cst_");
-	      gimple init_stmt = gimple_build_assign (new_var, cst);
+	      gassign *init_stmt = gimple_build_assign (new_var, cst);
 	      new_temp = make_ssa_name (new_var, init_stmt);
 	      gimple_assign_set_lhs (init_stmt, new_temp);
 	      vect_init_vector_1 (stmt, init_stmt, NULL);
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 43ffcfe..23bef4a 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -9555,8 +9555,8 @@ simplify_internal_call_using_ranges (gimple_stmt_iterator *gsi, gimple stmt)
 	}
     }
 
-  gimple g = gimple_build_assign_with_ops (subcode, gimple_call_lhs (stmt),
-					   op0, op1);
+  gassign *g = gimple_build_assign_with_ops (subcode, gimple_call_lhs (stmt),
+					     op0, op1);
   gsi_replace (gsi, g, false);
   return true;
 }
diff --git a/gcc/tsan.c b/gcc/tsan.c
index 0577104..8443a6d 100644
--- a/gcc/tsan.c
+++ b/gcc/tsan.c
@@ -115,7 +115,7 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
   tree base, rhs, expr_ptr, builtin_decl;
   basic_block bb;
   HOST_WIDE_INT size;
-  gimple stmt, g;
+  gimple stmt;
   gimple_seq seq;
   location_t loc;
 
@@ -165,12 +165,13 @@ instrument_expr (gimple_stmt_iterator gsi, tree expr, bool is_write)
   seq = NULL;
   if (!is_gimple_val (expr_ptr))
     {
-      g = gimple_build_assign (make_ssa_name (TREE_TYPE (expr_ptr), NULL),
-			       expr_ptr);
+      gassign *g = gimple_build_assign (make_ssa_name (TREE_TYPE (expr_ptr), NULL),
+					expr_ptr);
       expr_ptr = gimple_assign_lhs (g);
       gimple_set_location (g, loc);
       gimple_seq_add_stmt_without_update (&seq, g);
     }
+  gcall *g;
   if (rhs == NULL)
     g = gimple_build_call (get_memory_access_decl (is_write, size),
 			   1, expr_ptr);
@@ -443,7 +444,8 @@ static const struct tsan_map_atomic
 static void
 instrument_builtin_call (gimple_stmt_iterator *gsi)
 {
-  gimple stmt = gsi_stmt (*gsi), g;
+  gimple stmt = gsi_stmt (*gsi);
+  gassign *g;
   tree callee = gimple_call_fndecl (stmt), last_arg, args[6], t, lhs;
   enum built_in_function fcode = DECL_FUNCTION_CODE (callee);
   unsigned int i, num = gimple_call_num_args (stmt), j;
-- 
1.7.11.7


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]