This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, As reported by pr62631, case ivopts-lt-2.c is failed on sparc64. The root cause is shiftadd_cost calculated on sparc64 is huge which prevents gcc from choosing the wanted candidate. The problem with IVOPT is it always assumes that shiftadd_cost is smaller than the normal cost, while it's not true in this extreme case. This patch checks if the shiftadd_cost is smaller before returning it. The patch also cleans code indent in context. One question is left here. Why >100 cost is calculated for shiftadd on sparc64? In final assembly code, the computation is implemented by separated shift and add instructions. Probably sparc64 should return cost no larger than cost(shift)+cost(add) in the first place?. Bootstrap and tested on x86_64/cortex-m3, the case is fixed on sparc64 now. Is it OK? Thanks, bin 2014-09-04 Bin Cheng <bin.cheng@arm.com> * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Return cost calculated by get_shiftadd_cost only when it is smaller. Fix code indent.
Attachment:
pr62631-20140902.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |