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]

[tree-ssa] More optimization tests


It just never ends....

        * gcc.dg/tree-ssa/20030814-6.c: New test.
        * gcc.dg/tree-ssa/20030814-7.c: New test.
 

Index: 20030814-6.c
===================================================================
RCS file: 20030814-6.c
diff -N 20030814-6.c
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- 20030814-6.c	15 Aug 2003 16:03:56 -0000
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-ssa" } */
+ 
+ union tree_node;
+ typedef union tree_node *tree;
+ enum tree_code
+ {
+   LAST_AND_UNUSED_TREE_CODE
+ };
+ extern const char tree_code_type[];
+ struct tree_common
+ {
+   enum tree_code code:8;
+ };
+ struct tree_type
+ {
+   double alias_set;
+ };
+ union tree_node
+ {
+   struct tree_common common;
+   struct tree_type type;
+ };
+ long
+ foo (t, set)
+      tree t;
+      double set;
+ {
+   if (tree_code_type[t->common.code] != 't')
+     abort ();
+ 
+   t->type.alias_set = set;
+ 
+   if (t->common.code == 42)
+     return 1;
+   else
+     return 0;
+ }
+ /* There should be precisely one load of common.code.  If there is
+    more than one, then the dominator optimizations failed.  */
+ /* { dg-final { scan-tree-dump-times "common.code" 1 "ssa"} } */
+ 
Index: 20030814-7.c
===================================================================
RCS file: 20030814-7.c
diff -N 20030814-7.c
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- 20030814-7.c	15 Aug 2003 16:03:56 -0000
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-ssa" } */
+ 
+ struct rtx_def;
+ typedef struct rtx_def *rtx;
+ struct rtvec_def;
+ typedef struct rtvec_def *rtvec;
+ union tree_node;
+ typedef union tree_node *tree;
+ struct tree_common
+ {
+   int code;
+ };
+ union tree_node
+ {
+   struct tree_common common;
+ };
+ extern tree current_function_decl;
+ struct cgraph_rtl_info
+ {
+   _Bool pure_function;
+ };
+ struct cgraph_rtl_info *cgraph_rtl_info (tree);
+ void
+ mark_constant_function (void)
+ {
+   rtx insn;
+   int nonlocal_memory_referenced;
+ 
+   if (current_function_decl->common.code != 42)
+     abort ();
+ 
+   cgraph_rtl_info (current_function_decl)->pure_function = 1;
+ }
+ 
+ /* current_function_decl should be loaded once into a temporary
+    and the temporary used as the argument to cgraph_rtl_info.
+    This if we find current_function_decl used as an argument, then
+    we have failed.  */
+ /* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "ssa"} 
} */




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