aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2003-02-11 20:58:36 +0000
committerDale Johannesen <dalej@gcc.gnu.org>2003-02-11 20:58:36 +0000
commitd58f65843b7c7c21dd75e49796dcf1c90be591b6 (patch)
treee20744d483f230ed0c8a33985ff23bed25d686b9
parent668ec0830302d6b3a27c4cd2801d275cefbd7f31 (diff)
downloadgcc-d58f65843b7c7c21dd75e49796dcf1c90be591b6.zip
gcc-d58f65843b7c7c21dd75e49796dcf1c90be591b6.tar.gz
gcc-d58f65843b7c7c21dd75e49796dcf1c90be591b6.tar.bz2
ra-build.c (compare_and_free_webs): Relax checking.
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/darwin.h5
-rw-r--r--gcc/ra-build.c14
3 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4cbfcb6..e87383a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index b3468f2..9fceb6a 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -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. */
diff --git a/gcc/ra-build.c b/gcc/ra-build.c
index 91bc014..4448065 100644
--- a/gcc/ra-build.c
+++ b/gcc/ra-build.c
@@ -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)
{