expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* fold-const.c (size_int): Replace with
(size_int_wide).
(make_bit_field_ref): Use bitsize_int for bit position.
* stor-layout.c (sizetype): Delete.
(sizetype_tab, sbitsizetype, ubitsizetype): Declare.
(layout_record, layout_union, layout_type):
Use bitsize_int for bit size.
(set_sizetype): New function.
(make_signed_type, make_unsigned_type): Use it.
* c-decl.c (init_decl_processing): Likewise.
* tree.h (size_int): Don't delcare, #define.
(size_int_wide, sizetype_tab, sbitsize, ubitsize): Declare.
(set_sizetype): Declare.
(bitsize_int, size_int_2, BITS_PER_UNIT_LOG, sizetype, bitsizetype):
Define.
* c-typeck.c (c_sizeof, c_sizeof_nowarn, c_size_in_bytes):
Convert result to sizetype.
(really_start_incremental_init, push_init_level):
Set type of constructor_bit_index to sbitsizetype.
(push_init_level): Use unsigned arithmetic to determine padding.
(output_init_element): Likewise.
From-SVN: r17577
1998-02-01 06:47:59 -05:00
|
|
|
Right now there is no documentation for the GCC tree -> rtl interfaces
|
|
|
|
(or more generally the interfaces for adding new languages).
|
|
|
|
|
|
|
|
Such documentation would be of great benefit to the project. Until such
|
|
|
|
time as we can formally start documenting the interface this file will
|
|
|
|
serve as a repository for information on these interface and any incompatable
|
|
|
|
changes we've made.
|
|
|
|
|
1998-04-08 07:40:54 -04:00
|
|
|
Apr 1, 1998:
|
|
|
|
Front-ends must now define lang_print_xnode. It is safe for this
|
|
|
|
function to do nothing. See c-lang.c.
|
expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* fold-const.c (size_int): Replace with
(size_int_wide).
(make_bit_field_ref): Use bitsize_int for bit position.
* stor-layout.c (sizetype): Delete.
(sizetype_tab, sbitsizetype, ubitsizetype): Declare.
(layout_record, layout_union, layout_type):
Use bitsize_int for bit size.
(set_sizetype): New function.
(make_signed_type, make_unsigned_type): Use it.
* c-decl.c (init_decl_processing): Likewise.
* tree.h (size_int): Don't delcare, #define.
(size_int_wide, sizetype_tab, sbitsize, ubitsize): Declare.
(set_sizetype): Declare.
(bitsize_int, size_int_2, BITS_PER_UNIT_LOG, sizetype, bitsizetype):
Define.
* c-typeck.c (c_sizeof, c_sizeof_nowarn, c_size_in_bytes):
Convert result to sizetype.
(really_start_incremental_init, push_init_level):
Set type of constructor_bit_index to sbitsizetype.
(push_init_level): Use unsigned arithmetic to determine padding.
(output_init_element): Likewise.
From-SVN: r17577
1998-02-01 06:47:59 -05:00
|
|
|
|
|
|
|
Feb 1, 1998:
|
|
|
|
|
|
|
|
GCC used to store structure sizes & offsets to elements as bitsize
|
|
|
|
quantities. This causes problems because a structure can only be
|
|
|
|
(target memsize / 8) bytes long (this may effect arrays too). This
|
|
|
|
is particularly problematical on machines with small address spaces.
|
|
|
|
|
|
|
|
So:
|
|
|
|
|
|
|
|
All trees that represent sizes in bits should have a TREE_TYPE of
|
|
|
|
bitsizetype (rather than sizetype).
|
|
|
|
|
|
|
|
Accordingly, when such values are computed / initialized, care has to
|
|
|
|
be takes to use / compute the proper type.
|
|
|
|
|
|
|
|
When a size in bits is converted into a size in bytes, which is expressed
|
|
|
|
in trees, care should be taken to change the tree's type again to sizetype.
|
|
|
|
|
|
|
|
We've updated C, C++, Fortran & Objective-C to work with the new
|
|
|
|
scheme. Other languages will need to be updated accordingly.
|
|
|
|
Contact amylaar@cygnus.com for additional information.
|
|
|
|
|
1998-02-05 08:55:13 -05:00
|
|
|
?? 1997:
|
expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* expr.c (get_inner_reference): Use sbitsizetype for type sizes.
* fold-const.c (size_int): Replace with
(size_int_wide).
(make_bit_field_ref): Use bitsize_int for bit position.
* stor-layout.c (sizetype): Delete.
(sizetype_tab, sbitsizetype, ubitsizetype): Declare.
(layout_record, layout_union, layout_type):
Use bitsize_int for bit size.
(set_sizetype): New function.
(make_signed_type, make_unsigned_type): Use it.
* c-decl.c (init_decl_processing): Likewise.
* tree.h (size_int): Don't delcare, #define.
(size_int_wide, sizetype_tab, sbitsize, ubitsize): Declare.
(set_sizetype): Declare.
(bitsize_int, size_int_2, BITS_PER_UNIT_LOG, sizetype, bitsizetype):
Define.
* c-typeck.c (c_sizeof, c_sizeof_nowarn, c_size_in_bytes):
Convert result to sizetype.
(really_start_incremental_init, push_init_level):
Set type of constructor_bit_index to sbitsizetype.
(push_init_level): Use unsigned arithmetic to determine padding.
(output_init_element): Likewise.
From-SVN: r17577
1998-02-01 06:47:59 -05:00
|
|
|
|
1998-02-05 08:55:13 -05:00
|
|
|
In an effort to decrease cache thrashing and useless loads we've changed the
|
|
|
|
third argument to the DEFTREECODE macro to be a single char. This will
|
|
|
|
effect languages that defined their own tree codes (usually in a .def file).
|
|
|
|
|
|
|
|
Old way:
|
|
|
|
|
|
|
|
DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", "d", 0)
|
|
|
|
|
|
|
|
New way:
|
|
|
|
|
|
|
|
DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
|