aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2008-11-16 10:05:22 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2008-11-16 10:05:22 +0000
commite66e5d9e4079b7a44fcdd963838218812cfb534e (patch)
treed8c96659ac7d261f1e86e0fb1811560ece332a9e /gcc/ada/gcc-interface
parent4c533e5afee14d141caa6da2774857d6a65177c2 (diff)
downloadgcc-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.c20
-rw-r--r--gcc/ada/gcc-interface/targtyps.c9
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;
}