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