public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814
@ 2020-06-04  9:54 slyfox at inbox dot ru
  2020-06-04  9:58 ` [Bug c++/95528] " slyfox at inbox dot ru
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: slyfox at inbox dot ru @ 2020-06-04  9:54 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 95528
           Summary: internal compiler error: in emit_move_insn, at
                    expr.c:3814
           Product: gcc
           Version: 10.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: slyfox at inbox dot ru
  Target Milestone: ---

The bug is initially reported in https://bugs.gentoo.org/727028 as an ICE on
firefox-77 code by Thomas Deutschmann.

Here is the minimal reproducer reduced by creduce:

$ cat bug.cc
template <typename a> struct b {
  typedef a c __attribute__((vector_size(sizeof(a) * 4)));
  union {
    c d;
    struct {
      a e, f, g, h;
    };
  };
  b();
  b(const b &i) : d(i.d) {}
  static b j(c);
  template <typename k> operator b<k>() {
    b<k>::j(typename b<k>::c{e, f, g, h});
  }
};
template <typename a> using l = b<a>;
using m = l<char>;
using n = l<short>;
m o(n i) { return i; }
b<short> q;
void p() { o(q); }

$ LANG=C /usr/bin/x86_64-pc-linux-gnu-g++ -march=skylake-avx512 -O2 -c bug.cc
-o bug.o

during RTL pass: expand
bug.cc: In function 'void p()':
bug.cc:13:12: internal compiler error: in emit_move_insn, at expr.c:3814
   13 |     b<k>::j(typename b<k>::c{e, f, g, h});
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x5cb5cc emit_move_insn(rtx_def*, rtx_def*)
        ../../gcc-11.0.0_pre9999/gcc/expr.c:3814
0x82e459 load_register_parameters
        ../../gcc-11.0.0_pre9999/gcc/calls.c:3143
0x82e459 expand_call(tree_node*, rtx_def*, int)
        ../../gcc-11.0.0_pre9999/gcc/calls.c:4589
0x942856 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc-11.0.0_pre9999/gcc/expr.c:11135
0x94cc64 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier,
rtx_def**, bool)
        ../../gcc-11.0.0_pre9999/gcc/expr.c:8358
0x94cc64 store_expr(tree_node*, rtx_def*, int, bool, bool)
        ../../gcc-11.0.0_pre9999/gcc/expr.c:5752
0x94e1f9 expand_assignment(tree_node*, tree_node*, bool)
        ../../gcc-11.0.0_pre9999/gcc/expr.c:5514
0x83c40a expand_call_stmt
        ../../gcc-11.0.0_pre9999/gcc/cfgexpand.c:2701
0x83c40a expand_gimple_stmt_1
        ../../gcc-11.0.0_pre9999/gcc/cfgexpand.c:3682
0x83c40a expand_gimple_stmt
        ../../gcc-11.0.0_pre9999/gcc/cfgexpand.c:3847
0x842916 expand_gimple_basic_block
        ../../gcc-11.0.0_pre9999/gcc/cfgexpand.c:5887
0x842916 execute
        ../../gcc-11.0.0_pre9999/gcc/cfgexpand.c:6571
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://bugs.gentoo.org/> for instructions.

Both gcc-10 and gcc-master are affected.

gcc-master crash for comparison:

$ ${HOME}/dev/git/gcc-native-quick/gcc/xg++ -B
${HOME}/dev/git/gcc-native-quick/gcc -march=skylake-avx512 -O2 -c bug.cc -o
bug.o

during RTL pass: expand
bug.cc: In function 'void p()':
bug.cc:13:12: internal compiler error: in emit_move_insn, at expr.c:3814
   13 |     b<k>::j(typename b<k>::c{e, f, g, h});
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0x7f1550e53d59 __libc_start_main
        ../csu/libc-start.c:308
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

$ ${HOME}/dev/git/gcc-native-quick/gcc/xg++ -B
${HOME}/dev/git/gcc-native-quick/gcc -v
Reading specs from /home/slyfox/dev/git/gcc-native-quick/gcc/specs
COLLECT_GCC=/home/slyfox/dev/git/gcc-native-quick/gcc/xg++
COLLECT_LTO_WRAPPER=/home/slyfox/dev/git/gcc-native-quick/gcc/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --enable-languages=c,c++ --disable-bootstrap
--with-multilib-list=m64
--prefix=/home/slyfox/dev/git/gcc-native-quick/../gcc-native-quick-installed
--disable-nls --without-isl --disable-libsanitizer --disable-libvtv
--disable-libgomp --disable-libstdcxx-pch --disable-libunwind-exceptions
CFLAGS='-O1 ' CXXFLAGS='-O1 ' --with-sysroot=/usr/x86_64-HEAD-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.0.0 20200604 (experimental) (GCC)

Not sure if it's the same as bug #95394. That bug says it's a gcc-11
regression, but this one happens on gcc-10.1.0 as well.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug c++/95528] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
@ 2020-06-04  9:58 ` slyfox at inbox dot ru
  2020-06-04 10:32 ` [Bug middle-end/95528] [10/11 Regression] " rguenth at gcc dot gnu.org
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: slyfox at inbox dot ru @ 2020-06-04  9:58 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Sergei Trofimovich <slyfox at inbox dot ru> ---
It seems to be somehow specific to avx512:

This works:
$ LANG=C /usr/bin/x86_64-pc-linux-gnu-g++-10.1.0 -march=skylake -O2 -c bug.cc
-o bug.o

This ICEs:
$ LANG=C /usr/bin/x86_64-pc-linux-gnu-g++-10.1.0 -march=skylake-avx512 -O2 -c
bug.cc -o bug.o

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
  2020-06-04  9:58 ` [Bug c++/95528] " slyfox at inbox dot ru
