When did 'pragma optimize' become available?
Markus Trippelsdorf
markus@trippelsdorf.de
Thu Jul 16 05:48:00 GMT 2015
On 2015.07.15 at 23:37 -0400, Jeffrey Walton wrote:
> On Mon, Jul 13, 2015 at 3:14 AM, Markus Trippelsdorf
> <markus@trippelsdorf.de> wrote:
> > On 2015.07.12 at 20:32 -0400, Jeffrey Walton wrote:
> >> I've got a crash under GCC 4.9/x86_64 when using -O3. (The crash is
> >> related to an array that's 64-bit aligned, but GCC selects the vmovdqa
> >> instruction, which has 128-bit alignment requirements.)
> >>
> >> It was easy enough to back-off optimizations:
> >>
> >> #pragma GCC optimize push
> >> #pragma GCC optimize ("-O2")
> >>
> >> void xorbuf(byte *buf, const byte *mask, size_t count)
> >> {
> >> ...
> >> }
> >> #pragma GCC optimize pop
> >>
> >
> > This is a bad idea in general, because "pragma GCC optimize" is meant as
> > a compiler debugging aid only. It should _not_ be used in production
> > code.
> > Please fix the underlying issue instead (, or open a bug for it).
>
> We cleared the issue; thanks for the advice.
>
> I have one more question related to the use of '#pragma GCC optimize'.
> I have a zeroizer that must execute due to Certification and
> Accreditation (C&A) requirements. When the zeroizer is removed as a
> dead store, the compiler folks usually say, "but you asked for
> optimizations...".
>
> If we cannot use '#pragma GCC optimize' to turn off the optimizer for
> a function, then how do we tell the compiler to *not* remove the code?
It is hard to tell without seeing the code. But see noclone, noinline
entries at:
http://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
--
Markus
More information about the Gcc-help
mailing list