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]

[patch tree-optimization]: Try to sink type-casts for binary and/or/xor operations


Hello,

this patch sink type conversions in forward-propagate for the following patterns:
- ((type) X) op ((type) Y): If X and Y have compatible types.
- ((type) X) op CST: If the conversion of (type) ((type-x) CST) == CST and X has integral type.
- CST op ((type) X): If the conversion of (type) ((type-x) CST) == CST and X has integral type.

Additionally it fixes another issue shown by this type-sinking in bswap detection. The bswap pattern matching algorithm goes for the first hit, and not tries to seek for best hit.  So we search here two times. First for di case (if present) and then for si mode case.

ChangeLog

2011-06-27  Kai Tietz  <ktietz@redhat.com>

        * tree-ssa-forwprop.c (simplify_bitwise_binary): Improve
        type sinking.
        * tree-ssa-math-opts.c (execute_optimize_bswap): Separate
        search for di/si mode patterns for finding widest match.

Bootstrapped and regression tested for x86_64-pc-linux-gnu.  Ok for apply?

Regards,
Kai

Attachment: sink_cast_bin.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]