This is the mail archive of the gcc@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]

Help running a SPARC/Ada test case?


Is there anyone out there who might have a SPARC environment with Ada
support who could run the attached Ada testcase on a version of gcc
patched with the attached patch?  I'd like to verify whether the test
behaves correctly when compiled at -O0, -O1, and -O2.  The expected
(correct) behavior is the following output:

a_value= 10 b_value= 20

Some context of what I'm trying to accomplish can be seen by looking at
the thread starting here:

  http://gcc.gnu.org/ml/gcc/2006-08/msg00389.html


My utmost gratitude to anyone who can help!

- Josh
Index: gcc/calls.c
===================================================================
--- gcc/calls.c	(revision 116236)
+++ gcc/calls.c	(working copy)
@@ -1985,9 +1985,8 @@
 	    /* For variable-sized objects, we must be called with a target
 	       specified.  If we were to allocate space on the stack here,
 	       we would have no way of knowing when to free it.  */
-	    rtx d = assign_temp (TREE_TYPE (exp), 1, 1, 1);
+	    rtx d = assign_temp (TREE_TYPE (exp), 0, 1, 1);
 
-	    mark_temp_addr_taken (d);
 	    structure_value_addr = XEXP (d, 0);
 	    target = 0;
 	  }
with Ada.Text_Io;

procedure Test_Func is
   type A_Int is new Integer range 1..10;
   type B_Int is new Integer range 11..20;
   type A_Array is array(1..5) of A_Int;
   type B_Array is array(1..5) of B_Int;

   procedure  Print_Values (A_Value  : in A_Int;
                            B_Value : in B_Int)  is
   begin
      Ada.Text_Io.Put_Line("a_value="  & Integer'Image(Integer(A_Value)) &
                           " b_value=" & Integer'Image(Integer(B_Value)));
   end Print_Values;

   function Get_A return A_Array is
      A : A_Array := (others => 10);
   begin
      return A;
   end Get_A;

   function Get_B return B_Array is
      B : B_Array := (others => 20);
   begin
      return B;
   end Get_B;

   J : Natural := 3;
begin

   Print_Values
     (A_Value =>Get_A(J), B_Value =>Get_B(J));
end Test_Func;


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