[Bug middle-end/106804] Poor codegen for selecting and incrementing value behind a reference

amonakov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Sep 2 07:18:05 GMT 2022


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

Alexander Monakov <amonakov at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amonakov at gcc dot gnu.org

--- Comment #8 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #7)
> In fact I'd say the reverse transformation is more profitable?

In the end it depends on the context. It's a trade-off between a conditional
branch and extra data dependencies feeding into the address of a store. If a
branch is perfectly predictable, it's preferable. Otherwise, if there's no
memory dependency via the store, you don't care about delaying it, making the
branchless version preferable if that reduces pipeline flushes. If there is a
dependency, it comes down to how often the branch mispredicts, I guess.

  ________________________________
 /                                \
| People who tinker with compilers |
| need __builtin_branchless_select |
 \                                /
  ================================
                                     \
                                      \
                                       \
                                        .--.
                                       |o_o |
                                       | ~  |
                                      //   \ \
                                     (|     | )
                                    /'\_   _/`\
                                    \___)=(___/


More information about the Gcc-bugs mailing list