This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa]: Recent stmt_ann checking breaks SSAPRE
- From: Diego Novillo <dnovillo at redhat dot com>
- To: Daniel Berlin <dberlin at dberlin dot org>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: 01 Jul 2003 17:00:54 -0400
- Subject: Re: [tree-ssa]: Recent stmt_ann checking breaks SSAPRE
- Organization: Red Hat Canada
- References: <5195E2D9-ABFC-11D7-B789-000A95A34564@dberlin.org>
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 */