From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7016 invoked by alias); 20 Feb 2014 06:15:53 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 6968 invoked by uid 48); 20 Feb 2014 06:15:50 -0000 From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/59193] Unused postfix operator temporaries Date: Thu, 20 Feb 2014 06:15:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Version: unknown X-Bugzilla-Keywords: X-Bugzilla-Severity: trivial X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status resolution Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-02/txt/msg02049.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59193 Andrew Pinski changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution|--- |INVALID --- Comment #9 from Andrew Pinski --- (In reply to Max TenEyck Woodbury from comment #8) > > Re: Jakub Jelinek > > You admit that different 'tree codes' are generated, so there is a difference > between the two sequences. You further admit that -O0 does do some > optimization, otherwise the machine code emitted would store and discard > the temporary value because that is what the language standard says should > happen. While this is quite trivial in practice, it shows that you place > your opinion over the exact semantics called for by the standard and lack > the ability to see that. That is distinctly disturbing. The language semantics != middle-end semantics. There is no temporary variable if the value is unused and will never be as it is "expanded" to ignore it if the resulting value is unused. This is the middle-end semantics of these tree codes. If the front-end wants the temporary variable always then it needs to do the assignment. The language semantics does not require a temporary variable to hold the value if the value is unused so the middle-end semantics of these tree codes fit the bill.