https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86570
Bug ID: 86570 Summary: Conditional statement doesn't trigger sincos transform Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: prathamesh3492 at gcc dot gnu.org Target Milestone: --- For the following test-case: double f2(double x, double a, double b) { if (a == b) return __builtin_sin (a * x) + __builtin_cos (b * x); return 0; } Optimized dump with -O2 -ffast-math -funsafe-math-optimizations yields: f2 (double x, double a, double b) { double _1; double _2; double _3; double _4; double _5; double _9; <bb 2> [local count: 1073741825]: if (a_6(D) == b_7(D)) goto <bb 3>; [34.00%] else goto <bb 4>; [66.00%] <bb 3> [local count: 365072220]: _1 = a_6(D) * x_8(D); _2 = __builtin_sin (_1); _3 = b_7(D) * x_8(D); _4 = __builtin_cos (_3); _9 = _2 + _4; <bb 4> [local count: 1073741825]: # _5 = PHI <_9(3), 0.0(2)> return _5; } I assume the sincos transform would have been valid in the above case ? Similarly missed for the divmod transform. Thanks, Prathamesh