diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2008-11-16 10:05:22 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2008-11-16 10:05:22 +0000 |
commit | e66e5d9e4079b7a44fcdd963838218812cfb534e (patch) | |
tree | d8c96659ac7d261f1e86e0fb1811560ece332a9e /gcc/ada/gcc-interface | |
parent | 4c533e5afee14d141caa6da2774857d6a65177c2 (diff) | |
download | gcc-e66e5d9e4079b7a44fcdd963838218812cfb534e.zip gcc-e66e5d9e4079b7a44fcdd963838218812cfb534e.tar.gz gcc-e66e5d9e4079b7a44fcdd963838218812cfb534e.tar.bz2 |
re PR ada/38127 (ACATS cd1c04e fails on sparc, hppa)
PR ada/38127
* gcc-interface/decl.c (make_type_from_size): Do not special-case
boolean types.
* gcc-interface/targtyps.c: Tweak comment.
From-SVN: r141913
Diffstat (limited to 'gcc/ada/gcc-interface')
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 20 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/targtyps.c | 9 |
2 files changed, 8 insertions, 21 deletions
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 3266e6d..35fdb0c 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -7184,7 +7184,7 @@ static tree make_type_from_size (tree type, tree size_tree, bool for_biased) { unsigned HOST_WIDE_INT size; - bool biased_p, boolean_p; + bool biased_p; tree new_type; /* If size indicates an error, just return TYPE to avoid propagating @@ -7202,19 +7202,10 @@ make_type_from_size (tree type, tree size_tree, bool for_biased) biased_p = (TREE_CODE (type) == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type)); - boolean_p = (TREE_CODE (type) == BOOLEAN_TYPE - || (TREE_CODE (type) == INTEGER_TYPE - && TREE_TYPE (type) - && TREE_CODE (TREE_TYPE (type)) == BOOLEAN_TYPE)); - - if (boolean_p) - size = round_up_to_align (size, BITS_PER_UNIT); - /* Only do something if the type is not a packed array type and doesn't already have the proper size. */ if (TYPE_PACKED_ARRAY_TYPE_P (type) - || (biased_p == for_biased && TYPE_PRECISION (type) == size) - || (boolean_p && compare_tree_int (TYPE_SIZE (type), size) == 0)) + || (TYPE_PRECISION (type) == size && biased_p == for_biased)) break; biased_p |= for_biased; @@ -7224,18 +7215,13 @@ make_type_from_size (tree type, tree size_tree, bool for_biased) new_type = make_unsigned_type (size); else new_type = make_signed_type (size); - if (boolean_p) - TYPE_PRECISION (new_type) = 1; TREE_TYPE (new_type) = TREE_TYPE (type) ? TREE_TYPE (type) : type; TYPE_MIN_VALUE (new_type) = convert (TREE_TYPE (new_type), TYPE_MIN_VALUE (type)); TYPE_MAX_VALUE (new_type) = convert (TREE_TYPE (new_type), TYPE_MAX_VALUE (type)); TYPE_BIASED_REPRESENTATION_P (new_type) = biased_p; - if (boolean_p) - TYPE_RM_SIZE_NUM (new_type) = bitsize_int (1); - else - TYPE_RM_SIZE_NUM (new_type) = bitsize_int (size); + TYPE_RM_SIZE_NUM (new_type) = bitsize_int (size); return new_type; case RECORD_TYPE: diff --git a/gcc/ada/gcc-interface/targtyps.c b/gcc/ada/gcc-interface/targtyps.c index c4e3299..91572be 100644 --- a/gcc/ada/gcc-interface/targtyps.c +++ b/gcc/ada/gcc-interface/targtyps.c @@ -6,7 +6,7 @@ * * * Body * * * - * Copyright (C) 1992-2007, Free Software Foundation, Inc. * + * Copyright (C) 1992-2008, 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- * @@ -164,12 +164,13 @@ get_target_maximum_default_alignment (void) Stricter alignment requests trigger gigi's aligning_type circuitry for objects allocated by the default allocator. */ +/* ??? Need a way to get info about __gnat_malloc from here (whether it is + handy and what alignment it honors). In the meantime, resort to malloc + considerations only. */ + Pos get_target_default_allocator_alignment (void) { - /* ??? Need a way to get info about __gnat_malloc from here (whether - it is handy and what alignment it honors). */ - return MALLOC_ABI_ALIGNMENT / BITS_PER_UNIT; } |