public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH][mem-ref2] Add testcase for PR44468
@ 2010-06-08 12:55 Richard Guenther
  0 siblings, 0 replies; only message in thread
From: Richard Guenther @ 2010-06-08 12:55 UTC (permalink / raw)
  To: gcc-patches


As PR44468 is fixed on the mem-ref branch the following adds a testcase.

Committed.

Richard.

Index: ChangeLog.mem-ref2
===================================================================
*** ChangeLog.mem-ref2	(revision 160427)
--- ChangeLog.mem-ref2	(working copy)
***************
*** 1,5 ****
--- 1,10 ----
  2010-06-08  Richard Guenther  <rguenther@suse.de>
  
+ 	PR tree-optimization/44468
+ 	* gcc.c-torture/execute/pr44468.c: New testcase.
+ 
+ 2010-06-08  Richard Guenther  <rguenther@suse.de>
+ 
  	* tree-scalar-evolution.c (follow_ssa_edge_expr): Handle
  	&MEM[ptr + CST] similar to POINTER_PLUS_EXPR.
  	* tree-data-ref.c (dr_analyze_innermost): Handle MEM_REF.
Index: testsuite/gcc.c-torture/execute/pr44468.c
===================================================================
*** testsuite/gcc.c-torture/execute/pr44468.c	(revision 0)
--- testsuite/gcc.c-torture/execute/pr44468.c	(revision 0)
***************
*** 0 ****
--- 1,60 ----
+ #include <stddef.h>
+ 
+ struct S {
+   int i;
+   int j;
+ };
+ struct R {
+   int k;
+   struct S a;
+ };
+ struct Q {
+   float k;
+   struct S a;
+ };
+ struct Q s;
+ int __attribute__((noinline,noclone))
+ test1 (void *q)
+ {
+   struct S *b = (struct S *)((char *)q + sizeof (int));
+   s.a.i = 0;
+   b->i = 3;
+   return s.a.i;
+ }
+ int __attribute__((noinline,noclone))
+ test2 (void *q)
+ {
+   struct S *b = &((struct R *)q)->a;
+   s.a.i = 0;
+   b->i = 3;
+   return s.a.i;
+ }
+ int __attribute__((noinline,noclone))
+ test3 (void *q)
+ {
+   s.a.i = 0;
+   ((struct S *)((char *)q + sizeof (int)))->i = 3;
+   return s.a.i;
+ }
+ extern void abort (void);
+ int
+ main()
+ {
+   if (sizeof (float) != sizeof (int)
+       || offsetof (struct R, a) != sizeof (int)
+       || offsetof (struct Q, a) != sizeof (int))
+     return 0;
+   s.a.i = 1;
+   s.a.j = 2;
+   if (test1 ((void *)&s) != 3)
+     abort ();
+   s.a.i = 1;
+   s.a.j = 2;
+   if (test2 ((void *)&s) != 3)
+     abort ();
+   s.a.i = 1;
+   s.a.j = 2;
+   if (test3 ((void *)&s) != 3)
+     abort ();
+   return 0;
+ }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-06-08 12:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-08 12:55 [PATCH][mem-ref2] Add testcase for PR44468 Richard Guenther

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).