aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew MacLeod <amacleod@cygnus.com>1998-09-15 11:03:03 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>1998-09-15 11:03:03 +0000
commit8a21007c9409ad2be041c05c304295ff449538b7 (patch)
treeb63550fc5f9120f016e20b4c8294e53e4f6ea914 /gcc
parent11d09c08aad4d0fd481f25aa2d5ab019c214b418 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/i960/i960.h5
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/search.c11
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;