ra-build.c (compare_and_free_webs): Relax checking.
authorDale Johannesen <dalej@apple.com>
Tue, 11 Feb 2003 20:58:36 +0000 (20:58 +0000)
committerDale Johannesen <dalej@gcc.gnu.org>
Tue, 11 Feb 2003 20:58:36 +0000 (20:58 +0000)
2003-02-11  Dale Johannesen  <dalej@apple.com>
        * ra-build.c (compare_and_free_webs):  Relax checking.
        * config/rs6000/darwin.h (HOT_TEXT_SECTION_NAME):  Define.
        (UNLIKELY_EXECUTED_TEXT_SECTION_NAME):  Define.

From-SVN: r62724

gcc/ChangeLog
gcc/config/rs6000/darwin.h
gcc/ra-build.c

index 4cbfcb6eb0b462143fad2e6404d967a95fa4a0fe..e87383a2153ceceb5f4b470cbeedb4d6d17f9e31 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-11  Dale Johannesen  <dalej@apple.com>
+       * ra-build.c (compare_and_free_webs):  Relax checking.
+       * config/rs6000/darwin.h (HOT_TEXT_SECTION_NAME):  Define.
+       (UNLIKELY_EXECUTED_TEXT_SECTION_NAME):  Define.
+
 2003-02-11  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>
 
        PR optimization/9651
index b3468f2b66b69176a738befa6f3c71e92dd46435..9fceb6a6166c7151d47232667135f66d68d15ba4 100644 (file)
@@ -87,6 +87,11 @@ Boston, MA 02111-1307, USA.  */
   (RS6000_ALIGN (current_function_outgoing_args_size, 16)              \
    + (STACK_POINTER_OFFSET))
 
+/* These are used by -fbranch-probabilities */
+#define HOT_TEXT_SECTION_NAME "__TEXT,__text,regular,pure_instructions"
+#define UNLIKELY_EXECUTED_TEXT_SECTION_NAME \
+                              "__TEXT,__text2,regular,pure_instructions"
+
 /* Define cutoff for using external functions to save floating point.
    Currently on Darwin, always use inline stores.  */
 
index 91bc0145ba2d0460b176056bdcc79687c50d15e7..4448065de0d3eed6bc6e2e209d652ee218fbf247 100644 (file)
@@ -1719,17 +1719,21 @@ compare_and_free_webs (link)
       struct web *web1 = wl->web;
       struct web *web2 = ID2WEB (web1->id);
       if (web1->regno != web2->regno
-         || web1->crosses_call != web2->crosses_call
-         || web1->live_over_abnormal != web2->live_over_abnormal
          || web1->mode_changed != web2->mode_changed
          || !rtx_equal_p (web1->orig_x, web2->orig_x)
          || web1->type != web2->type
          /* Only compare num_defs/num_uses with non-hardreg webs.
             E.g. the number of uses of the framepointer changes due to
             inserting spill code.  */
-         || (web1->type != PRECOLORED &&
-             (web1->num_uses != web2->num_uses
-              || web1->num_defs != web2->num_defs)))
+         || (web1->type != PRECOLORED
+             && (web1->num_uses != web2->num_uses
+                 || web1->num_defs != web2->num_defs))
+         /* Similarly, if the framepointer was unreferenced originally
+            but we added spills, these fields may not match. */
+         || (web1->type != PRECOLORED
+               && web1->crosses_call != web2->crosses_call)
+         || (web1->type != PRECOLORED
+              && web1->live_over_abnormal != web2->live_over_abnormal))
        abort ();
       if (web1->type != PRECOLORED)
        {