diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index e7da3466e72f3362d531bd4b549bbf3e725289bb..a5169b7a3594d94be1c85f0f8db3a5240a94dc5f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gcc-interface/trans.c (call_to_gnu): Use the Sloc of the call
+	for back-copy statements in lieu of that of the actual.
+
 2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR ada/20548
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 97ff3bd2269863851bceac609ac3e52412e6d2e1..db63baae030292e891aef5a9d477caa5799b3546 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -2249,7 +2249,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
 	    {
 	      gnu_temp = build_binary_op (MODIFY_EXPR, NULL_TREE, gnu_copy,
 					  gnu_name);
-	      set_expr_location_from_node (gnu_temp, gnat_actual);
+	      set_expr_location_from_node (gnu_temp, gnat_node);
 	      append_to_statement_list (gnu_temp, &gnu_after_list);
 	    }
 	}
@@ -2601,7 +2601,7 @@ call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target)
 
 	    gnu_result = build_binary_op (MODIFY_EXPR, NULL_TREE,
 					  gnu_actual, gnu_result);
-	    set_expr_location_from_node (gnu_result, gnat_actual);
+	    set_expr_location_from_node (gnu_result, gnat_node);
 	    append_to_statement_list (gnu_result, &gnu_before_list);
 	    scalar_return_list = TREE_CHAIN (scalar_return_list);
 	    gnu_name_list = TREE_CHAIN (gnu_name_list);