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] |
2011/10/4 Richard Henderson <rth@redhat.com>: > On 10/04/2011 08:42 AM, Joseph S. Myers wrote: >> On Tue, 4 Oct 2011, Ilya Tocar wrote: >> >>> Hi everyone, >>> >>> This patch fixes PR 50038 (redundant zero extensions) by modifying >>> implicit-zee pass >>> to also remove unneeded zero extensions from QImode to SImode. >> >> Hardcoding particular modes like this in the target-independent parts of >> the compiler is fundamentally ill-conceived. ?Right now it hardcodes the >> (SImode, DImode) pair. ?You're adding hardcoding of (QImode, SImode) as >> well. ?But really it should consider all pairs of (integer mode, wider >> integer mode), with the machine description (or target hooks) determining >> which pairs are relevant on a particular target. ?Changing it not to >> hardcode particular modes would be better than adding a second pair. >> > > That along with not hard-coding ZERO_EXTEND. > > Both MIPS and Alpha have much the same free operations, but with SIGN_EXTEND. > > I remember rejecting one iteration of this pass with this hard-coded, but the > pass was apparently approved by someone else without that being corrected. > > > r~ > Hello guys, Could you please look at my patch version? I tried to remove all unnecessary mode restrictions and cover SIGN_EXTEND case. I did not test this patch yet, just checked it worked on reproducer from PR50038. Thanks Ilya --- gcc/ * implicit-zee.c (ext_cand): New. (ext_cand_pool): Likewise. (add_ext_candidate): Likewise. (zee_init): Likewise. (zee_cleanup): Likewise. (combine_set_zero_extend): Get extend candidate as new parameter. Now handle sign extend cases and all modes. (transform_ifelse): Likewise. (merge_def_and_ze): Likewise. (combine_reaching_defs): Change parameter type. (zero_extend_info): Changed insn_list type. (add_removable_zero_extend): Relaxed mode and code filter. (find_removable_zero_extends): Changed return type. (find_and_remove_ze): Var type changes. (rest_of_handle_zee): Initialization and cleanup added.
Attachment:
PR50038.diff
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |