aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/lang.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-01-14 00:14:04 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-01-13 23:14:04 +0000
commit4b589eab01091a180a717b5470c9097e8b294cbe (patch)
tree81a0f72673be5558699c49acd88285a2fa5ce0f6 /gcc/java/lang.c
parent25c3f7c8b94b62cc83adf1c24bb323ff1c46416b (diff)
downloadgcc-4b589eab01091a180a717b5470c9097e8b294cbe.zip
gcc-4b589eab01091a180a717b5470c9097e8b294cbe.tar.gz
gcc-4b589eab01091a180a717b5470c9097e8b294cbe.tar.bz2
lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost estimation.
* lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost estimation. * c-common.c (c_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost estimation. * expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ... * expr.h (MOVE_RATIO, CLEAR_RATIO): ... here. From-SVN: r75821
Diffstat (limited to 'gcc/java/lang.c')
-rw-r--r--gcc/java/lang.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index 2f68f7c..0fe68de 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -1134,13 +1134,14 @@ java_estimate_num_insns_1 (tree *tp, int *walk_subtrees, void *data)
case MODIFY_EXPR:
case CONSTRUCTOR:
{
- int size = int_size_in_bytes (TREE_TYPE (x));
+ HOST_WIDE_INT size;
- if (!size || size > MOVE_MAX_PIECES)
+ size = int_size_in_bytes (TREE_TYPE (x));
+
+ if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO)
*count += 10;
else
- *count += 2 * (size + MOVE_MAX - 1) / MOVE_MAX;
- return NULL;
+ *count += ((size + MOVE_MAX_PIECES - 1) / MOVE_MAX_PIECES);
}
break;
/* Few special cases of expensive operations. This is usefull