This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH]: cleanup for conversion exprs code patterns (1/16)


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]