This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH]: cleanup for conversion exprs code patterns (1/16)
- From: "Richard Guenther" <richard dot guenther at gmail dot com>
- To: "Tomas Bily" <tomby at atrey dot karlin dot mff dot cuni dot cz>
- Cc: gcc-patches at gcc dot gnu dot org, tomby at ucw dot cz, tbily at suse dot cz
- Date: Mon, 31 Mar 2008 17:03:09 +0100
- Subject: Re: [PATCH]: cleanup for conversion exprs code patterns (1/16)
- References: <20080331144912.C402CF00AB@atrey.karlin.mff.cuni.cz>
On Mon, Mar 31, 2008 at 3:49 PM, Tomas Bily
<tomby@atrey.karlin.mff.cuni.cz> wrote:
> Hi,
>
> this series of patches is doing small cleanup in using conversion
> expressions code patterns. There is a lot of duplicate code patterns
> for conversion expressions (CONVERT_EXPR, NOP_EXPR, NON_LVALUE_EXPR)
> that can be substituted by macro. Patterns are:
>
> (TREE_CODE (EXP) == NOP_EXPR || TREE_CODE (EXP) == CONVERT_EXPR)
> -> TEST_CONVERT_NOPS_P(EXP)
>
> (TREE_CODE (EXP) == NOP_EXPR || TREE_CODE (EXP) == CONVERT_EXPR
> || TREE_CODE (EXP) == NON_LVALUE_EXPR)
> -> TEST_NOPS_P(EXP)
>
> case NOP_EXPR: case CONVERT_EXPR
> -> CASE_CONVERT_NOPS
>
> case NOP_EXPR: case CONVERT_EXPR: case NON_LVALUE_EXPR
> -> CASE_NOPS
>
> while (TREE_CODE (EXP) == NOP_EXPR
> || TREE_CODE (EXP) == CONVERT_EXPR
> || TREE_CODE (EXP) == NON_LVALUE_EXPR)
> (EXP) = TREE_OPERAND (EXP, 0)
> -> STRIP_NOPS_UNSAFE(EXP)
>
> -> means replaced by
>
> Patch 1: Add new macros (TEST_CONVERT_NOPS_P(EXP), TEST_NOPS_P(EXP),
> CASE_CONVERT_NOPS, CASE_NOPS, STRIP_NOPS_UNSAFE(EXP)).
> Patch 2-4: Add support of TEST_CONVERT_NOPS_P.
> Patch 5-8: Add support of TEST_NOPS_P.
> Patch 9-11: Add support of CASE_CONVERT_NOPS.
> Patch 12-13: Add support of CASE_NOPS.
> Patch 14-16: Add support of STRIP_NOPS_UNSAFE.
>
> Bootstraped and tested on x86_64 x86_64 GNU/Linux.
>
> Ok?
Sorry to spoil this again, but can you please only do the NOP_EXPR
and CONVERT_EXPR tests and cases? And please use
CONVERT_EXPR_P and CASE_CONVERT instead of
TEST_CONVERT_NOPS_P and CASE_CONVERT_NOPS.
NON_LVALUE_EXPRs should be removed without adding them
to such grouping scheme first. I suggest you patch tree-cfg.c:verify_expr
to handle it like
NON_LVALUE_EXPR:
gcc_unreachable ();
as they shouldn't survive until the middle-end IL (and thus handling for
it can be safely removed from all places once the verify_expr patch
bootstraps & tests cleanly). But please separate NON_LVALUE_EXPR
handling out into a separate patch(-series).
Thanks,
Richard.