http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52171



--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-19 
14:50:52 UTC ---

Happens in insn-preds.c quite often:



    case 'Y':

      if (!strncmp (str, "Yi", 2))

        return CONSTRAINT_Yi;

      if (!strncmp (str, "Ym", 2))

        return CONSTRAINT_Ym;

      if (!strncmp (str, "Yp", 2))

        return CONSTRAINT_Yp;

      if (!strncmp (str, "Ya", 2))

        return CONSTRAINT_Ya;

...



and later calls are predicted as cold and thus not expanded inline by



(define_expand "cmpstrnsi"

  [(set (match_operand:SI 0 "register_operand" "")

        (compare:SI (match_operand:BLK 1 "general_operand" "")

                    (match_operand:BLK 2 "general_operand" "")))

   (use (match_operand 3 "general_operand" ""))

   (use (match_operand 4 "immediate_operand" ""))]

  ""

{

  rtx addr1, addr2, out, outlow, count, countreg, align;



  if (optimize_insn_for_size_p () && !TARGET_INLINE_ALL_STRINGOPS)

    FAIL;



the insn-preds.c code could also be optimized, for length 2 a simple

char equality test would be enough ...

Reply via email to