2008-05-27 Doug Rupp <rupp@adacore.com>
authorDoug Rupp <rupp@adacore.com>
Tue, 27 May 2008 08:50:43 +0000 (10:50 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 27 May 2008 08:50:43 +0000 (10:50 +0200)
* exp_ch6.adb:
(Expand_N_Function_Call): Fix comments. Minor reformatting.

* exp_vfpt.ads:
(Expand_Vax_Foreign_Return): Fix comments.

From-SVN: r135983

gcc/ada/exp_ch6.adb
gcc/ada/exp_vfpt.ads

index 793d0f1e3cf69d7dd6ed661d04c7e99c7e0b82d0..7a3c744a1ec8fe61f3acc6594ca45d0018bb097e 100644 (file)
@@ -3965,17 +3965,17 @@ package body Exp_Ch6 is
    begin
       Expand_Call (N);
 
-      --  Handle VAX Float return values from foreign compiled functions
-
-      --  More commments required here, what are the tests below for ???
+      --  If the return value of a foreign compiled function is
+      --  VAX Float then expand the return (adjusts the location
+      --  of the return value on Alpha/VMS, noop everywere else).
+      --  Comes_From_Source intercepts recursive expansion.
 
       if Vax_Float (Etype (N))
         and then Nkind (N) = N_Function_Call
-        and then not (Nkind (Parent (N)) = N_Type_Conversion
-                       and then not Comes_From_Source (Parent (N)))
         and then Present (Name (N))
         and then Present (Entity (Name (N)))
         and then Has_Foreign_Convention (Entity (Name (N)))
+        and then Comes_From_Source (Parent (N))
       then
          Expand_Vax_Foreign_Return (N);
       end if;
index fc73795cd55b73e9b1feab3cc7871075679d14f1..fdca701cfb1b74c1ec16ff1af5054ac9427f15de 100644 (file)
@@ -47,9 +47,9 @@ package Exp_VFpt is
 
    procedure Expand_Vax_Foreign_Return (N : Node_Id);
    --  The node N is a call to a foreign function that returns a Vax float
-   --  value in a floating point register.
-   --  Yes, but what does it do??? there is no hint anywhere in the spec or
-   --  body comments, need full spec here ???
+   --  value in a floating point register. Wraps the call in an asm stub
+   --  that moves the return value to an integer location on Alpha/VMS,
+   --  noop everywhere else.
 
    procedure Expand_Vax_Real_Literal (N : Node_Id);
    --  The node N is a real literal node where the type is a Vax floating-point