From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4661 invoked by alias); 23 Jul 2010 11:40:40 -0000 Received: (qmail 4600 invoked by uid 48); 23 Jul 2010 11:40:27 -0000 Date: Fri, 23 Jul 2010 11:40:00 -0000 Message-ID: <20100723114027.4599.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/43784] [4.6 Regression] -Os -fkeep-inline-functions causes FAIL: gcc.c-torture/execute/builtins/pr22237.c execution In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rguenth at gcc dot gnu dot org" 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 X-SW-Source: 2010-07/txt/msg02489.txt.bz2 ------- Comment #7 from rguenth at gcc dot gnu dot org 2010-07-23 11:40 ------- Hm, no. I think tree-nrv.c is correct. I was playing with Index: gcc/tree-nrv.c =================================================================== --- gcc/tree-nrv.c (revision 162450) +++ gcc/tree-nrv.c (working copy) @@ -310,7 +310,8 @@ dest_safe_for_nrv_p (gimple call) if (TREE_CODE (dest) == SSA_NAME) return true; - if (call_may_clobber_ref_p (call, dest)) + if (call_may_clobber_ref_p (call, dest) + || ref_maybe_used_by_stmt_p (call, dest)) return false; return true; but that's overly restrictive for something that is undefined even on the gimple level. Joseph, this is really triggering undefined behavior in C, does it? -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jsm28 at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43784