On 10/24/2016 09:35 AM, Prathamesh Kulkarni wrote:
On 24 October 2016 at 20:23, Jeff Law <l...@redhat.com> wrote:
On 10/24/2016 01:28 AM, Richard Biener wrote:
[ big snip ]



+
+  /* Update all statements in stmts.
+     if stmt is lhs = op1 TRUNC_DIV_EXPR op2, change to lhs =
REALPART_EXPR<divmod_tmp>
+     if stmt is lhs = op1 TRUNC_MOD_EXPR op2, change to lhs =
IMAGPART_EXPR<divmod_tmp>.  */

I'd just emit a copy from RES to the appropriate lhs operand just
after
the
divmod and delete the now unnecessary TRUNC_DIV_EXPR and
TRUNC_MOD_EXPR
statements.


That sounds like a good idea.

Um sorry, not sure if I understood this part.
For eg:
t1 = x / y;
t2 = x % y;

do we want to transform it to:
complex_tmp = DIVMOD (x, y);
div_tmp = REALPART_EXPR<complex_tmp>
mod_tmp = IMAGPART_EXPR<complex_tmp>


complex_tmp = DIVMOD (x, y)
t1 = REALPART_EXPR (complex_tmp)
t2 = IMAGPART_EXPR (compex_tmp)

Then remove the
t1 = x/y
t2 = x%y

 statements


OTOH implementation-wise that's more complicated.

If so, then I wouldn't bother.  I only mention it because I've found that
model is sometimes easier on the implementation side.  I don't consider it a
big deal.
Richard and Jeff,
Unless you have any further suggestions on the patch, should I
consider it approved (modulo formatting fixes) ?
I can confirm that the optab_libfunc() issue is solved at least for
the divmod transform with the patch to remove
optab functions for sdivmod_optab and udivmod_optab.
I think Richi has the most state on this series, so I'll let him chime in.

jeff

Reply via email to