* gcc-interface/gigi.h (make_aligning_type): Adjust prototype.
* gcc-interface/utils.c (make_aligning_type): Take GNAT_NODE parameter
for the position of the associated TYPE_DECL.
* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to above.
* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
From-SVN: r199337
+2013-05-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/gigi.h (make_aligning_type): Adjust prototype.
+ * gcc-interface/utils.c (make_aligning_type): Take GNAT_NODE parameter
+ for the position of the associated TYPE_DECL.
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to above.
+ * gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
+
2013-05-26 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely
tree gnu_new_type
= make_aligning_type (gnu_type, TYPE_ALIGN (gnu_type),
TYPE_SIZE_UNIT (gnu_type),
- BIGGEST_ALIGNMENT, 0);
+ BIGGEST_ALIGNMENT, 0, gnat_entity);
tree gnu_new_var
= create_var_decl (create_concat_name (gnat_entity, "ALIGN"),
NULL_TREE, gnu_new_type, NULL_TREE, false,
/* Create a record type that contains a SIZE bytes long field of TYPE with a
starting bit position so that it is aligned to ALIGN bits, and leaving at
least ROOM bytes free before the field. BASE_ALIGN is the alignment the
- record is guaranteed to get. */
+ record is guaranteed to get. GNAT_NODE is used for the position of the
+ associated TYPE_DECL. */
extern tree make_aligning_type (tree type, unsigned int align, tree size,
- unsigned int base_align, int room);
+ unsigned int base_align, int room, Node_Id);
/* TYPE is a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE that is being used
as the field type of a packed record if IN_RECORD is true, or as the
/* Create a record type that contains a SIZE bytes long field of TYPE with a
starting bit position so that it is aligned to ALIGN bits, and leaving at
least ROOM bytes free before the field. BASE_ALIGN is the alignment the
- record is guaranteed to get. */
+ record is guaranteed to get. GNAT_NODE is used for the position of the
+ associated TYPE_DECL. */
tree
make_aligning_type (tree type, unsigned int align, tree size,
- unsigned int base_align, int room)
+ unsigned int base_align, int room, Node_Id gnat_node)
{
/* We will be crafting a record type with one field at a position set to be
the next multiple of ALIGN past record'address + room bytes. We use a
/* Declare it now since it will never be declared otherwise. This is
necessary to ensure that its subtrees are properly marked. */
- create_type_decl (name, record_type, NULL, true, false, Empty);
+ create_type_decl (name, record_type, NULL, true, false, gnat_node);
return record_type;
}
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2012, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2013, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
= ((data_align > system_allocator_alignment)
? make_aligning_type (data_type, data_align, data_size,
system_allocator_alignment,
- POINTER_SIZE / BITS_PER_UNIT)
+ POINTER_SIZE / BITS_PER_UNIT,
+ gnat_node)
: NULL_TREE);
tree size_to_malloc