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



--- Comment #3 from David Edelsohn <dje at gcc dot gnu.org> 2013-04-21 23:26:03 
UTC ---

Created attachment 29912

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29912

self-contained example



The function lookup_unicode should be shrink-wrapped to not create a stack

frame if unicode_eq is not called, which is the common case



    if (!PyUnicode_CheckExact(key)) {

        return lookdict(mp, key, hash, value_addr);

    }

    i = (size_t)hash & mask;

    ep = &ep0[i];

    if (ep->me_key == NULL || ep->me_key == key) {

        *value_addr = &ep->me_value;

        return ep;

    }

/* ----- Postpone frame creation until this point. ------ */

    if (ep->me_key == dummy)

        freeslot = ep;

    else {

        if (ep->me_hash == hash && unicode_eq(ep->me_key, key)) {

            *value_addr = &ep->me_value;

            return ep;

        }

        freeslot = NULL;

    }

Reply via email to