From: Andrew MacLeod Date: Tue, 15 Sep 1998 11:03:03 +0000 (+0000) Subject: [multiple changes] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8a21007c9409ad2be041c05c304295ff449538b7;p=gcc.git [multiple changes] Tue Sep 15 13:53:59 EDT 1998 Andrew MacLeod * config/i960/i960.h (SLOW_BYTE_ACCESS): Change definition to 1. 1998-09-15 Andrew MacLeod * cp/search.c (expand_indirect_vtbls_init): Mark temporary stack slots as used to prevent conflicts with virtual function tables. From-SVN: r22424 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15ed91a80bd..05ded0c495c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Tue Sep 15 13:53:59 EDT 1998 Andrew MacLeod + + * config/i960/i960.h (SLOW_BYTE_ACCESS): Change definition to 1. + Tue Sep 15 09:59:01 1998 Mark Mitchell * integrate.c (copy_decl_list): Fix typo. diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h index b786d386e90..ab45f2bb91a 100644 --- a/gcc/config/i960/i960.h +++ b/gcc/config/i960/i960.h @@ -1109,9 +1109,10 @@ extern struct rtx_def *legitimize_address (); #define LOAD_EXTEND_OP(MODE) ZERO_EXTEND /* Nonzero if access to memory by bytes is no faster than for words. - Defining this results in worse code on the i960. */ + Value changed to 1 after reports of poor bitfield code with g++. + Indications are that code is usually as good, sometimes better. */ -#define SLOW_BYTE_ACCESS 0 +#define SLOW_BYTE_ACCESS 1 /* We assume that the store-condition-codes instructions store 0 for false and some other value for true. This is the value stored for true. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 08fc2def456..6fd77b1a162 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1998-09-15 Andrew MacLeod + + * search.c (expand_indirect_vtbls_init): Mark temporary stack slots + as used to prevent conflicts with virtual function tables. + 1998-09-14 Mark Mitchell * pt.c (check_specialization_scope): Fix spelling error. diff --git a/gcc/cp/search.c b/gcc/cp/search.c index c472bf04360..6de2d740557 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -2657,6 +2657,17 @@ expand_indirect_vtbls_init (binfo, true_exp, decl_ptr) { tree type = BINFO_TYPE (binfo); + /* This function executes during the finish_function() segment, + AFTER the auto variables and temporary stack space has been marked + unused...If space is needed for the virtual function tables, + some of them might fit within what the compiler now thinks + are available stack slots... These values are actually initialized at + the beginnning of the function, so when the automatics use their space, + they will overwrite the values that are placed here. Marking all + temporary space as unavailable prevents this from happening. */ + + mark_all_temps_used(); + if (TYPE_USES_VIRTUAL_BASECLASSES (type)) { rtx fixup_insns = NULL_RTX;