------- Comment #5 from rguenth at gcc dot gnu dot org  2006-05-04 15:25 -------
The problem with 4.0 is that the CALL_EXPR uses the return slot address to
return, but we don't honour that.

Index: c-common.c
===================================================================
*** c-common.c  (revision 113528)
--- c-common.c  (working copy)
*************** c_warn_unused_result (tree *top_p)
*** 5658,5664 ****
        break;

      case CALL_EXPR:
!       if (TREE_USED (t))
        break;

        /* This is a naked call, as opposed to a CALL_EXPR nested inside
--- 5658,5665 ----
        break;

      case CALL_EXPR:
!       if (TREE_USED (t)
!         || CALL_EXPR_HAS_RETURN_SLOT_ADDR (t))
        break;

        /* This is a naked call, as opposed to a CALL_EXPR nested inside

though this makes PR27371 also fail for 4.0, as 4.0 shares the same problem
of always emitting the "useless store".


-- 


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

Reply via email to