Commit 0746af5e by Eric Botcazou Committed by Eric Botcazou

gigi.h (make_aligning_type): Adjust prototype.

	* 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
parent 3fd7a66f
2013-05-26 Eric Botcazou <ebotcazou@adacore.com> 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 * gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely
elaborate the full view of a type with a freeze node. elaborate the full view of a type with a freeze node.
* gcc-interface/trans.c (process_type): Add explicit predicate. * gcc-interface/trans.c (process_type): Add explicit predicate.
......
...@@ -1368,7 +1368,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) ...@@ -1368,7 +1368,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
tree gnu_new_type tree gnu_new_type
= make_aligning_type (gnu_type, TYPE_ALIGN (gnu_type), = make_aligning_type (gnu_type, TYPE_ALIGN (gnu_type),
TYPE_SIZE_UNIT (gnu_type), TYPE_SIZE_UNIT (gnu_type),
BIGGEST_ALIGNMENT, 0); BIGGEST_ALIGNMENT, 0, gnat_entity);
tree gnu_new_var tree gnu_new_var
= create_var_decl (create_concat_name (gnat_entity, "ALIGN"), = create_var_decl (create_concat_name (gnat_entity, "ALIGN"),
NULL_TREE, gnu_new_type, NULL_TREE, false, NULL_TREE, gnu_new_type, NULL_TREE, false,
......
...@@ -123,9 +123,10 @@ extern bool is_cplusplus_method (Entity_Id gnat_entity); ...@@ -123,9 +123,10 @@ extern bool is_cplusplus_method (Entity_Id gnat_entity);
/* Create a record type that contains a SIZE bytes long field of TYPE with a /* 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 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 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, 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 /* 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 as the field type of a packed record if IN_RECORD is true, or as the
......
...@@ -653,11 +653,12 @@ gnat_pushdecl (tree decl, Node_Id gnat_node) ...@@ -653,11 +653,12 @@ gnat_pushdecl (tree decl, Node_Id gnat_node)
/* Create a record type that contains a SIZE bytes long field of TYPE with a /* 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 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 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 tree
make_aligning_type (tree type, unsigned int align, tree size, 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 /* 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 the next multiple of ALIGN past record'address + room bytes. We use a
...@@ -739,7 +740,7 @@ make_aligning_type (tree type, unsigned int align, tree size, ...@@ -739,7 +740,7 @@ make_aligning_type (tree type, unsigned int align, tree size,
/* Declare it now since it will never be declared otherwise. This is /* Declare it now since it will never be declared otherwise. This is
necessary to ensure that its subtrees are properly marked. */ 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; return record_type;
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* * * *
* C Implementation File * * 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 * * 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- * * terms of the GNU General Public License as published by the Free Soft- *
...@@ -2101,7 +2101,8 @@ maybe_wrap_malloc (tree data_size, tree data_type, Node_Id gnat_node) ...@@ -2101,7 +2101,8 @@ maybe_wrap_malloc (tree data_size, tree data_type, Node_Id gnat_node)
= ((data_align > system_allocator_alignment) = ((data_align > system_allocator_alignment)
? make_aligning_type (data_type, data_align, data_size, ? make_aligning_type (data_type, data_align, data_size,
system_allocator_alignment, system_allocator_alignment,
POINTER_SIZE / BITS_PER_UNIT) POINTER_SIZE / BITS_PER_UNIT,
gnat_node)
: NULL_TREE); : NULL_TREE);
tree size_to_malloc tree size_to_malloc
......
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