Hi Richard,

Thanks very much for your review and comments.

>> Can you point me to which patterns exhibit this behavior?  

root(x)*root(y) as root(x*y)
expN(x)*expN(y) as expN(x+y)
pow(x,y)*pow(x,z) as pow(x,y+z)
x/expN(y) into x*expN(-y)

Long Double and Float variants FAIL with segmentation fault with these
patterns in match.pd file for AArch64.
However, most of these work as expected with X86_64.

I had those implemented as per the fold-const.c which can be found at:-
https://gcc.gnu.org/ml/gcc/2015-08/msg00021.html

>>  (mult (SQRT@1 @0) @1)

Sorry for the typo in there.
However, the current pattern does not generate the optimized pattern as 
expected.
x_2 = ABS_EXPR <x_1(D)>;
return x_2;

>> use (rdiv (POW @0 REAL_CST@1) @0)

It generates ICE with the above modification
internal compiler error: tree check: expected ssa_name, have var_decl in 
simplify_builtin_call, at tree-ssa-forwprop.c:1259

Also, can you please explain me the significance and use of ":s"
I could understand it a bit but still confused about its use in match.pd

Thanks,
Naveen

Reply via email to