public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/63666] [5.0 regression] FAIL: gcc.dg/vect/pr45752.c (internal compiler error)
Date: Wed, 29 Oct 2014 13:18:00 -0000	[thread overview]
Message-ID: <bug-63666-4-0SD9ylLMTz@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-63666-4@http.gcc.gnu.org/bugzilla/>

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |glisse at gcc dot gnu.org

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Andreas Schwab from comment #2)
> Also breaks gcc.dg/vect/vect-strided-a-u8-i2-gap.c
> 
> $ gcc/xgcc -Bgcc/ ../gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
> -ftree-vectorize -fno-vect-cost-model -fno-common -O2
> -fdump-tree-vect-details -lm -o ./vect-strided-a-u8-i2-gap.exe
> ../gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c: In function ‘main1’:
> ../gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c:34:16: internal
> compiler error: in expand_expr_real_2, at expr.c:9156
>        res[i].b = ptr->a;
>                 ^
> 0x400000000059052f expand_expr_real_2(separate_ops*, rtx_def*, machine_mode,
> expand_modifier)
>         ../../gcc/expr.c:9156
> 0x4000000000579c1f expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
> expand_modifier, rtx_def**, bool)
>         ../../gcc/expr.c:9463
> 0x400000000058b71f store_expr(tree_node*, rtx_def*, int, bool)
>         ../../gcc/expr.c:5344
> 0x400000000059701f expand_assignment(tree_node*, tree_node*, bool)
>         ../../gcc/expr.c:5130
> 0x4000000000381b7f expand_gimple_stmt_1
>         ../../gcc/cfgexpand.c:3285
> 0x4000000000381b7f expand_gimple_stmt
>         ../../gcc/cfgexpand.c:3381
> 0x400000000038d89f expand_gimple_basic_block
>         ../../gcc/cfgexpand.c:5216
> 0x40000000003916ef execute
>         ../../gcc/cfgexpand.c:5822

This also still happens.  The vectorizer generates (and verified)

  vect_perm_even_77 = VEC_PERM_EXPR <vect__22.9_74, vect__22.10_76, { 0, 2, 4,
6, 8, 10, 12, 14 }>;
  vect_perm_odd_78 = VEC_PERM_EXPR <vect__22.9_74, vect__22.10_76, { 1, 3, 5,
7, 9, 11, 13, 15 }>;
  vect_inter_high_82 = VEC_PERM_EXPR <vect_perm_even_77, vect_perm_even_77, {
0, 8, 1, 9, 2, 10, 3, 11 }>;
  vect_inter_low_83 = VEC_PERM_EXPR <vect_perm_even_77, vect_perm_even_77, { 4,
12, 5, 13, 6, 14, 7, 15 }>;

then we unroll the loop and forwprop4 comes along changing

  vect_perm_even_145 = VEC_PERM_EXPR <vect__22.9_142, vect__22.10_144, { 0, 2,
4, 6, 8, 10, 12, 14 }>;
  vect_inter_high_146 = VEC_PERM_EXPR <vect_perm_even_145, vect_perm_even_145,
{ 0, 8, 1, 9, 2, 10, 3, 11 }>;

to

  vect_perm_even_145 = VEC_PERM_EXPR <vect__22.9_142, vect__22.10_144, { 0, 2,
4, 6, 8, 10, 12, 14 }>;
  vect_inter_high_146 = VEC_PERM_EXPR <vect_perm_even_145, vect_perm_even_145,
{ 0, 0, 1, 1, 2, 2, 3, 3 }>;

which isn't a supported permutation.  It looks like
fold-const.c:fold_ternary_loc doesn't care about only generating supported
permutations and the fallback code in expand_vec_perm doesn't cover all
cases.
>From gcc-bugs-return-465217-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 29 13:18:05 2014
Return-Path: <gcc-bugs-return-465217-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 19925 invoked by alias); 29 Oct 2014 13:18:05 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 19831 invoked by uid 48); 29 Oct 2014 13:18:00 -0000
From: "simon at pushface dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug ada/63675] New:=?UTF-8?Q? Non-confirming aspect doesn’t fail?Date: Wed, 29 Oct 2014 13:19:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: ada
X-Bugzilla-Version: 4.9.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: simon at pushface dot org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter attachments.created
Message-ID: <bug-63675-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-10/txt/msg02238.txt.bz2
Content-length: 1899

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

            Bug ID: 63675
           Summary: Non-confirming aspect doesn’t fail
           Product: gcc
           Version: 4.9.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
          Assignee: unassigned at gcc dot gnu.org
          Reporter: simon at pushface dot org