@ 2020-06-04 10:32 ` rguenth at gcc dot gnu.org
  2020-06-04 17:02 ` ubizjak at gmail dot com
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-06-04 10:32 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c++                         |middle-end
            Summary|internal compiler error: in |[10/11 Regression] internal
                   |emit_move_insn, at          |compiler error: in
                   |expr.c:3814                 |emit_move_insn, at
                   |                            |expr.c:3814
           Keywords|                            |ice-on-valid-code,
                   |                            |needs-bisection
   Target Milestone|---                         |10.2
             Target|                            |x86_64-*-* i?86-*-*

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
  2020-06-04  9:58 ` [Bug c++/95528] " slyfox at inbox dot ru
  2020-06-04 10:32 ` [Bug middle-end/95528] [10/11 Regression] " rguenth at gcc dot gnu.org
@ 2020-06-04 17:02 ` ubizjak at gmail dot com
  2020-06-04 17:22 ` ubizjak at gmail dot com
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ubizjak at gmail dot com @ 2020-06-04 17:02 UTC (permalink / raw)
  To: gcc-bugs

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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-06-04
     Ever confirmed|0                           |1

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
Something is wrong with the handling of:

(define_expand "vec_pack_trunc_<mode>"
  [(set (match_operand:<DOUBLEMASKMODE> 0 "register_operand")
        (ior:<DOUBLEMASKMODE>
          (ashift:<DOUBLEMASKMODE>
            (zero_extend:<DOUBLEMASKMODE>
              (match_operand:SWI24 2 "register_operand"))
            (match_dup 3))
          (zero_extend:<DOUBLEMASKMODE>
            (match_operand:SWI24 1 "register_operand"))))]
  "TARGET_AVX512BW"
{
  operands[3] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
})

Disabling this expander "fixes" the testcase.

"-O2 -mavx512bw" is needed.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (2 preceding siblings ...)
  2020-06-04 17:02 ` ubizjak at gmail dot com
@ 2020-06-04 17:22 ` ubizjak at gmail dot com
  2020-06-04 18:50 ` jakub at gcc dot gnu.org
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: ubizjak at gmail dot com @ 2020-06-04 17:22 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> ---
Introduced by[1].

[1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=bea408857a7d

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (3 preceding siblings ...)
  2020-06-04 17:22 ` ubizjak at gmail dot com
