aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm/arm.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-12-16 01:25:34 +0000
committerJan Hubicka <jh@suse.cz>2004-12-16 01:25:34 +0000
commit6ef720e0c2fb8b849f1ba95033ad1fa1685d0753 (patch)
tree8a608ad61261d69c61f7f63aa864fbe49b973496 /gcc/config/arm/arm.c
parentad4a5f56f17933a8a51f242822aac4c15bcb9983 (diff)
* Merge from mainline (tree-profiling-merge-20041215)
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/tree-profiling-branch@92240 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/arm.c')
-rw-r--r--gcc/config/arm/arm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 9db8b793328..188ff329fc1 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -4398,6 +4398,15 @@ arm_xscale_rtx_costs (rtx x, int code, int outer_code, int *total)
+ (REG_OR_SUBREG_REG (XEXP (x, 1)) ? 0 : 4);
return true;
+ case COMPARE:
+ /* A COMPARE of a MULT is slow on XScale; the muls instruction
+ will stall until the multiplication is complete. */
+ if (GET_CODE (XEXP (x, 0)) == MULT)
+ *total = 4 + rtx_cost (XEXP (x, 0), code);
+ else
+ *total = arm_rtx_costs_1 (x, code, outer_code);
+ return true;
+
default:
*total = arm_rtx_costs_1 (x, code, outer_code);
return true;