Created attachment 33840
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33840&action=edit
Reproducer

This arises from checking the status of PR/56196 (which is, itself, now fixed).

There is an untagged base type with aspects Unchecked_Union and C_Pass_By_Copy,
a primitive subprogram of the base type, and three derived types.

All derived types result in warnings

union.ads:15:06: warning: variant record has no direct equivalent in C
union.ads:15:06: warning: use of convention for type "Derived_1" is dubious
union.ads:15:06: warning: variant record has no direct equivalent in C
union.ads:15:06: warning: use of convention for type "Derived_2" is dubious
union.ads:15:06: warning: variant record has no direct equivalent in C
union.ads:15:06: warning: use of convention for type "Derived_3" is dubious

which (a) shouldn’t be a problem, I think, and (b) are on the line at which the
base type is declared, rather than on the line where the “dubious” derived type
is declared.

The first derived type has no aspects.

The second derived type has aspect Unchecked_Union => False, which conflicts
with that of the base type, and *is not rejected*.

The third derived type has aspect Unchecked_Union => True, which confirms that
of the base type, and *is* rejected.

union.ads:29:36: representation item appears too late
union.ads:29:36: primitive operations already defined for "Base"

I think both of derived types with aspects should be rejected.
>From gcc-bugs-return-465218-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Oct 29 13:19:27 2014
Return-Path: <gcc-bugs-return-465218-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 20928 invoked by alias); 29 Oct 2014 13:19:26 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 20864 invoked by uid 48); 29 Oct 2014 13:19:23 -0000
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/63666] [5.0 regression] FAIL: gcc.dg/vect/pr45752.c (internal compiler error)
Date: Wed, 29 Oct 2014 13:32:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: rguenth at gcc dot gnu.org
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-63666-4-0hj03CnWs3@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63666-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63666-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-10/txt/msg02239.txt.bz2
Content-length: 969

https://gcc.gnu.org/bugzilla/show_bug.cgi?idc666

--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
Index: gcc/fold-const.c
==================================================================--- gcc/fold-const.c    (revision 216834)
+++ gcc/fold-const.c    (working copy)
@@ -82,6 +82,7 @@ along with GCC; see the file COPYING3.
 #include "ipa-ref.h"
 #include "cgraph.h"
 #include "generic-match.h"
+#include "optabs.h"

 /* Nonzero if we are folding constants inside an initializer; zero
    otherwise.  */
@@ -14311,7 +14331,8 @@ fold_ternary_loc (location_t loc, enum t
          if (op0 == op1 && !single_arg)
            changed = true;

-         if (need_mask_canon && arg2 == op2)
+         if (need_mask_canon && arg2 == op2
+             && can_vec_perm_p (TYPE_MODE (type), false, sel))
            {
              tree *tsel = XALLOCAVEC (tree, nelts);
              tree eltype = TREE_TYPE (TREE_TYPE (arg2));

fixes the IA64 case.


  parent reply	other threads:[~2014-10-29 13:07 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-28 10:27 [Bug tree-optimization/63666] New: " schwab@linux-m68k.org
2014-10-28 11:01 ` [Bug tree-optimization/63666] " schwab@linux-m68k.org
2014-10-28 11:37 ` rguenth at gcc dot gnu.org
2014-10-28 11:41 ` jiwang at gcc dot gnu.org
2014-10-28 11:43 ` rguenth at gcc dot gnu.org
2014-10-29  9:23 ` rguenth at gcc dot gnu.org
2014-10-29  9:25 ` rguenth at gcc dot gnu.org
2014-10-29 12:36 ` jiwang at gcc dot gnu.org
2014-10-29 13:07 ` rguenther at suse dot de
2014-10-29 13:18 ` rguenth at gcc dot gnu.org [this message]
2014-10-29 22:07 ` glisse at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-63666-4-0SD9ylLMTz@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).