emit_no_conflict_block breaks some conditional moves

2005-04-20 Thread Greg McGary
My port failed the DImode part of the rotate regression-tests (gcc.c-torture/execute/20020508-[123].c). I found that emit_no_conflict_block() reordered insns gen'd by expand_doubleword_shift() in a way that violated dependency between compares and associated conditional-move insns that had the tar

Re: emit_no_conflict_block breaks some conditional moves

2005-04-21 Thread James E Wilson
Greg McGary wrote: I found that emit_no_conflict_block() reordered insns gen'd by expand_doubleword_shift() in a way that violated dependency between compares and associated conditional-move insns that had the target register as destination. You didn't say precisely what went wrong, but I'd guess y

Re: emit_no_conflict_block breaks some conditional moves

2005-04-23 Thread Greg McGary
James E Wilson <[EMAIL PROTECTED]> writes: > Greg McGary wrote: > > I found that > > emit_no_conflict_block() reordered insns gen'd by > > expand_doubleword_shift() in a way that violated dependency between > > compares and associated conditional-move insns that had the target > > register as dest

Re: emit_no_conflict_block breaks some conditional moves

2005-04-25 Thread James E Wilson
Greg McGary wrote: That will do fine for ports that have conditional move, but without movsicc, you'll have this case: cmpsi ... bcc 1f movsi target, ... 1: cmpsi ... bcc 2f movsi target, ... 2: Thanks for the additional details. I had to remind myself what emit_n