[0/4] Addressing modulo-scheduling bugs

2019-04-16 Thread zhroma
Last few days I’ve added my comments/patches into almost all modulo-scheduler PRs appeared in the last two years. Here I want to discuss five PRs. First of all, I have four patches which fix regressions, so technically I can ask about applying them right now on stage4. But we don’t have a ma

Re: [PATCH, RFC] Wrong warning message fix for gcc 9

2019-03-29 Thread zhroma
Martin Sebor wrote 2019-03-28 22:44: On 3/28/19 11:49 AM, Roman Zhuykov wrote: Ping A week ago I decided it is so minor that I can report here with a patch without creating bugzilla PR. Technically it is a "9 regression" in new functionality added back in summer. Patch was succesfully bootst

[PATCH 5/9] [SMS] Support new loop pattern

2011-07-21 Thread zhroma
This patch should be applied only after pending patches by Revital. This patch significantly enhances the existing implementation of the SMS. Patch adds support of scheduling loops without doloop pattern. The loop should meet the following requirements. First three are the same as for loop with

[PATCH 9/9] [ARM] Remove artificial doloop_end pattern

2011-07-21 Thread zhroma
This patch eliminates fake doloop_end pattern for ARM platform. The problem with such a pattern is that it slows down the loop when SMS doesn't create good schedule. So, i suppose fake pattern is no longer needed with new loop forms supported. 2011-07-20 Roman Zhuykov * config/arm/thu

[PATCH 4/9] Move the SMS pass earlier

2011-07-21 Thread zhroma
This patch moves the pass_sms before the pass_partition_blocks. There is no doloop_end pattern on x86_64. That's why current SMS implementation can't schedule any loops. But regtesting trunk with SMS on x86_64 shows an ICE on gcc.dg/tree-prof/bb-reorg.c. The problem is in an unconditional edge

[PATCH 8/9] Extend simple_rhs_p

2011-07-21 Thread zhroma
This patch adds a multiply-and-add instruction expression to simple_rhs_p function. When debugging my sms patches, the following situation was found. Imagine a loop, with constant step > 1, where "n" and "fin" is unknown at compile time. for (c = n * step + fin; c != fin; c -= step) ...; c is a

[PATCH 7/9] New assertion

2011-07-21 Thread zhroma
This patch adds an assertion in function rtl_lv_add_condition_to_bb. It allows me to find mistakes easier while writing code which creates complex loop versioning condition in previous patch. 2011-07-20 Roman Zhuykov * cfgrtl.c (rtl_lv_add_condition_to_bb): New assertion. --- gcc/cfgrt

[PATCH 0/9] [RFC] Expand SMS functionality

2011-07-21 Thread zhroma
All the work described in next emails was done while trying to improve SMS functionality. The main idea is to remove requrement of doloop_end instruction pattern. This allows SMS to work on more platforms, for example x86-64 and ARM. All job was done on top of the following patch. This patch is

[PATCH 6/9] [SMS] Support potentially infinite loop

2011-07-21 Thread zhroma
This patch should be applied only after previous patch. This patch allows SMS to schedule loops with non-NULL condition under which the loop is infinite. Infinite condition is an expression list and all of them should be false if we want to use niter_expr. So, if each of expressions is a simple c

[PATCH 2/9] [doloop] Correct extracting loop exit condition

2011-07-21 Thread zhroma
This patch fixes the compiler segfault found while regtesting trunk with SMS on IA64 platform. Segfault happens on test gcc.dg/pr45259.c with -fmodulo-sched enabled. The following jump instruction is given as argument for doloop_condition_get function: (jump_insn 86 85 88 7 (set (pc) (reg

[PATCH 3/9] [SMS] Eliminate redundant edges

2011-07-21 Thread zhroma
While building a data dependency graph for loop a ddg edge for some pair of instructions with inter-loop dependency should be created only if there is no edge for intra-loop dependency between these instructions. Creating both of edges leads sometimes to the fact that function generate_reg_moves cr

[PATCH 1/9] [obvious] Minor cleanup

2011-07-21 Thread zhroma
This obvious patch just removes unused tree_ssa_loop_version function declaration from tree-flow.h. Will be committed in 24 hours if no objection. 2011-07-20 Roman Zhuykov * tree-flow.h (tree_ssa_loop_version): Remove unused declaration. --- gcc/tree-flow.h |2 -- 1 files