@ 2020-06-04 18:50 ` jakub at gcc dot gnu.org
  2020-06-04 19:03 ` slyfox at inbox dot ru
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-06-04 18:50 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |rsandifo at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Adjusted testcase so that there are no warnings:
template <typename a> struct b {
  typedef a c __attribute__((vector_size(sizeof(a) * 4)));
  union {
    c d;
    struct {
      a e, f, g, h;
    };
  };
  b();
  b(const b &i) : d(i.d) {}
  static b j(c);
  template <typename k> operator b<k>() {
    b<k>::j(typename b<k>::c{k(e), k(f), k(g), k(h)});
    return b<k>();
  }
};
template <typename a> using l = b<a>;
using m = l<char>;
using n = l<short>;
m o(n i) { return i; }
b<short> q;
void p() { o(q); }

What vec_pack_trunc_si does looks completely reasonable for the vector bool
types that have integral modes (i.e. AVX512F+ masks).
I'd say the vectorizer/simplify_vector_constructor just shouldn't attempt to
use these (e.g. vec_pack*, vec_unpack* optabs) for !VEC_MODE_P unless it is
VECTOR_BOOLEAN_TYPE_P type.
For i386 it would be the right thing as the patterns really assume that it is
vector booleans and have their properties.
Though, aarch64 seems to have vec_pack_trunc_di and vec_pack_trunc_df
expanders, it is unclear to me what they are for and if they are really used.
Other targets seem to only define these for vector modes.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (4 preceding siblings ...)
  2020-06-04 18:50 ` jakub at gcc dot gnu.org
@ 2020-06-04 19:03 ` slyfox at inbox dot ru
  2020-06-05  9:01 ` rsandifo at gcc dot gnu.org
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: slyfox at inbox dot ru @ 2020-06-04 19:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Sergei Trofimovich <slyfox at inbox dot ru> ---
My bisect ended up at:
https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=78307657cf9675bc4aa2e77561c823834714b4c8

$ git bisect bad
78307657cf9675bc4aa2e77561c823834714b4c8 is the first bad commit
commit 78307657cf9675bc4aa2e77561c823834714b4c8
Author: Richard Biener <rguenther@suse.de>
Date:   Thu Nov 28 12:22:04 2019 +0000

    re PR tree-optimization/92645 (Hand written vector code is 450 times slower
when compiled with GCC compared to Clang)

    2019-11-28  Richard Biener  <rguenther@suse.de>

            PR tree-optimization/92645
            * tree-ssa-forwprop.c (get_bit_field_ref_def): Also handle
            conversions inside a mode class.  Remove restriction on
            preserving the element size.
            (simplify_vector_constructor): Deal with the above and for
            identity permutes also try using VEC_UNPACK_[FLOAT_]LO_EXPR
            and VEC_PACK_TRUNC_EXPR.

            * gcc.target/i386/pr92645-4.c: New testcase.

    From-SVN: r278806

 gcc/ChangeLog                             | 10 ++++
 gcc/testsuite/ChangeLog                   |  5 ++
 gcc/testsuite/gcc.target/i386/pr92645-4.c | 56 ++++++++++++++++++
 gcc/tree-ssa-forwprop.c                   | 96 ++++++++++++++++++++++++++-----
 4 files changed, 154 insertions(+), 13 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr92645-4.c

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (5 preceding siblings ...)
  2020-06-04 19:03 ` slyfox at inbox dot ru
@ 2020-06-05  9:01 ` rsandifo at gcc dot gnu.org
  2020-06-05  9:04 ` rsandifo at gcc dot gnu.org
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2020-06-05  9:01 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #4)
> I'd say the vectorizer/simplify_vector_constructor just shouldn't attempt to
> use these (e.g. vec_pack*, vec_unpack* optabs) for !VEC_MODE_P unless it is
> VECTOR_BOOLEAN_TYPE_P type.
> For i386 it would be the right thing as the patterns really assume that it
> is vector booleans and have their properties.
> Though, aarch64 seems to have vec_pack_trunc_di and vec_pack_trunc_df
> expanders, it is unclear to me what they are for and if they are really used.
> Other targets seem to only define these for vector modes.
Yeah, I agree those look odd.  The covering note for the patch
that added them was:

  https://gcc.gnu.org/pipermail/gcc-patches/2013-April/361636.html

