public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 @ 2011-01-20 16:12 hjl.tools at gmail dot com 2011-01-20 20:04 ` [Bug middle-end/47379] " pinskia at gcc dot gnu.org ` (4 more replies) 0 siblings, 5 replies; 6+ messages in thread From: hjl.tools at gmail dot com @ 2011-01-20 16:12 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47379 Summary: fwprop1 generates bad codes for x32 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned@gcc.gnu.org ReportedBy: hjl.tools@gmail.com On x32 branch, for --- typedef unsigned IPos; typedef unsigned char uch; extern uch window[]; unsigned max_chain_length; unsigned strstart; int longest_match(IPos cur_match, int len, int best_len) { unsigned chain_length = max_chain_length; register uch *scan = window + strstart; register uch *match; register uch scan_end1 = scan[best_len-1]; register uch scan_end = scan[best_len]; do { ; match = window + cur_match; if (match[best_len] != scan_end || match[best_len-1] != scan_end1 || *match != *scan || *++match != scan[1]) continue; best_len = len; } while ( --chain_length != 0); return best_len; } --- compiled with -mx32 -O, fwprop1 pass turns: (insn 14 13 15 2 (parallel [ (set (reg/f:SI 86) (plus:SI (reg:SI 63 [ strstart.0 ]) (symbol_ref:SI ("window") [flags 0x40] <var_decl 0x7f7a44198000 window>))) (clobber (reg:CC 17 flags)) ]) x.i:9 253 {*addsi_1} (nil)) (insn 15 14 16 2 (set (reg/v/f:DI 64 [ scan ]) (zero_extend:DI (reg/f:SI 86))) x.i:9 115 {*zero_extendsidi2_rex64} (nil)) (insn 16 15 17 2 (set (reg:SI 65 [ best_len.1 ]) (reg/v:SI 85 [ best_len ])) x.i:11 64 {*movsi_internal} (nil)) (insn 17 16 18 2 (parallel [ (set (reg:SI 89) (plus:SI (reg/v:SI 85 [ best_len ]) (subreg/s/u:SI (reg/v/f:DI 64 [ scan ]) 0))) (clobber (reg:CC 17 flags)) ]) x.i:11 253 {*addsi_1} (nil)) into (insn 14 13 15 2 (parallel [ (set (reg/f:SI 86) (plus:SI (reg:SI 63 [ strstart.0 ]) (symbol_ref:SI ("window") [flags 0x40] <var_decl 0x7f7a44198000 window>))) (clobber (reg:CC 17 flags)) ]) x.i:9 253 {*addsi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) (insn 15 14 17 2 (set (reg/v/f:DI 64 [ scan ]) (zero_extend:DI (reg/f:SI 86))) x.i:9 115 {*zero_extendsidi2_rex64} (expr_list:REG_DEAD (reg/f:SI 86) (nil))) (insn 17 15 18 2 (parallel [ (set (reg:SI 89) (plus:SI (reg/v:SI 85 [ best_len ]) (reg/f:SI 86))) (clobber (reg:CC 17 flags)) ]) x.i:11 253 {*addsi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) with In insn 17, replacing (subreg/s/u:SI (reg/v/f:DI 64 [ scan ]) 0) with (reg/f:SI 86) Changed insn 17 deferring rescan insn with uid = 17. deferring rescan insn with uid = 17. For x32, (subreg/s/u:SI (reg/v/f:DI 64 [ scan ]) 0) is free while (reg/f:SI 86) is an extra register. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/47379] fwprop1 generates bad codes for x32 2011-01-20 16:12 [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 hjl.tools at gmail dot com @ 2011-01-20 20:04 ` pinskia at gcc dot gnu.org 2011-01-21 0:07 ` hjl.tools at gmail dot com ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: pinskia at gcc dot gnu.org @ 2011-01-20 20:04 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47379 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu.org --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-01-20 19:36:25 UTC --- I saw something like this on MIPS64-linux recently too where fwprop1 would prop into the subreg when it should only do it if it was used once rather than one than once. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/47379] fwprop1 generates bad codes for x32 2011-01-20 16:12 [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 hjl.tools at gmail dot com 2011-01-20 20:04 ` [Bug middle-end/47379] " pinskia at gcc dot gnu.org @ 2011-01-21 0:07 ` hjl.tools at gmail dot com 2011-01-26 16:41 ` hjl.tools at gmail dot com ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: hjl.tools at gmail dot com @ 2011-01-21 0:07 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47379 --- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> 2011-01-20 23:28:32 UTC --- When fwprop props subreg, it should check 1. If inner register is dead after use. 2. If subreg is used in multi-word operations. 3. If subreg is a paradoxical subreg. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/47379] fwprop1 generates bad codes for x32 2011-01-20 16:12 [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 hjl.tools at gmail dot com 2011-01-20 20:04 ` [Bug middle-end/47379] " pinskia at gcc dot gnu.org 2011-01-21 0:07 ` hjl.tools at gmail dot com @ 2011-01-26 16:41 ` hjl.tools at gmail dot com 2012-02-02 8:50 ` [Bug rtl-optimization/47379] fwprop1 generates bad codes for x86-64 pinskia at gcc dot gnu.org 2012-02-02 18:11 ` hjl.tools at gmail dot com 4 siblings, 0 replies; 6+ messages in thread From: hjl.tools at gmail dot com @ 2011-01-26 16:41 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47379 H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amodra at gmail dot com, | |ubizjak at gmail dot com --- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2011-01-26 15:39:05 UTC --- This regression may be introduced by revision 151022: http://gcc.gnu.org/ml/gcc-cvs/2009-08/msg00704.html Propagate zero extended register is bad for x86-64. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/47379] fwprop1 generates bad codes for x86-64 2011-01-20 16:12 [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 hjl.tools at gmail dot com ` (2 preceding siblings ...) 2011-01-26 16:41 ` hjl.tools at gmail dot com @ 2012-02-02 8:50 ` pinskia at gcc dot gnu.org 2012-02-02 18:11 ` hjl.tools at gmail dot com 4 siblings, 0 replies; 6+ messages in thread From: pinskia at gcc dot gnu.org @ 2012-02-02 8:50 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47379 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2012-02-02 Ever Confirmed|0 |1 --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-02-02 08:49:21 UTC --- Can you try after: 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com> PR rtl-optimization/42839 * fwprop.c (forward_propagate_subreg): Skip the SIGN/ZERO_EXTEND optimization if the source register is already extended. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/47379] fwprop1 generates bad codes for x86-64 2011-01-20 16:12 [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 hjl.tools at gmail dot com ` (3 preceding siblings ...) 2012-02-02 8:50 ` [Bug rtl-optimization/47379] fwprop1 generates bad codes for x86-64 pinskia at gcc dot gnu.org @ 2012-02-02 18:11 ` hjl.tools at gmail dot com 4 siblings, 0 replies; 6+ messages in thread From: hjl.tools at gmail dot com @ 2012-02-02 18:11 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47379 --- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> 2012-02-02 18:11:24 UTC --- (In reply to comment #4) > Can you try after: > 2011-12-19 Richard Sandiford <rdsandiford@googlemail.com> > > PR rtl-optimization/42839 > * fwprop.c (forward_propagate_subreg): Skip the SIGN/ZERO_EXTEND > optimization if the source register is already extended. GCC 4.7.0 20120131 still does it. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-02-02 18:11 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-01-20 16:12 [Bug middle-end/47379] New: fwprop1 generates bad codes for x32 hjl.tools at gmail dot com 2011-01-20 20:04 ` [Bug middle-end/47379] " pinskia at gcc dot gnu.org 2011-01-21 0:07 ` hjl.tools at gmail dot com 2011-01-26 16:41 ` hjl.tools at gmail dot com 2012-02-02 8:50 ` [Bug rtl-optimization/47379] fwprop1 generates bad codes for x86-64 pinskia at gcc dot gnu.org 2012-02-02 18:11 ` hjl.tools at gmail dot com
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).