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]

Re: Fix PR34916, 35519 Combine (Dataflow merge regression.)


Please refer to PR35519 which contains a detailed explanation.

*http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35519*

If necessary, I can provide further clarification.

Anything is cheaper than the current bug but I could not figure out a cheaper way to solve issue.

best regards


Richard Guenther wrote:
On Tue, Mar 18, 2008 at 10:35 PM, Andy H <hutchinsonandy@aim.com> wrote:
This patch fixes combine bugs. Now cleaned up with Change log entry.

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34916
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35519

which appeared after dataflow merge (rev 125624).

Could this be committed please? I have tested with cygwin/AVR port and
there were no regressions.
I cannot test on other targets due to speed of Dejagnu under cygwin.

That doesn't look cheap. Also you don't explain how this happens in the first place.

Richard.

PS I have assignment paperwork on file with FSF.


2008-03-16 Andy Hutchinson <hutchinsonandy@aim.com>


        PR rtl-optimization/34916
        PR middle-end/35519
         * combine.c (create_log_links): Do not create duplicate LOG_LINKS
         between instruction pairs.


Index: combine.c =================================================================== --- combine.c (revision 133282) +++ combine.c (working copy) @@ -976,8 +976,17 @@ assignments later. */ if (regno >= FIRST_PSEUDO_REGISTER || asm_noperands (PATTERN (use_insn)) < 0) - LOG_LINKS (use_insn) = - alloc_INSN_LIST (insn, LOG_LINKS (use_insn)); + { + /* Don't add duplicates links between instructions. */ + rtx links; + for (links = LOG_LINKS (use_insn); links; links = XEXP (links, 1)) + if (insn == XEXP (links, 0)) + break; + + if (!links) + LOG_LINKS (use_insn) = + alloc_INSN_LIST (insn, LOG_LINKS (use_insn)); + } } next_use[regno] = NULL_RTX; }




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