https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71778

            Bug ID: 71778
           Summary: [6 Regression][ARM] ICE using non-constant argument to
                    Neon intrinsic that requires constant arguments
           Product: gcc
           Version: 6.2.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jgreenhalgh at gcc dot gnu.org
  Target Milestone: ---
            Target: arm*-*-*

I'm sure we've fixed this one before (I couldn't find the bug by searching,
maybe it was on AArch64), but this code:

  #include "arm_neon.h"

  int32x4_t
  shift (int32x4_t a, int b)
  {
    return vshrq_n_s32 (a, b);
  }

Causes an ICE on GCC 6 and trunk:

$ arm-none-eabi-gcc foo.c -mfloat-abi=hard -mfpu=neon

In file included from foo.c:1:0:
In function 'vshrq_n_s32',
    inlined from 'shift' at foo.c:6:12:
arm_neon.h:3789:10: error: argument 2 must be a constant immediate
   return (int32x4_t)__builtin_neon_vshrs_nv4si (__a, __b);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arm_neon.h: In function 'shift':
arm_neon.h:3789:10: internal compiler error: in neon_make_constant, at
config/arm/arm.c:12772
0xe57873 neon_make_constant(rtx_def*)
        .../gcc/config/arm/arm.c:12772
0xfe31bb gen_movv4si(rtx_def*, rtx_def*)
        .../gcc/config/arm/vec-common.md:35
0x7ea71a insn_gen_fn::operator()(rtx_def*, rtx_def*) const
        .../gcc/recog.h:301
0x7ea71a emit_move_insn_1(rtx_def*, rtx_def*)
        .../gcc/expr.c:3491
0x7eaebc emit_move_insn(rtx_def*, rtx_def*)
        .../gcc/expr.c:3586
0x7f1486 store_expr_with_bounds(tree_node*, rtx_def*, int, bool, bool,
tree_node*)
        .../gcc/expr.c:5583
0x7f4943 expand_assignment(tree_node*, tree_node*, bool)
        .../gcc/expr.c:5175
0x6dcdfd expand_call_stmt
        .../gcc/cfgexpand.c:2658
0x6dcdfd expand_gimple_stmt_1
        .../gcc/cfgexpand.c:3548
0x6dcdfd expand_gimple_stmt
        .../gcc/cfgexpand.c:3714
0x6dfaf5 expand_gimple_basic_block
        .../gcc/cfgexpand.c:5720
0x6e3112 execute
        .../gcc/cfgexpand.c:6335

Reply via email to