[multiple changes]
authorAndrew MacLeod <amacleod@cygnus.com>
Tue, 15 Sep 1998 11:03:03 +0000 (11:03 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Tue, 15 Sep 1998 11:03:03 +0000 (11:03 +0000)
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

gcc/ChangeLog
gcc/config/i960/i960.h
gcc/cp/ChangeLog
gcc/cp/search.c

index 15ed91a80bd3668cc5f1be96b498eaa984592cc3..05ded0c495c29b4276b8d6954f4fd3966f0e9b0d 100644 (file)
@@ -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.
index b786d386e90872784092ca46871ffa66e4b0d1c9..ab45f2bb91a208b5a3d92aa30de8745a0a46dca4 100644 (file)
@@ -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.  */
index 08fc2def45652e0a57e159b04d019bce7cd60964..6fd77b1a162c3c3648e3c91407f58a07d2122805 100644 (file)
@@ -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.
index c472bf04360bdebe2d544c3ea2af4b33839e264c..6de2d740557106a0af0a32ba2e3638fad1008e78 100644 (file)
@@ -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;