From 7771032e793152b7bb0ab1a9606e0d7383f8dcde Mon Sep 17 00:00:00 2001 From: Dave Brolley Date: Thu, 20 Aug 1998 10:29:22 +0000 Subject: [PATCH] stor-layout.c (layout_type): Compute TYPE_SIZE_UNIT correctly for arrays of bits. Thu Aug 20 13:15:11 1998 Dave Brolley * 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 --- gcc/ChangeLog | 6 ++++++ gcc/cpplib.c | 6 ++++++ gcc/stor-layout.c | 8 ++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4c159968997..16292f4ea3a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Thu Aug 20 13:15:11 1998 Dave Brolley + + * 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 * rs6000.c (rs6000_output_load_toc_table): Use ld for 64-bit. diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 5b1034935ff..b9ded523c1d 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 b44a411e9da..3c7cf23d7d3 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);