diff options
author | Andrew MacLeod <amacleod@cygnus.com> | 1998-09-15 11:03:03 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 1998-09-15 11:03:03 +0000 |
commit | 8a21007c9409ad2be041c05c304295ff449538b7 (patch) | |
tree | b63550fc5f9120f016e20b4c8294e53e4f6ea914 | |
parent | 11d09c08aad4d0fd481f25aa2d5ab019c214b418 (diff) | |
download | gcc-8a21007c9409ad2be041c05c304295ff449538b7.zip gcc-8a21007c9409ad2be041c05c304295ff449538b7.tar.gz gcc-8a21007c9409ad2be041c05c304295ff449538b7.tar.bz2 |
[multiple changes]
Tue Sep 15 13:53:59 EDT 1998 Andrew MacLeod <amacleod@cygnus.com>
* config/i960/i960.h (SLOW_BYTE_ACCESS): Change definition to 1.
1998-09-15 Andrew MacLeod <amacleod@cygnus.com>
* cp/search.c (expand_indirect_vtbls_init): Mark temporary stack slots
as used to prevent conflicts with virtual function tables.
From-SVN: r22424
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/i960/i960.h | 5 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/search.c | 11 |
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 15ed91a..05ded0c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Tue Sep 15 13:53:59 EDT 1998 Andrew MacLeod <amacleod@cygnus.com> + + * config/i960/i960.h (SLOW_BYTE_ACCESS): Change definition to 1. + Tue Sep 15 09:59:01 1998 Mark Mitchell <mark@markmitchell.com> * integrate.c (copy_decl_list): Fix typo. diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h index b786d38..ab45f2b 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 08fc2de..6fd77b1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1998-09-15 Andrew MacLeod <amacleod@cygnus.com> + + * search.c (expand_indirect_vtbls_init): Mark temporary stack slots + as used to prevent conflicts with virtual function tables. + 1998-09-14 Mark Mitchell <mark@markmitchell.com> * pt.c (check_specialization_scope): Fix spelling error. diff --git a/gcc/cp/search.c b/gcc/cp/search.c index c472bf0..6de2d74 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; |