This is the mail archive of the
mailing list for the GCC project.
Re: Fix builtin folding
- From: Roger Sayle <roger at eyesopen dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 27 Oct 2006 11:05:13 -0600 (MDT)
- Subject: Re: Fix builtin folding
On Thu, 26 Oct 2006, Jan Hubicka wrote:
> this problem kept me walking in circles for a few days...
> 2006-10-26 Jan Hubicka <firstname.lastname@example.org>
> * builtins.c (fold_builtin): Don't generate NOP_EXPR that is going
> to be thrown away soon when IGNORE is set.
> * tree-ssa-ccp.c (convert_to_gimple_builtin): Add IGNORE argument
> indicating when return value shall not be computed.
> * gimplify.c (internal_get_tmp_var): Avoid random tree sharing.
This looks reasonable as far as it goes. It turns out that this no-op
NOP_EXPR is created as somewhere to set the TREE_NO_WARNING flag purely
for the benefit of gimplification. See PR tree-ssa/13325. There's now
the strong possibility that improvements and refactorings to GCC's
gimplification process, especially this latest change of yours, means
that it's no longer required at all.
To make life simple, I'll approve your current patch as-is, provided
that you also test a follow-up clean-up patch that deletes the current
fold_builtin wrapper function, and instead renames/exposes the current
fold_builtin_1 as fold_builtin. If there are no testsuite regresions
(especially g++.dg/warn/noeffect5.C and gcc.dg/20040202-1.c) with that
change, its pre-approved for mainline.
Thanks for investigating this.