diff mbox

[Ada] Housekeeping work in gigi (41/n)

Message ID 201111201115.55174.ebotcazou@adacore.com
State New
Headers show

Commit Message

Eric Botcazou Nov. 20, 2011, 10:15 a.m. UTC
Tested on i586-suse-linux, applied on the mainline.


2011-10-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Add comment.
	(gnat_to_gnu) <N_Return_Statement>: Add 'else' to avoid doing a useless
	test.  Tweak default case.
	<N_Goto_Statement>: Use better formatting.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Use INIT_EXPR instead of
	MODIFY_EXPR to initialize the storage.
	(build_allocator): Likewise.
diff mbox

Patch

Index: gcc-interface/utils2.c
===================================================================
--- gcc-interface/utils2.c	(revision 181505)
+++ gcc-interface/utils2.c	(working copy)
@@ -2126,7 +2126,7 @@  maybe_wrap_malloc (tree data_size, tree
 
       return
 	build2 (COMPOUND_EXPR, TREE_TYPE (aligning_field_addr),
-		build_binary_op (MODIFY_EXPR, NULL_TREE,
+		build_binary_op (INIT_EXPR, NULL_TREE,
 				 storage_ptr_slot, storage_ptr),
 		aligning_field_addr);
     }
@@ -2279,12 +2279,12 @@  build_allocator (tree type, tree init, t
 	  CONSTRUCTOR_APPEND_ELT (v, DECL_CHAIN (TYPE_FIELDS (storage_type)),
 				  init);
 	  storage_init
-	    = build_binary_op (MODIFY_EXPR, NULL_TREE, storage_deref,
+	    = build_binary_op (INIT_EXPR, NULL_TREE, storage_deref,
 			       gnat_build_constructor (storage_type, v));
 	}
       else
 	storage_init
-	  = build_binary_op (MODIFY_EXPR, NULL_TREE,
+	  = build_binary_op (INIT_EXPR, NULL_TREE,
 			     build_component_ref (storage_deref, NULL_TREE,
 						  TYPE_FIELDS (storage_type),
 						  false),
@@ -2332,7 +2332,7 @@  build_allocator (tree type, tree init, t
       storage_deref = build_unary_op (INDIRECT_REF, NULL_TREE, storage);
       TREE_THIS_NOTRAP (storage_deref) = 1;
       storage_init
-	= build_binary_op (MODIFY_EXPR, NULL_TREE, storage_deref, init);
+	= build_binary_op (INIT_EXPR, NULL_TREE, storage_deref, init);
       return build2 (COMPOUND_EXPR, result_type, storage_init, storage);
     }
 
Index: gcc-interface/trans.c
===================================================================
--- gcc-interface/trans.c	(revision 181505)
+++ gcc-interface/trans.c	(working copy)
@@ -3278,6 +3278,7 @@  Subprogram_Body_to_gnu (Node_Id gnat_nod
 	save_gnu_tree (gnat_param, NULL_TREE, false);
     }
 
+  /* Disconnect the variable created for the return value.  */
   if (gnu_return_var_elmt)
     TREE_VALUE (gnu_return_var_elmt) = void_type_node;
 
@@ -5889,12 +5890,12 @@  gnat_to_gnu (Node_Id gnat_node)
 					       gnat_node, false);
 	      }
 
-	    /* If the function returns by invisible reference, dereference
+	    /* Otherwise, if it returns by invisible reference, dereference
 	       the pointer it is passed using the type of the return value
 	       and build the copy operation manually.  This ensures that we
 	       don't copy too much data, for example if the return type is
 	       unconstrained with a maximum size.  */
-	    if (TREE_ADDRESSABLE (gnu_subprog_type))
+	    else if (TREE_ADDRESSABLE (gnu_subprog_type))
 	      {
 		tree gnu_ret_deref
 		  = build_unary_op (INDIRECT_REF, TREE_TYPE (gnu_ret_val),
@@ -5905,11 +5906,9 @@  gnat_to_gnu (Node_Id gnat_node)
 		gnu_ret_val = NULL_TREE;
 	      }
 	  }
+
 	else
-	  {
-	    gnu_ret_obj = NULL_TREE;
-	    gnu_ret_val = NULL_TREE;
-	  }
+	  gnu_ret_obj = gnu_ret_val = NULL_TREE;
 
 	/* If we have a return label defined, convert this into a branch to
 	   that label.  The return proper will be handled elsewhere.  */
@@ -5934,8 +5933,8 @@  gnat_to_gnu (Node_Id gnat_node)
       break;
 
     case N_Goto_Statement:
-      gnu_result = build1 (GOTO_EXPR, void_type_node,
-			   gnat_to_gnu (Name (gnat_node)));
+      gnu_result
+	= build1 (GOTO_EXPR, void_type_node, gnat_to_gnu (Name (gnat_node)));
       break;
 
     /***************************/