which talks about fixing gcc.dg/vect failures.  But as James says,
only the 128-bit patterns should be needed for that.  Maybe the
the 64-bit patterns were just added for completeness.

Perhaps one justification for _di is that there is no V1DI mode.
Instead a vector of 1 DImode would itself have mode DImode.
So in principle, vec_pack_trunc_di is probably the right name
for a (V1)DI->V2SI truncate.

The same doesn't apply to _df since we don't use scalar float
modes for V1 vectors.  And (unlike at the time of the patch)
we now have V1DF.  So I agree that the _df one looks dead.

That said, for AArch64 we'd now try to mix 128-bit and 64-bit
vectors instead of vectorising with 2 64-bit vectors.  So the
_di pattern probably isn't useful in practice either.

In summary: from an AArch64 perspective, it's probably fine to
check !VECTOR_MODE_P || VECTOR_BOOLEAN_TYPE_P.  But given the V1
thing, maybe it would be better to add || m == GET_MODE_INNER (m)
as well (unless that defeats the fix).

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (6 preceding siblings ...)
  2020-06-05  9:01 ` rsandifo at gcc dot gnu.org
@ 2020-06-05  9:04 ` rsandifo at gcc dot gnu.org
  2020-06-05 11:37 ` jakub at gcc dot gnu.org
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2020-06-05  9:04 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
(In reply to rsandifo@gcc.gnu.org from comment #6)
> In summary: from an AArch64 perspective, it's probably fine to
> check !VECTOR_MODE_P || VECTOR_BOOLEAN_TYPE_P.  But given the V1
> thing, maybe it would be better to add || m == GET_MODE_INNER (m)
> as well (unless that defeats the fix).
Er, I mean: m == TYPE_MODE (TREE_TYPE (vectype)) or whatever.
m == GET_MODE_INNER (m) is of course always true for scalars :-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (7 preceding siblings ...)
  2020-06-05  9:04 ` rsandifo at gcc dot gnu.org
@ 2020-06-05 11:37 ` jakub at gcc dot gnu.org
  2020-06-05 11:57 ` rsandifo at gcc dot gnu.org
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-06-05 11:37 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 48683
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48683&action=edit
gcc11-pr95528.patch

Untested fix.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (8 preceding siblings ...)
  2020-06-05 11:37 ` jakub at gcc dot gnu.org
@ 2020-06-05 11:57 ` rsandifo at gcc dot gnu.org
  2020-06-08  9:06 ` cvs-commit at gcc dot gnu.org
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2020-06-05 11:57 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #8)
> Created attachment 48683 [details]
> gcc11-pr95528.patch
> 
> Untested fix.
The VECTOR_TYPE_P condition should be redundant.
Looks good to me otherwise FWIW.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10/11 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (9 preceding siblings ...)
  2020-06-05 11:57 ` rsandifo at gcc dot gnu.org
