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]

[PATCH] Some more testcases from fixed bugs


Applied to trunk.

Richard.

2009-04-03  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/2480
	PR tree-optimization/23086
	* gcc.dg/tree-ssa/pr2480.c: New testcase.
	* gcc.dg/tree-ssa/pr23086.c: Likewise.

Index: gcc.dg/tree-ssa/pr2480.c
===================================================================
*** gcc.dg/tree-ssa/pr2480.c	(revision 0)
--- gcc.dg/tree-ssa/pr2480.c	(revision 0)
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ 
+ /* We have enough cascading at -O2 to cover the missed control-dependence
+    in SCCVN (which considers the link_error calls to clobber the structs).  */
+ 
+ struct example
+ {
+   char a;
+   int b;
+   char c;
+ } *ex1;
+ 
+ extern void link_error(void);
+ 
+ void
+ bar (void)
+ {
+   ex1->a = 1;
+   ex1->b = 2;
+   ex1->c = 3;
+ 
+   if (ex1->a != 1)
+     link_error ();
+   if (ex1->b != 2)
+     link_error ();
+   if (ex1->c != 3)
+     link_error ();
+ 
+ }
+ 
+ void
+ foo (struct example *ex2)
+ {
+   ex2->a = 1;
+   ex2->b = 2;
+   ex2->c = 3;
+ 
+   if (ex2->a != 1)
+     link_error ();
+   if (ex2->b != 2)
+     link_error ();
+   if (ex2->c != 3)
+     link_error ();
+ 
+ }
+ 
+ int main (void)
+ {
+   bar ();
+   foo (ex1);
+   return 0;
+ }
Index: gcc.dg/tree-ssa/pr23086.c
===================================================================
*** gcc.dg/tree-ssa/pr23086.c	(revision 0)
--- gcc.dg/tree-ssa/pr23086.c	(revision 0)
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do run } */
+ /* { dg-options "-O -fdump-tree-optimized" } */
+ 
+ extern void link_error (void);
+ extern void abort (void);
+ 
+ int *t;
+ int __attribute__((noinline)) g(int *a)
+ {
+   t = a;
+   *a = 2;
+ }
+ 
+ void __attribute__((noinline)) f(int *a)
+ {
+   int b;
+   b = 1;
+   g(&b);
+   b = 2;
+   *a = 1;
+   if (b != 2)
+     link_error();
+ }
+ 
+ int main(void)
+ {
+   int t;
+   f(&t);
+   if (t != 1)
+     abort ();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */
+ /* { dg-final { cleanup-tree-dump "optimized" } } */


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