--- 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
--- 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
--- 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.
--- 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
--- 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
--- 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.
--- 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
--- 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
--- 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
--- 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
10 matches
Mail list logo