RX: 4.5 branch: Fix alignment and addressing issues.

Andrew Pinski pinskia@gmail.com
Wed Mar 16 19:05:00 GMT 2011


On Wed, Mar 16, 2011 at 4:48 AM, Nick Clifton <nickc@redhat.com> wrote:
> Hi Guys,
>
>  I am checking in the attached patch to fix some regressions in the RX
>  port with regard to alignment and addressing modes.  With this patch
>  applied I have 18 fewer failures in the GCC testsuite.

> +   (set_attr "length"  "5")] ;; Worst case sceanario.  FIXME: If we defined separate patterns
> +)                            ;; rather than using iterators we could specify exact sizes.

You can set up the correct length even without using separate patterns.
An example can be found in mips/mips.md:
(define_insn "*div<mode>3"
  [(set (match_operand:ANYF 0 "register_operand" "=f")
	(div:ANYF (match_operand:ANYF 1 "register_operand" "f")
		  (match_operand:ANYF 2 "register_operand" "f")))]
  "<divide_condition>"
{
  if (TARGET_FIX_SB1)
    return "div.<fmt>\t%0,%1,%2\;mov.<fmt>\t%0,%0";
  else
    return "div.<fmt>\t%0,%1,%2";
}
  [(set_attr "type" "fdiv")
   (set_attr "mode" "<UNITMODE>")
   (set (attr "length")
        (if_then_else (ne (symbol_ref "TARGET_FIX_SB1") (const_int 0))
                      (const_int 8)
                      (const_int 4)))])

Thanks,
Andrew Pinski



More information about the Gcc-patches mailing list