@ 2020-06-08  9:06 ` cvs-commit at gcc dot gnu.org
  2020-06-08  9:10 ` [Bug middle-end/95528] [10 " jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-06-08  9:06 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:8be374e02761c9d63d2753d71e4bd4874a1577b1

commit r11-1065-g8be374e02761c9d63d2753d71e4bd4874a1577b1
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Mon Jun 8 11:05:10 2020 +0200

    forwprop: Ignore scalar mode vectors in simplify_vector_constructor
[PR95528]

    As mentioned in the PR, the problem is that at least the x86 backend asumes
    that the vec_unpack* and vec_pack* optabs with integral modes are for the
    AVX512-ish vector masks rather than for very small vectors done in GPRs.
    The only other target that seems to have a scalar mode vec_{,un}pack* optab
    is aarch64 as discussed in the PR, so there is also a condition for that.
    All other targets have just vector mode optabs.

    2020-06-08  Jakub Jelinek  <jakub@redhat.com>

            PR target/95528
            * tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
            VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless
the
            type is vector boolean.

            * g++.dg/opt/pr95528.C: New test.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (10 preceding siblings ...)
  2020-06-08  9:06 ` cvs-commit at gcc dot gnu.org
@ 2020-06-08  9:10 ` jakub at gcc dot gnu.org
  2020-06-14 10:07 ` cvs-commit at gcc dot gnu.org
  2020-06-14 11:47 ` jakub at gcc dot gnu.org
  13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-06-08  9:10 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[10/11 Regression] internal |[10 Regression] internal
                   |compiler error: in          |compiler error: in
                   |emit_move_insn, at          |emit_move_insn, at
                   |expr.c:3814                 |expr.c:3814

--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed on the trunk so far.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (11 preceding siblings ...)
  2020-06-08  9:10 ` [Bug middle-end/95528] [10 " jakub at gcc dot gnu.org
@ 2020-06-14 10:07 ` cvs-commit at gcc dot gnu.org
  2020-06-14 11:47 ` jakub at gcc dot gnu.org
  13 siblings, 0 replies; 15+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-06-14 10:07 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:c75a2abc3a976096b89475f062d4795247aa02b8

commit r10-8296-gc75a2abc3a976096b89475f062d4795247aa02b8
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Mon Jun 8 11:05:10 2020 +0200

    forwprop: Ignore scalar mode vectors in simplify_vector_constructor
[PR95528]

    As mentioned in the PR, the problem is that at least the x86 backend asumes
    that the vec_unpack* and vec_pack* optabs with integral modes are for the
    AVX512-ish vector masks rather than for very small vectors done in GPRs.
    The only other target that seems to have a scalar mode vec_{,un}pack* optab
    is aarch64 as discussed in the PR, so there is also a condition for that.
    All other targets have just vector mode optabs.

    2020-06-08  Jakub Jelinek  <jakub@redhat.com>

            PR target/95528
            * tree-ssa-forwprop.c (simplify_vector_constructor): Don't use
            VEC_UNPACK*_EXPR or VEC_PACK_TRUNC_EXPR with scalar modes unless
the
            type is vector boolean.

            * g++.dg/opt/pr95528.C: New test.

    (cherry picked from commit 8be374e02761c9d63d2753d71e4bd4874a1577b1)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [Bug middle-end/95528] [10 Regression] internal compiler error: in emit_move_insn, at expr.c:3814
  2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
                   ` (12 preceding siblings ...)
  2020-06-14 10:07 ` cvs-commit at gcc dot gnu.org
@ 2020-06-14 11:47 ` jakub at gcc dot gnu.org
  13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-06-14 11:47 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed for 10.2+ too.

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-06-14 11:47 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-04  9:54 [Bug c++/95528] New: internal compiler error: in emit_move_insn, at expr.c:3814 slyfox at inbox dot ru
2020-06-04  9:58 ` [Bug c++/95528] " slyfox at inbox dot ru
2020-06-04 10:32 ` [Bug middle-end/95528] [10/11 Regression] " rguenth at gcc dot gnu.org
2020-06-04 17:02 ` ubizjak at gmail dot com
2020-06-04 17:22 ` ubizjak at gmail dot com
2020-06-04 18:50 ` jakub at gcc dot gnu.org
2020-06-04 19:03 ` slyfox at inbox dot ru
2020-06-05  9:01 ` rsandifo at gcc dot gnu.org
2020-06-05  9:04 ` rsandifo at gcc dot gnu.org
2020-06-05 11:37 ` jakub at gcc dot gnu.org
2020-06-05 11:57 ` rsandifo at gcc dot gnu.org
2020-06-08  9:06 ` cvs-commit at gcc dot gnu.org
2020-06-08  9:10 ` [Bug middle-end/95528] [10 " jakub at gcc dot gnu.org
2020-06-14 10:07 ` cvs-commit at gcc dot gnu.org
2020-06-14 11:47 ` jakub at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).