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] |
This patch is the main bulk of this submission. It modifies the compare combining part of try_combine(), adding a call of CANONICALIZE_COMPARISON into the entire logic. Also, instead of testing for XEXP(SET_SRC(PATTERN(i3)),1) == const0_rtx at the top, it now allows CONST_INT_P(XEXP(SET_SRC(PATTERN(i3)),1)), tries to adjust it by simplify_compare_const() from the last patch, and then tests if op1 == const0_rtx. This is a small improvement in some cases. (if you remove the call to simplify_compare_const(), and if CANONICALIZE_COMPARISON is not defined for the target, then this entire patch should be an 'idempotent patch', nothing should be changed to the effective combine results) One issue that I would like to RFC, is the use of CANONICALIZE_COMPARISON here; I'm afraid I might be abusing it. Since added_sets_2 is set here, the value of i2src/op0 is needed afterwards. This might not be conformant to the description of CANONICALIZE_COMPARISON in the internals manual, which doesn't say it can't trash op0 under arbitrary conditions while only preserving the comparison result. OTOH, I don't see another suitable macro/hook (with a close enough meaning), and the current definitions of CANONICALIZE_COMPARISON across the targets do not seem to clash with my use here. Does this macro use look okay, or does this justify creating a new one? Thanks, Chung-Lin
Attachment:
2-try_combine.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |