]> gcc.gnu.org Git - gcc.git/commitdiff
re PR tree-optimization/57330 (ICE: verify_gimple failed -O3 [tree-cfg.c:4792])
authorRichard Biener <rguenther@suse.de>
Tue, 21 May 2013 11:56:57 +0000 (11:56 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 21 May 2013 11:56:57 +0000 (11:56 +0000)
2013-05-21  Richard Biener  <rguenther@suse.de>

PR tree-optimization/57330
* cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Properly
preserve the call stmts fntype.

* gcc.dg/torture/pr57330.c: New testcase.

From-SVN: r199139

gcc/ChangeLog
gcc/cgraph.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr57330.c [new file with mode: 0644]

index 0a7c1e701c3d52102de00cacbd4ebb424464252b..bab6db43cf2c27d7b0226ac740916fc4330215d2 100644 (file)
@@ -1,3 +1,9 @@
+2013-05-21  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/57330
+       * cgraph.c (cgraph_redirect_edge_call_stmt_to_callee): Properly
+       preserve the call stmts fntype.
+
 2013-05-21  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/57303
index 899f65cb979cd5be741e76c1ac9e1958775669d9..2a2973bc6e444773d9633106cd2b6a57ae1032af 100644 (file)
@@ -1068,6 +1068,7 @@ cgraph_redirect_edge_call_stmt_to_callee (struct cgraph_edge *e)
        = gimple_call_copy_skip_args (e->call_stmt,
                                      e->callee->clone.combined_args_to_skip);
       gimple_call_set_fndecl (new_stmt, e->callee->symbol.decl);
+      gimple_call_set_fntype (new_stmt, gimple_call_fntype (e->call_stmt));
 
       if (gimple_vdef (new_stmt)
          && TREE_CODE (gimple_vdef (new_stmt)) == SSA_NAME)
index 0783914af15fbf8c37ad5847240ffab9f7dda9ec..1ba9007ac6c7c345c7b6d8a0465ce2803b8e2417 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-21  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/57330
+       * gcc.dg/torture/pr57330.c: New testcase.
+
 2013-05-21  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/57303
diff --git a/gcc/testsuite/gcc.dg/torture/pr57330.c b/gcc/testsuite/gcc.dg/torture/pr57330.c
new file mode 100644 (file)
index 0000000..3e6cbcb
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+
+void foo (int a)
+{}
+
+void *a;
+void bar ()
+{
+  void **( *b ) (  ) = (void**(*)()) foo;
+  a = b (0);
+}
This page took 0.077533 seconds and 5 git commands to generate.