Re: Optimising away memset() calls?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/10/14 12:07, Florian Weimer wrote:
On 10/10/2014 11:20 AM, Andrew Haley wrote:
On 09/10/14 21:52, Ángel González wrote:

The compiler would need to know that memset_s is special (either
intrinsically or thorugh eg. function attributes). Either way, IMHO
an advanced knowledge allowing to optimize it out would be a
violation of K.3.7.4.1.

It would be a perverse thing to do and goes against intent, but we
again fall into the problem of defining an access.  But this is
irrelevant anyway: even if a key is stored in an array X in the source
code and the array X is later wiped with memset_s(), there is
absolutely nothing to force the compiler to use X during the
computation: it may well store the key somewhere else altogether.

It's not even that hard to come up with an example where calling memset_s causes the creation of another copy which is the only one which is being cleared:

Actually it's use_key() what produces the copy by getting struct key by value. It's just that in the first case gcc is smart enough to notice key isn't used later and gives its own version to the function. If you compile with -O0 you get the copy in both without_clear() and with_clear()





[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux