This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] fix wrong-code bug for -fstrict-volatile-bitfields
> + bool packedp = false;
> +
> + if (TREE_CODE(to) == COMPONENT_REF
> + && (TYPE_PACKED (TREE_TYPE (TREE_OPERAND (to, 0)))
> + || (TREE_CODE (TREE_OPERAND (to, 1)) == FIELD_DECL
> + && DECL_PACKED (TREE_OPERAND (to, 1)))))
> + packedp = true;
>
> note that this is not a reliable way of determining if a field is packed
> (yes, the existing code is broken in the same way). I realize that you
> are only using this for diagnostic purposes, still something worth
> mentioning.
Indeed, ideally DECL_PACKED shouldn't be used outside stor-layout.c and
dwarf2out.c in the middle-end.
> I dislike passing around the packedp flag throughout the expander and to
> warn inside the expander. First, the flag has a name that can be confusing
> (it does not conservatively flag all packed accesses). Second, why don't
> you warn for this from inside the frontend when the bitfield access is
> generated? This way the diagnostic won't depend on optimization levels
> and you avoid uglifying the expander.
Seconded. If the -fstrict-volatile-bitfields support is still incomplete,
let's take this opportunity to clean it up. Testing DECL_PACKED or issuing
a warning from the RTL expander is to be avoided.
--
Eric Botcazou