diff options
Diffstat (limited to 'gcc/java/lang.c')
-rw-r--r-- | gcc/java/lang.c | 9 |
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 |