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: [tree-ssa]: Recent stmt_ann checking breaks SSAPRE


On Tue, 2003-07-01 at 15:43, Daniel Berlin wrote:

> PS I've successfully bootstrapped with SSAPRE on on powerpc-darwin 
> (ignoring mudflap), and x86 (all languages but ADA).  Could you give it 
> a try on ia64 or some weirder platform while i work through regression 
> tests?
> 
I tested the attached patch.

     1. On alpha, we get warnings for uninitialized variables (that I
        guess are PRE'd away) on attribs.c and c-cppbuiltin.c.  I added
        -Wno-error for attribs.c, but we should find out why that's
        happening.
     2. On ppc64, genconditions enters an infinite loop.
     3. On ia64, gengtype fails to run.

Probably the best bet now is to build crosses for these and check the
testsuite.


Diego.
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/toplev.c,v
retrieving revision 1.654.2.57
diff -d -c -p -r1.654.2.57 toplev.c
*** toplev.c	13 Jun 2003 19:00:17 -0000	1.654.2.57
--- toplev.c	1 Jul 2003 20:52:15 -0000
*************** parse_options_and_default_flags (argc, a
*** 5114,5119 ****
--- 5114,5120 ----
        flag_tree_dce = 1;
        flag_tree_copyprop = 1;
        flag_tree_dom = 1;
+       flag_tree_pre = 1;
      }
  
    if (optimize >= 2)
Index: tree-dfa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-dfa.c,v
retrieving revision 1.1.4.125
diff -d -c -p -r1.1.4.125 tree-dfa.c
*** tree-dfa.c	1 Jul 2003 04:04:31 -0000	1.1.4.125
--- tree-dfa.c	1 Jul 2003 20:52:15 -0000
*************** create_stmt_ann (tree t)
*** 1065,1071 ****
    stmt_ann_t ann;
  
  #if defined ENABLE_CHECKING
!   if (!is_gimple_stmt (t)
        || (t->common.ann
  	  && t->common.ann->common.type != STMT_ANN))
      abort ();
--- 1065,1071 ----
    stmt_ann_t ann;
  
  #if defined ENABLE_CHECKING
!   if ((!is_gimple_stmt (t) && !is_essa_node (t))
        || (t->common.ann
  	  && t->common.ann->common.type != STMT_ANN))
      abort ();
Index: tree-flow-inline.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-flow-inline.h,v
retrieving revision 1.1.2.38
diff -d -c -p -r1.1.2.38 tree-flow-inline.h
*** tree-flow-inline.h	1 Jul 2003 04:04:31 -0000	1.1.2.38
--- tree-flow-inline.h	1 Jul 2003 20:52:15 -0000
*************** stmt_ann (t)
*** 52,58 ****
       tree t;
  {
  #if defined ENABLE_CHECKING
!   if (!is_gimple_stmt (t))
      abort ();
  #endif
  
--- 52,58 ----
       tree t;
  {
  #if defined ENABLE_CHECKING
!   if (!is_gimple_stmt (t) && !is_essa_node (t))
      abort ();
  #endif
  
Index: tree.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree.c,v
retrieving revision 1.263.2.38
diff -d -c -p -r1.263.2.38 tree.c
*** tree.c	1 Jul 2003 04:04:32 -0000	1.263.2.38
--- tree.c	1 Jul 2003 20:52:15 -0000
*************** body_is_empty (t)
*** 5378,5381 ****
--- 5378,5392 ----
    return true;
  }
  
+ bool
+ is_essa_node (t)
+   tree t;
+ {
+   if (TREE_CODE (t) == ELEFT_NODE || TREE_CODE (t) == EPHI_NODE
+       || TREE_CODE (t) == EUSE_NODE || TREE_CODE (t) == EEXIT_NODE
+       || TREE_CODE (t) == EKILL_NODE)
+     return true;
+   return false;
+  }
+ 
  #include "gt-tree.h"
Index: tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree.h,v
retrieving revision 1.342.2.73
diff -d -c -p -r1.342.2.73 tree.h
*** tree.h	1 Jul 2003 19:50:45 -0000	1.342.2.73
--- tree.h	1 Jul 2003 20:52:15 -0000
*************** extern tree get_callee_fndecl           
*** 2991,2996 ****
--- 2991,2997 ----
  extern void set_decl_assembler_name             PARAMS ((tree));
  extern int type_num_arguments                   PARAMS ((tree));
  extern tree lhd_unsave_expr_now		PARAMS ((tree));
+ extern bool is_essa_node                        PARAMS ((tree));
  
  
  /* In stmt.c */

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