This patch is to handle simplification of plusminus-mult-with-convert expression as ((T) X) +- ((T) Y), in which at least one of (X, Y) is result of multiplication. This is done in forwprop pass. We try to transform it to (T) (X +- Y), and resort to gimple-matcher to fold (X +- Y) instead of manually code pattern recognition.
Regards, Feng --- 2020-09-03 Feng Xue <f...@os.amperecomputing.com> gcc/ PR tree-optimization/94234 * tree-ssa-forwprop.c (simplify_plusminus_mult_with_convert): New function. (fwprop_ssa_val): Move it before its new caller. (pass_forwprop::execute): Add call to simplify_plusminus_mult_with_convert. gcc/testsuite/ PR tree-optimization/94234 * gcc.dg/pr94234-3.c: New test.