genattrtab regression: infinite loop

Paulo Matos pmatos@broadcom.com
Mon Feb 11 10:29:00 GMT 2013


Hello,

I just noticed when moving port from 4.7.2 to HEAD that genattrtab gets into an infinite loop with:
(define_insn "br_pred"
  [(set (pc)
	(if_then_else
	 (match_operator 2 "easy_comparison"
	  [(match_operand:BI 0 "register_operand" "c")
	   (const_int 0)])
	 (label_ref (match_operand 1 "" ""))
	 (pc)))]
  ""
  "brtest"
  [(set (attr "length") (const_int 4))
   (set (attr "size")
        (if_then_else (eq_attr "length" "4") 
                      (const_string "short")
                      (const_string "long")))])

This is a simplified version of what I have but it manages to trigger the problem.
I am not sure why this is happening yet but I looked through the gcc internals manual and I don't think I am doing anything wrong.

If you confirm that this is a bug and no infinite loop should occur I will write a bug report. I will, in the meantime, look at the genattrtab.c code and try to find an explanation for this.

Thanks,

Paulo Matos




More information about the Gcc mailing list