Richard Biener wrote:

Huh.  Does that ever happen?  Please use a NOP_EXPR instead of
a VIEW_CONVERT_EXPR.

Yes, the testcase is gcc.target/i386/pr51235.c which performs black magic*** with void *. (This testcase otherwise fails the verify_gimple_assign_unary check in tree-cfg.c .) However, test passes also with your suggestion of NOP_EXPR so that's good by me.

***that is, computes the minimum

--Alan


Ok with that change.

Thanks,
Richard.

Testing:
        x86_86-none-linux-gnu: bootstrap, check-gcc, check-g++
        aarch64-none-linux-gnu: bootstrap
        aarch64-none-elf:  check-gcc, check-g++
        arm-none-eabi: check-gcc

        aarch64_be-none-elf: check-gcc, showing
        FAIL->PASS: gcc.dg/vect/no-scevccp-outer-7.c execution test
        FAIL->PASS: gcc.dg/vect/no-scevccp-outer-13.c execution test
        Passes the (previously-failing) reduced testcase on
                https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61114

        Have also assembler/stage-1 tested that testcase on PowerPC, also
fixed.

gcc/ChangeLog:

        * expr.c (expand_expr_real_2): For REDUC_{MIN,MAX,PLUS}_EXPR, add
        extract_bit_field around optab result.

        * fold-const.c (fold_unary_loc): For REDUC_{MIN,MAX,PLUS}_EXPR,
produce
        scalar not vector.

        * tree-cfg.c (verify_gimple_assign_unary): Check result vs operand
type
        for REDUC_{MIN,MAX,PLUS}_EXPR.

        * tree-vect-loop.c (vect_analyze_loop): Update comment.
        (vect_create_epilog_for_reduction): For direct vector reduction, use
        result of tree code directly without extract_bit_field.

        * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Update
        comment.



Reply via email to