On 2017-03-27 09:33:43 -0400, Tom Lane wrote: > Andres Freund <and...@anarazel.de> writes: > > Checking for this isn't entirely pretty - see my attached attempt at > > doing so. I considered hiding > > __attribute__((optimize("no-crossjumping"))) in execInterpExpr.c behind > > a macro (like PG_DISABLE_CROSSJUMPING), but I don't really think that > > makes things better. > > I think it would, primarily because if we find out that some other compiler > spells this differently, we could handle it totally within configure.
I'm unconvinced that we could sensibly map different compiler's options on the same option name - I'd be surprised if they would have a similar enough effect. > Isn't our practice to put __attribute__ at the end of a function > declaration or definition, not in the middle someplace? We could move it to the declaration - which doesn't seem like an improvement here, given that it's about optimization not API changes - but in definitions you can't move it after the function name: static Datum ExecInterpExpr(ExprState *state, ExprContext *econtext, bool *isnull) #ifdef HAVE_FUNCATTR_NO_CROSSJUMPING __attribute__((optimize("no-crossjumping"))) #endif : /home/andres/src/postgresql/src/backend/executor/execExprInterp.c:279:1: error: attributes should be specified before the declarator in a function definition Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers