From 0746af5e6219d9dabd84aa865a056e4e8ae27c3d Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sun, 26 May 2013 08:55:43 +0000 Subject: [PATCH] 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 --- gcc/ada/ChangeLog | 8 ++++++++ gcc/ada/gcc-interface/decl.c | 2 +- gcc/ada/gcc-interface/gigi.h | 5 +++-- gcc/ada/gcc-interface/utils.c | 7 ++++--- 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 2844de415ed..2b31a004dbd 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,11 @@ +2013-05-26 Eric Botcazou + + * 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 * gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 4a528b20d1d..2a6eb4dcb44 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 e2cc1466cab..a95b867eb8d 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 0906c0c319d..eb63257ec36 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 71dd8e56513..3f39a432696 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 -- 2.30.2