This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: When did 'pragma optimize' become available?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]