aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-10-29 18:36:21 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-10-29 18:36:21 +0000
commitff67c0a549cae6bdcb345c030853c3cadda5fb8c (patch)
tree66074bfc367fd3b42f0200b38e4283f1b85c1a8c /gcc
parentd8e94f7997cfb8a83fe5e7efec9dc34153f327ec (diff)
downloadgcc-ff67c0a549cae6bdcb345c030853c3cadda5fb8c.zip
gcc-ff67c0a549cae6bdcb345c030853c3cadda5fb8c.tar.gz
gcc-ff67c0a549cae6bdcb345c030853c3cadda5fb8c.tar.bz2
decl.c (make_type_from_size): Do not create integer types with precision 0.
* gcc-interface/decl.c (make_type_from_size) <INTEGER_TYPE>: Do not create integer types with precision 0. From-SVN: r153722
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/decl.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/pack14.adb15
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f92adbc..fb7e4b7 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2009-10-29 Eric Botcazou <ebotcazou@adacore.com>
+ * gcc-interface/decl.c (make_type_from_size) <INTEGER_TYPE>: Do not
+ create integer types with precision 0.
+
+2009-10-29 Eric Botcazou <ebotcazou@adacore.com>
+
* gcc-interface/decl.c (array_type_has_nonaliased_component): Swap
parameters and rewrite comments. For a derived type, return the
setting of its parent type.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index cd13e21..c4d5e26 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -7737,6 +7737,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));
+ /* Integer types with precision 0 are forbidden. */
+ if (size == 0)
+ size = 1;
+
/* 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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2617493..044dd74 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2009-10-29 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/pack14.adb: New test.
+
2009-10-29 David Daney <ddaney@caviumnetworks.com>
* gcc.target/mips/mips.exp (mips_option_groups): Add
diff --git a/gcc/testsuite/gnat.dg/pack14.adb b/gcc/testsuite/gnat.dg/pack14.adb
new file mode 100644
index 0000000..c005ad6
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/pack14.adb
@@ -0,0 +1,15 @@
+-- { dg- do compile }
+
+procedure Pack14 is
+
+ subtype False_T is Boolean range False .. False;
+
+ type Rec is record
+ F : False_T;
+ end record;
+ pragma Pack (Rec);
+
+ A : Rec := (F => False);
+begin
+ null;
+end;