These values are returned by reference so they need to be built as reference 
types to be correctly decoded by the debugger.

Tested on x86_64-suse-linux, applied on the mainline.


2015-06-01  Pierre-Marie de Rodat  <dero...@adacore.com>

        * gcc-interface/decl.c (gnat_to_gnu_entity): Replace pointer types with
        references ones for functions that return references.


-- 
Eric Botcazou
Index: gcc-interface/decl.c
===================================================================
--- gcc-interface/decl.c	(revision 223919)
+++ gcc-interface/decl.c	(working copy)
@@ -4198,7 +4198,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entit
 	       type the pointer type and make a note of that.  */
 	    if (Returns_By_Ref (gnat_entity))
 	      {
-		gnu_return_type = build_pointer_type (gnu_return_type);
+		gnu_return_type = build_reference_type (gnu_return_type);
 		return_by_direct_ref_p = true;
 	      }
 
@@ -4216,7 +4216,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entit
 	       the actual return type is the pointer type.  */
 	    else if (Requires_Transient_Scope (gnat_return_type))
 	      {
-		gnu_return_type = build_pointer_type (gnu_return_type);
+		gnu_return_type = build_reference_type (gnu_return_type);
 		return_unconstrained_p = true;
 	      }
 

Reply via email to