On 9/29/07, Richard Sandiford <[EMAIL PROTECTED]> wrote:

> Is this a known problem?  (I tried to find it in bugzilla, but couldn't)

I can reproduce it on x86_64 as well.  The 1/0 statement should not be
considered replaceable by out-of-ssa.  Could you file a bug for this?

This patch should fix it.  Still being tested:

2007-09-29  Diego Novillo  <[EMAIL PROTECTED]>

        * tree-ssa-ter.c (is_replaceable_p): Return false if STMT may
        throw an exception.

Index: tree-ssa-ter.c
===================================================================
--- tree-ssa-ter.c      (revision 128881)
+++ tree-ssa-ter.c      (working copy)
@@ -366,6 +366,10 @@ is_replaceable_p (tree stmt)
   if (TREE_CODE (stmt) != GIMPLE_MODIFY_STMT)
     return false;

+  /* If the statement may throw an exception, it cannot be replaced.  */
+  if (tree_could_throw_p (stmt))
+    return false;
+
   /* Punt if there is more than 1 def.  */
   def = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_DEF);
   if (!def)

Reply via email to