Boost logo

Boost Users :

Subject: Re: [Boost-users] [Off topic] Strict Aliasing white paper redux
From: Thomas Heller (thom.heller_at_[hidden])
Date: 2011-01-03 03:10:57


Václav Haisman wrote:

> Patrick Horgan wrote, On 3.1.2011 7:11:
>> Some time ago, I posted a link here to my (then new) white paper on
>> strict-aliasing. I wrote it because people keep posting, on this and on
>> other lists, questions that show a basic misunderstanding of aliasing and
>> what the rules in C and C++ standards on aliasing are intended to
>> communicate. I got some great feedback and have posted a new revision,
>> http://dbp-consulting.com/StrictAliasing.pdf. I'm hoping that people on
>> this
>> list will review the paper and tell me some more ways of improving it.
>> My intention is to write a paper that will make it so that I won't have
>> to keep
>> answering the same questions over and over again;) I'll just point
>> people at the paper.
> Nice paper. But I believe parts are wrong or misleading. Misleading is the
> part about -fno-strict-aliasing. It is GCC specific. The wrong part, I
> think, is the part suggesting union as a solution. As far as I know you
> can only read from union through a member that you have put into it. The
> fact that you can access different union member is also an extension,
> though one more common than just GCC specific.

I second that.
FWIW, i tried the memcpy version*. Surprise: It leads to the exact same
(assembly) code. I guess you should outline that, and not rely on that
extension.

*:
uint32_t
swaphalves(uint32_t a)
{
    uint16_t as16bit[2];

    memcpy(as16bit, &a, sizeof(a));

    uint16_t tmp;

    tmp = as16bit[0];
    as16bit[0] = as16bit[1];
    as16bit[1] = tmp;

    memcpy(&a, as16bit, sizeof(a));

    return a;
}


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net