[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-26 Thread matz at gcc dot gnu dot org
--- Comment #10 from matz at gcc dot gnu dot org 2009-03-26 13:41 --- I must be missing something, as I don't see the connection to SSA expansion (or non-SSA expansion). AFAIU the issue is (and that often was indeed a problem in the past with mplayer) that some transformation "needlessl

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-26 Thread bonzini at gnu dot org
--- Comment #9 from bonzini at gnu dot org 2009-03-26 08:47 --- That's good to know. As I said, I'm okay with your patch. I just wondered if for 4.5 the cse_not_expected trick fixes it. In that case I'd have no problem applying the patch to 4.4, but I would revert it after SSA expansi

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-25 Thread jakub at gcc dot gnu dot org
--- Comment #8 from jakub at gcc dot gnu dot org 2009-03-25 18:31 --- fwprop won't propagate a constant into a "r" constrained asm operand, because verify_changes (0) fails in that case (it calls check_asm_operands, which verifies the constraints of all the operands). -- http://gcc.

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-25 Thread bonzini at gnu dot org
--- Comment #7 from bonzini at gnu dot org 2009-03-25 16:49 --- > one is the rtx_cost (SET_SRC (set), SET, speed) > old_cost check > (I wonder whether it is needed for asms at all and if yes, how to actually do > it) For addresses it is already done in should_replace_address. But for e

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-25 Thread jakub at gcc dot gnu dot org
--- Comment #6 from jakub at gcc dot gnu dot org 2009-03-25 15:49 --- Created an attachment (id=17540) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17540&action=view) gcc44-pr39543.patch Untested patch that cures all the 3 testcases by forward propagation into asm operands, as lo

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-25 Thread jakub at gcc dot gnu dot org
--- Comment #5 from jakub at gcc dot gnu dot org 2009-03-25 13:10 --- That can be solved easily, just compare whether new_rtx doesn't need more registers than old_rtx and only propagate into asm_noperands () >= 0 insns those that require the same number or fewer registers. Consider e.g.

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-24 Thread bonzini at gnu dot org
--- Comment #4 from bonzini at gnu dot org 2009-03-24 15:03 --- The only thing to be careful is to have set_reg_equal == FALSE if the insn has multiple sets, and find which set in a multiple-set insn is actually referring to USE (a combination of note_stores and loc_mentioned_in_p will d

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-24 Thread jakub at gcc dot gnu dot org
--- Comment #3 from jakub at gcc dot gnu dot org 2009-03-24 14:18 --- Ok, so the reason why fwprop doesn't propagate this is: forward_propagate_and_simplify doing: rtx use_set = single_set (use_insn); ... if (!use_set) return false; ASM_OPERANDS with multiple output regs obviou

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-24 Thread jakub at gcc dot gnu dot org
--- Comment #2 from jakub at gcc dot gnu dot org 2009-03-24 12:54 --- The reason for forcing the MEM addresses in "m"/"=m" into register is: /* By passing constant addresses through registers we get a chance to cse them. */ if (! cse_not_expected && CONSTANT_P (x) && CONSTANT_A

[Bug rtl-optimization/39543] [4.4 Regression] Reload failure on mplayer from SVN

2009-03-24 Thread jakub at gcc dot gnu dot org
--- Comment #1 from jakub at gcc dot gnu dot org 2009-03-24 11:27 --- Ah, forgot the testcase: float __attribute__ ((aligned (16))) s0[128]; const float s1 = 0.707; float s2[8] __attribute__ ((aligned (16))); float s3[8] __attribute__ ((aligned (16))); float s4[16] __attribute__ ((align