
On 1 October 2017 at 22:19, Antoine Pitrou <solipsis@pitrou.net> wrote:
2. We could reinterpret "optimize" as a bitfield instead of a regular integer, special casing the already defined values:
- all zero: no optimizations - sign bit set: negative -> use global settings - 0x0001: nodebug+noassert - 0x0002: nodebug+noassert+nodocstrings - 0x0004: nodebug - 0x0008: noassert - 0x0010: nodocstrings
Well, this is not really a bitfield, but a bitfield plus some irregular hardcoded values. Therefore I don't think it brings much in the way of discoverability / understandability.
That's why the 2-field struct for compiler flags was my first idea.
That said, perhaps it makes implementation easier on the C side...
Yep, the fact it would avoid requiring any ABI changes for the C API is the main reason I think redefining the semantics of the existing int parameter is worth considering. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia