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]

Re: [PATCH,TESTSUITE]Reduce malloc size used by ipa-sra-2.c


That's an interesting point !

AVR does not reject this. It never gets to see it. Error is:

error: size of array 'data' is too large

which appear to come from c-decl.c or perhaps c-common.c

The former has check for array size (in bytes) overflowing integer max+1. Which for AVR would be 32768 bytes. (this actually raises another issue where 'unsigned' size of 65536 bytes should be limit)

Andy


Richard Guenther wrote:
On Sun, Nov 1, 2009 at 11:40 AM, Andrew Hutchinson
<andrewhutchinson@cox.net> wrote:
Its the array size:

int data[1000000]

Yes, I could equally skip this.

But the array is not allocated - does AVR really reject a program just because there appears a possibly unused large type?

Richard.

Richard Guenther wrote:
On Sat, Oct 31, 2009 at 8:27 PM, Andrew Hutchinson
<andrewhutchinson@cox.net> wrote:

Thanks - patch was not as tested. Correction below.

This patch corrects a testcase where malloc size 1,000,000 is way too big
for target.
Size requested is reduce if stack size is below 16000.

The patch removes failures for AVR target.
Ok to commit?

I think for this kind of tests you should simply skip AVR.  Note that it
mallocs sizeof (struct small), which is small.  So I don't see why
you get a failure here anyway.

Richard.


2009-10-31 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>

*gcc.c-torture/execute/ipa-sra-2.c: Reduce allocation if stack is small.



Index: ipa-sra-2.c
===================================================================
--- ipa-sra-2.c    (revision 153773)
+++ ipa-sra-2.c    (working copy)
@@ -1,6 +1,11 @@
+#if defined(STACK_SIZE) && STACK_SIZE < 16000
+#define ARRAY_SIZE (STACK_SIZE)
+#else
+#define ARRAY_SIZE 1000000
+#endif
struct big
{
-  int data[1000000];
+  int data[ARRAY_SIZE];
};

struct small
@@ -23,7 +28,7 @@
{
 int r;
 if (fail)
-    r = agg->big.data[999999];
+    r = agg->big.data[ARRAY_SIZE - 1];
 else
  r = agg->small.data[0];
 return r;






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