summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-07 20:05:14 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-07 20:05:14 +0000
commit7948df32e1a6725b2a8b0c32b1de7167d4190400 (patch)
tree57a2412ddbafbe7c78a634ebf6e0b4c623253827
parent4d29239659e70a19e6b6d699da1ec22238392ecc (diff)
downloadppe42-gcc-7948df32e1a6725b2a8b0c32b1de7167d4190400.tar.gz
ppe42-gcc-7948df32e1a6725b2a8b0c32b1de7167d4190400.zip
* c-common.c (handle_mode_attribute): For ENUMERAL_TYPE, also copy
TYPE_MODE. * gcc.c-torture/execute/20050107-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93066 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-common.c1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20050107-1.c25
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aa0bbffcc3f..2979ebe0d60 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-07 Jakub Jelinek <jakub@redhat.com>
+
+ * c-common.c (handle_mode_attribute): For ENUMERAL_TYPE, also copy
+ TYPE_MODE.
+
2005-01-07 David Edelsohn <edelsohn@gnu.org>
PR target/13674
diff --git a/gcc/c-common.c b/gcc/c-common.c
index bb81a6f281b..a699cbcdc63 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -4341,6 +4341,7 @@ handle_mode_attribute (tree *node, tree name, tree args,
TYPE_MAX_VALUE (type) = TYPE_MAX_VALUE (typefm);
TYPE_SIZE (type) = TYPE_SIZE (typefm);
TYPE_SIZE_UNIT (type) = TYPE_SIZE_UNIT (typefm);
+ TYPE_MODE (type) = TYPE_MODE (typefm);
if (!TYPE_USER_ALIGN (type))
TYPE_ALIGN (type) = TYPE_ALIGN (typefm);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 46a2093794e..9d460080ac7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2005-01-07 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/20050107-1.c: New test.
+
2005-01-07 Nathan Sidwell <nathan@codesourcery.com>
PR c++/19298
diff --git a/gcc/testsuite/gcc.c-torture/execute/20050107-1.c b/gcc/testsuite/gcc.c-torture/execute/20050107-1.c
new file mode 100644
index 00000000000..903c54a25e6
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20050107-1.c
@@ -0,0 +1,25 @@
+typedef enum { C = 1, D = 2 } B;
+extern void abort (void);
+
+struct S
+{
+ B __attribute__ ((mode (byte))) a;
+ B __attribute__ ((mode (byte))) b;
+};
+
+void
+foo (struct S *x)
+{
+ if (x->a != C || x->b != D)
+ abort ();
+}
+
+int
+main (void)
+{
+ struct S s;
+ s.a = C;
+ s.b = D;
+ foo (&s);
+ return 0;
+}
OpenPOWER on IntegriCloud