[tree-ssa]: Pre-splitting causes cc1plus miscompilation

Daniel Berlin dberlin@dberlin.org
Thu Oct 30 19:15:00 GMT 2003


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"



More information about the Gcc mailing list