]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/25771 (ice in coalesce_abnormal_edges, at tree-outof-ssa...
authorDaniel Berlin <dberlin@dberlin.org>
Fri, 13 Jan 2006 16:00:13 +0000 (16:00 +0000)
committerDaniel Berlin <dberlin@gcc.gnu.org>
Fri, 13 Jan 2006 16:00:13 +0000 (16:00 +0000)
2006-01-13  Daniel Berlin  <dberlin@dberlin.org>

PR tree-optimization/25771
* tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
SSA_NAMES.

From-SVN: r109669

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-ssa/pr25771.C [new file with mode: 0644]
gcc/tree-ssa-pre.c

index 42e8a7a5ab2a6c835b69f54f79f50fc9d3de54fa..6d2d109752ad8b31bce19ac2983206a466b7e9c1 100644 (file)
@@ -1,3 +1,9 @@
+2006-01-13  Daniel Berlin  <dberlin@dberlin.org>
+
+       PR tree-optimization/25771
+       * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
+       SSA_NAMES.
+
 2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR tree-opt/24365
index 593db14ca5477f1d440e969256266805c4c6d18e..1a59f59c355c675a66f0a53417a04f6455c5dd15 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-13 Daniel Berlin  <dberlin@dberlin.org>
+
+       PR tree-optimization/25771
+       * g++.dg/tree-ssa/pr25771.C: New test
+
 2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR tree-opt/24365
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr25771.C b/gcc/testsuite/g++.dg/tree-ssa/pr25771.C
new file mode 100644 (file)
index 0000000..e9e5336
--- /dev/null
@@ -0,0 +1,32 @@
+int  ggggg();
+struct string {
+  static int _S_empty_rep_storage[];
+  void  _M_destroy();
+  char* _M_rep;
+  ~string()
+  {
+    if (_M_rep != (char*)&_S_empty_rep_storage )
+      if (ggggg() <= 0)
+        _M_destroy();
+  }
+};
+extern void SDL_FreeSurface(int surface);
+struct scoped_resource {
+  ~scoped_resource()  {
+    SDL_FreeSurface(1);
+  }
+};
+struct surface {
+  scoped_resource surface_;
+};
+struct button {
+  string help_text_;
+  string label_;
+  surface image_;
+};
+struct scrollbar {
+  string help_text_;
+  button uparrow_;
+};
+scrollbar a;
+
index bf3e5249b77bbe354940b0dad0a68a42bedcf079..ada654b17c1d1225616358c088c1434c4e6e0baa 100644 (file)
@@ -2768,6 +2768,9 @@ insert_extra_phis (basic_block block, basic_block dom)
              tree val = get_value_handle (name);
              tree temp;
 
+             if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name))
+               continue;
+
              if (!mergephitemp
                  || TREE_TYPE (name) != TREE_TYPE (mergephitemp))
                {