Commit bb358f1c by Eric Botcazou Committed by Eric Botcazou

i386.c (ix86_handle_struct_attribute): Use the proper predicate to discriminate types.

	* config/i386/i386.c (ix86_handle_struct_attribute): Use the proper
	predicate to discriminate types.
ada/
	* gcc-interface/utils.c (finish_record_type): Force the traditional GCC
	layout for bitfields on the type if it is packed or has a representation
	clause and an alternate layout is available.

From-SVN: r186958
parent e6c69da0
2012-04-30 Eric Botcazou <ebotcazou@adacore.com>
* config/i386/i386.c (ix86_handle_struct_attribute): Use the proper
predicate to discriminate types.
2012-04-30 Manuel López-Ibáñez <manu@gcc.gnu.org>
* doc/invoke.texi (Wmissing-format-attribute): Document as an
......
2012-04-30 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (finish_record_type): Force the traditional GCC
layout for bitfields on the type if it is packed or has a representation
clause and an alternate layout is available.
2012-04-30 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/gigi.h (mark_out_of_scope): Delete.
(destroy_gnat_to_gnu): Declare.
(destroy_dummy_type): Likewise.
......
......@@ -721,6 +721,19 @@ finish_record_type (tree record_type, tree field_list, int rep_level,
case where there is a rep clause but all fields have errors and
no longer have a position. */
TYPE_SIZE (record_type) = 0;
/* Ensure we use the traditional GCC layout for bitfields when we need
to pack the record type or have a representation clause. The other
possible layout (Microsoft C compiler), if available, would prevent
efficient packing in almost all cases. */
#ifdef TARGET_MS_BITFIELD_LAYOUT
if (TARGET_MS_BITFIELD_LAYOUT && TYPE_PACKED (record_type))
decl_attributes (&record_type,
tree_cons (get_identifier ("gcc_struct"),
NULL_TREE, NULL_TREE),
ATTR_FLAG_TYPE_IN_PLACE);
#endif
layout_type (record_type);
}
......
......@@ -32465,8 +32465,7 @@ ix86_handle_struct_attribute (tree *node, tree name,
else
type = node;
if (!(type && (TREE_CODE (*type) == RECORD_TYPE
|| TREE_CODE (*type) == UNION_TYPE)))
if (!(type && RECORD_OR_UNION_TYPE_P (*type)))
{
warning (OPT_Wattributes, "%qE attribute ignored",
name);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment