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

[Ada] remove limitation in size of stack objects


Tested under i686-linux, committed on mainline.

The background here is that in GCC 2.8.1, sizes were computed in bits
by the back end in 32 bits and undetected overflows caused various
difficulties including ACVC test failures. So we installed a check
that no local array was longer than 16 megabytes. This solved the
problem at the expense of introducing a pretty serious restriction.
With GCC 3, the back end now handles things correctly, and so this
patch removes all remaining vestiges of the unnecessary length check
when using the GCC 3 back end. The following program should execute
to completion:

with Text_IO;
procedure Test_Stack is
   procedure Stack_Pumpe
     (n : Integer)
   is
      s : Integer := n * 1_048_576;
      x : String(1 .. s);
   begin
      x := (others => 'A');
      Text_IO.Put_Line(Integer'Image(n));
   end Stack_Pumpe;
begin
   for i in 1 .. 24 loop
      Stack_Pumpe(i);
   end loop;
end Test_Stack;

2005-03-17  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Array_Size_Check): Completely remove this for GCC
	3, since we now expect GCC 3 to do all the work.

Attachment: difs.4
Description: Text document


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