aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Brolley <brolley@cygnus.com>1998-08-20 10:29:22 +0000
committerDave Brolley <brolley@gcc.gnu.org>1998-08-20 06:29:22 -0400
commit7771032e793152b7bb0ab1a9606e0d7383f8dcde (patch)
tree9ce1e3e1880ba47f3968473b011f4d1144753950
parentee712d650b2b85b90fea38107993dde469f9a708 (diff)
downloadgcc-7771032e793152b7bb0ab1a9606e0d7383f8dcde.zip
gcc-7771032e793152b7bb0ab1a9606e0d7383f8dcde.tar.gz
gcc-7771032e793152b7bb0ab1a9606e0d7383f8dcde.tar.bz2
stor-layout.c (layout_type): Compute TYPE_SIZE_UNIT correctly for arrays of bits.
Thu Aug 20 13:15:11 1998 Dave Brolley <brolley@cygnus.com> * stor-layout.c (layout_type): Compute TYPE_SIZE_UNIT correctly for arrays of bits. * cpplib.c (cpp_define): Handle macros with parameters. From-SVN: r21872
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cpplib.c6
-rw-r--r--gcc/stor-layout.c8
3 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4c15996..16292f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Thu Aug 20 13:15:11 1998 Dave Brolley <brolley@cygnus.com>
+
+ * stor-layout.c (layout_type): Compute TYPE_SIZE_UNIT correctly for
+ arrays of bits.
+ * cpplib.c (cpp_define): Handle macros with parameters.
+
Wed Aug 19 21:33:19 1998 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.c (rs6000_output_load_toc_table): Use ld for 64-bit.
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 5b10349..b9ded52 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -534,6 +534,12 @@ cpp_define (pfile, str)
}
while (is_idchar[*++p])
;
+ if (*p == '(') {
+ while (is_idchar[*++p] || *p == ',' || is_hor_space[*p])
+ ;
+ if (*p++ != ')')
+ p = (U_CHAR *) str; /* Error */
+ }
if (*p == 0)
{
buf = (U_CHAR *) alloca (p - buf + 4);
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index b44a411..3c7cf23 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -834,8 +834,12 @@ layout_type (type)
size directly, rather than do some division thing below.
This optimization helps Fortran assumed-size arrays
(where the size of the array is determined at runtime)
- substantially. */
- if (TYPE_SIZE_UNIT (element) != 0)
+ substantially.
+ Note that we can't do this in the case where the size of
+ the elements is one bit since TYPE_SIZE_UNIT cannot be
+ set correctly in that case. */
+ if (TYPE_SIZE_UNIT (element) != 0
+ && element_size != integer_one_node)
{
TYPE_SIZE_UNIT (type)
= size_binop (MULT_EXPR, TYPE_SIZE_UNIT (element), length);