Issue 080112.3: FORM Reform Proposal 3: Implicit Flag Form
Background
One study showed that attributes with DW_FORM_flag contribute 2-5% of the
total size of the .debug_info section by requiring the flag to be explicitly
represented in the debug info.
This proposal adds a new form, DW_FORM_implicit_flag, which by its very
presence in the abbrev table entry, means that the flag is set -- it would
consume no bytes from the .debug_info section. This would allow the producer
a choice of using DW_FORM_flag in situations where it didn't want to create
a new abbreviation code, or using implicit_flag in a separate abbreviation code.
Proposal
In Section 7.5.4, "Attribute Encodings," replace the description of class
flag with the following:
flag
A flag may be represented explicitly as a single byte of
data (DW_FORM_flag), or implicitly (DW_FORM_implicit_flag).
In the first case, if the flag has the value zero, it
indicates the absence of the attribute; if the flag has
a non-zero value, it indicates the presence of the
attribute. In the second case, the attribute is considered
present, and no value is encoded the debugging information
entry itself.
In Figure 21, add the following row:
Form name Value Class
DW_FORM_implicit_flag 0x19 flag
--
Approved changing DW_FORM_implicit_flag to DW_FORM_flag_present.