This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[tree-ssa]: Pre-splitting causes cc1plus miscompilation
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: Andrew MacLeod <amacleod at redhat dot com>,Richard Henderson <rth at redhat dot com>
- Cc: gcc mailing list <gcc at gcc dot gnu dot org>
- Date: Thu, 30 Oct 2003 11:34:10 -0500
- Subject: [tree-ssa]: Pre-splitting causes cc1plus miscompilation
I'm still tracking down what exactly is going on, but this patch (which
disables PRE to take it out of the equation. There's a Makefile.in part
too to add -Wno-error temporarily to test this), causes us to
miscompile cc1plus, causing this segfault:
/compilerstuff/gcc-ssa-pre/gcc/build/i686-pc-linux-gnu/libstdc++-v3/
include/complex: In function `std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const
std::complex<_Tp>&) [with _Tp = float, _CharT = char, _Traits =
std::char_traits<char>]':
../../../../libstdc++-v3/src/complex_io.cc:41: instantiated from here
/compilerstuff/gcc-ssa-pre/gcc/build/i686-pc-linux-gnu/libstdc++-v3/
include/complex:393: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[4]: *** [complex_io.lo] Error 1
Just a heads up.
Index: tree-ssa-pre.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-pre.c,v
retrieving revision 1.1.4.95
diff -u -3 -p -r1.1.4.95 tree-ssa-pre.c
--- tree-ssa-pre.c 29 Oct 2003 21:23:20 -0000 1.1.4.95
+++ tree-ssa-pre.c 30 Oct 2003 16:31:58 -0000
@@ -3198,7 +3198,7 @@ pre_expression (struct expr_info *slot,
static void
split_critical_edges (void)
{
-#if 0
+#if 1
struct edge_list *el = create_edge_list ();
int i;
edge e;
@@ -3328,13 +3328,15 @@ collect_expressions (basic_block block,
void
tree_perform_ssapre (tree fndecl, enum tree_dump_index phase)
{
+#if 0
int currbbs;
varray_type bexprs;
size_t k;
int i;
sbitmap vars_to_rename;
-
+#endif
split_critical_edges ();
+#if 0
timevar_push (TV_TREE_PRE);
dump_file = dump_begin (phase, &dump_flags);
euse_node_pool = create_alloc_pool ("EUSE node pool",
@@ -3450,6 +3452,7 @@ tree_perform_ssapre (tree fndecl, enum t
rewrite_into_ssa (fndecl, vars_to_rename, TDI_pre);
sbitmap_free (vars_to_rename);
timevar_pop (TV_TREE_PRE);
+#endif
}
#include "gt-tree-ssa-pre.h"