diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2013-05-26 08:55:43 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2013-05-26 08:55:43 +0000 |
commit | 0746af5e6219d9dabd84aa865a056e4e8ae27c3d (patch) | |
tree | 2ba96ffba3c3470089ec22f415de86bf5b32226d | |
parent | 3fd7a66fddefe6ea59a42fc1139f715d0e3bb72f (diff) | |
download | gcc-0746af5e6219d9dabd84aa865a056e4e8ae27c3d.zip gcc-0746af5e6219d9dabd84aa865a056e4e8ae27c3d.tar.gz gcc-0746af5e6219d9dabd84aa865a056e4e8ae27c3d.tar.bz2 |
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
-rw-r--r-- | gcc/ada/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 2 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/gigi.h | 5 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/utils.c | 7 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/utils2.c | 5 |
5 files changed, 19 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 2844de4..2b31a00 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,13 @@ 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 elaborate the full view of a type with a freeze node. * gcc-interface/trans.c (process_type): Add explicit predicate. diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 4a528b2..2a6eb4d 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -1368,7 +1368,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition) 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, diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h index e2cc146..a95b867 100644 --- a/gcc/ada/gcc-interface/gigi.h +++ b/gcc/ada/gcc-interface/gigi.h @@ -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 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 diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 0906c0c..eb63257 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -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 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 @@ -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 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; } diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c index 71dd8e5..3f39a43 100644 --- a/gcc/ada/gcc-interface/utils2.c +++ b/gcc/ada/gcc-interface/utils2.c @@ -6,7 +6,7 @@ * * * 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- * @@ -2101,7 +2101,8 @@ maybe_wrap_malloc (tree data_size, tree data_type, Node_Id gnat_node) = ((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 |