[Bug rtl-optimization/104950] GCC does not emit branchless code for load next to each other

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 16 09:08:44 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104950

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-03-16
            Summary|GCC does not emit           |GCC does not emit
                   |branchless code             |branchless code for load
                   |                            |next to each other
     Ever confirmed|0                           |1
           Severity|normal                      |enhancement

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, reduced testcase:
struct Node{
    int i, l,r;
};
int eval(int t, struct Node *a)  {
    return t == 0 ? a->r : a->l;
}

Note on aarch64, if we remove the i field, then ifcvt on the RTL level is able
to catch it but it does not do it for x86_64 (maybe a cost issue).


More information about the Gcc-bugs mailing list