public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/67962] New: Optimization opportunity with conditional swap
@ 2015-10-14 11:06 morwenn29 at hotmail dot fr
  2015-10-14 11:44 ` [Bug tree-optimization/67962] Optimization opportunity with conditional swap to two MIN/MAX in phiopt rguenth at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: morwenn29 at hotmail dot fr @ 2015-10-14 11:06 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 67962
           Summary: Optimization opportunity with conditional swap
           Product: gcc
           Version: 5.2.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: morwenn29 at hotmail dot fr
  Target Milestone: ---

If have some algorithms that use an extensive number of conditional swaps like
this (a few hundreds I guess):

    if (y < x)
    {
        std::swap(x, y);
    }

I thought that such a construct could be optimized by the compiler, but it
appears that the following function is more performant with integers most of
the time:

    void swap_if(int& x, int& y)
    {
        int dx = x;
        int dy = y;
        int tmp = x = std::min(dx, dy);
        y ^= dx ^ tmp;
    }

Would it be possible for g++ to recognize this kind of construct and optimize
it, at least for integer types? Reordering two values seems like something
common enough so that optimizing it could also benefit existing code.

As a side note, I hope that Bugzilla is he right place for this kind of
request. Sorry if it isn't.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-07-21  8:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-14 11:06 [Bug c++/67962] New: Optimization opportunity with conditional swap morwenn29 at hotmail dot fr
2015-10-14 11:44 ` [Bug tree-optimization/67962] Optimization opportunity with conditional swap to two MIN/MAX in phiopt rguenth at gcc dot gnu.org
2021-08-30  5:45 ` pinskia at gcc dot gnu.org
2023-07-21  8:26 ` rguenth at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).