Do you actually need the reload completed?  Couldn't this be legitimately split
before reload (and then parts of it DCE'd as necessary)?

Otherwise, the split condition does need "&&" as mentioned by Uros.

Oh, I forgot -- even if you can exclude reload_completed,
you'd then need to use "&& 1" to effectively copy the first
condition.

And *this* is why I hate rtl.  All these secret magic knobs.  Arghh...

The following patch still fixes the problem in the PR, but without reload_completed.

I am doing a full round of tests.

OK pending tests?

commit ee167c8a716799af9eb0e2275156061d76719dac
Author: Aldy Hernandez <al...@redhat.com>
Date:   Mon Mar 2 10:53:29 2015 -0800

        * config/i386/i386.md (*udivmod<mode>4_pow2): Remove
        reload_completed.

diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 8495284..8a80415 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -7343,7 +7343,7 @@
   "UINTVAL (operands[3]) - 2 < <MODE_SIZE> * BITS_PER_UNIT
    && (UINTVAL (operands[3]) & (UINTVAL (operands[3]) - 1)) == 0"
   "#"
-  "&& reload_completed"
+  "&& 1"
   [(set (match_dup 1) (match_dup 2))
    (parallel [(set (match_dup 0) (lshiftrt:<MODE> (match_dup 2) (match_dup 4)))
              (clobber (reg:CC FLAGS_REG))])

Reply via email to