public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests
@ 2014-05-12 12:40 christophe.lyon at st dot com
2014-05-12 13:48 ` [Bug target/61154] " ktkachov at gcc dot gnu.org
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: christophe.lyon at st dot com @ 2014-05-12 12:40 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
Bug ID: 61154
Summary: [ARM] wide-int merge introduced regressions in vshuf
tests
Product: gcc
Version: 4.10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: christophe.lyon at st dot com
Commit 210113 ("Merge in wide-int") made several tests (mostly vshuf) to fail
on hf ARM targets (both little and big endian).
For instance, with GCC configured as:
--target=arm-none-linux-gnueabihf
--with-mode=arm
--with-cpu=cortex-a9
--with-fpu=neon-fp16
I can see:
Passed now fails [PASS => FAIL]:
c-c++-common/torture/vshuf-v16hi.c -O1 (test for excess errors)
c-c++-common/torture/vshuf-v16hi.c -O2 (test for excess errors)
c-c++-common/torture/vshuf-v16hi.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (test for excess errors)
c-c++-common/torture/vshuf-v16hi.c -O3 -fomit-frame-pointer (test for
excess errors)
c-c++-common/torture/vshuf-v16hi.c -O3 -g (test for excess errors)
c-c++-common/torture/vshuf-v16hi.c -Os (test for excess errors)
gcc.dg/torture/vshuf-v16hi.c -O2 (test for excess errors)
gcc.dg/torture/vshuf-v32qi.c -O2 (test for excess errors)
gcc.dg/tree-ssa/ssa-fre-31.c (test for excess errors)
Pass disappears [PASS => ]:
gcc.dg/torture/vshuf-v16hi.c -O2 execution test
gcc.dg/torture/vshuf-v32qi.c -O2 execution test
gcc.dg/tree-ssa/pr45427.c scan-tree-dump-times cunrolli "bounded by 0" 0
Fail appears [ => FAIL]:
c-c++-common/torture/vshuf-v16hi.c -O1 (internal compiler error)
c-c++-common/torture/vshuf-v16hi.c -O2 (internal compiler error)
c-c++-common/torture/vshuf-v16hi.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (internal compiler error)
c-c++-common/torture/vshuf-v16hi.c -O3 -fomit-frame-pointer (internal
compiler error)
c-c++-common/torture/vshuf-v16hi.c -O3 -g (internal compiler error)
c-c++-common/torture/vshuf-v16hi.c -Os (internal compiler error)
gcc.dg/torture/vshuf-v16hi.c -O2 (internal compiler error)
gcc.dg/torture/vshuf-v32qi.c -O2 (internal compiler error)
gcc.dg/tree-ssa/ssa-fre-31.c (internal compiler error)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
@ 2014-05-12 13:48 ` ktkachov at gcc dot gnu.org
2014-05-12 13:49 ` ramana at gcc dot gnu.org
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ktkachov at gcc dot gnu.org @ 2014-05-12 13:48 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
ktkachov at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ramana at gcc dot gnu.org
--- Comment #1 from ktkachov at gcc dot gnu.org ---
*** Bug 61155 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
2014-05-12 13:48 ` [Bug target/61154] " ktkachov at gcc dot gnu.org
@ 2014-05-12 13:49 ` ramana at gcc dot gnu.org
2014-05-12 16:04 ` rsandifo at gcc dot gnu.org
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-05-12 13:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-on-valid-code
Target| |arm-none-linux-gnueabihf
Status|UNCONFIRMED |NEW
Last reconfirmed| |2014-05-12
Ever confirmed|0 |1
--- Comment #2 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
I see the same.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
2014-05-12 13:48 ` [Bug target/61154] " ktkachov at gcc dot gnu.org
2014-05-12 13:49 ` ramana at gcc dot gnu.org
@ 2014-05-12 16:04 ` rsandifo at gcc dot gnu.org
2014-05-13 11:22 ` [Bug target/61154] [4.10 Regression][ARM] " rguenth at gcc dot gnu.org
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2014-05-12 16:04 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
--- Comment #3 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
This code is doing an OImode ASHIFT and fails the check:
#if TARGET_SUPPORTS_WIDE_INT == 0
/* This assert keeps the simplification from producing a result
that cannot be represented in a CONST_DOUBLE but a lot of
upstream callers expect that this function never fails to
simplify something and so you if you added this to the test
above the code would die later anyway. If this assert
happens, you just need to make the port support wide int. */
gcc_assert (width <= HOST_BITS_PER_DOUBLE_INT);
#endif
since without CONST_WIDE_INT we won't be able to represent all
results correctly.
Unfortunately porting to CONST_WIDE_INT is something that needs
knowledge of the target-specific code, but it shouldn't be much work.
It's just a case of auditing each use of const_double in config/arm
to see whether it is handling integer const_doubles or floating-point
const_doubles. Since ARM is a 32-bit target and since HWI and CONST_INT
are 64 bits, I assume most places really are handling floating-point values.
(A grep makes that obvious for some things, but arm_immediate_di_operand
does accept const_double. I'm not sure whether that's just a left-over
from pre need_64bit_hwint days though.)
Adding:
#define TARGET_SUPPORTS_WIDE_INT 1
does fix the ICE but it'd be good audit the use of const_doubles too.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [4.10 Regression][ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
` (2 preceding siblings ...)
2014-05-12 16:04 ` rsandifo at gcc dot gnu.org
@ 2014-05-13 11:22 ` rguenth at gcc dot gnu.org
2014-05-19 14:47 ` ramana at gcc dot gnu.org
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-05-13 11:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.10.0
Summary|[ARM] wide-int merge |[4.10 Regression][ARM]
|introduced regressions in |wide-int merge introduced
|vshuf tests |regressions in vshuf tests
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [4.10 Regression][ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
` (3 preceding siblings ...)
2014-05-13 11:22 ` [Bug target/61154] [4.10 Regression][ARM] " rguenth at gcc dot gnu.org
@ 2014-05-19 14:47 ` ramana at gcc dot gnu.org
2014-06-02 8:23 ` ramana at gcc dot gnu.org
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-05-19 14:47 UTC (permalink / raw)
To: gcc-bugs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 6555 bytes --]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |ramana at gcc dot gnu.org
--- Comment #5 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
(In reply to rsandifo@gcc.gnu.org from comment #3)
> This code is doing an OImode ASHIFT and fails the check:
>
> #if TARGET_SUPPORTS_WIDE_INT == 0
> /* This assert keeps the simplification from producing a result
> that cannot be represented in a CONST_DOUBLE but a lot of
> upstream callers expect that this function never fails to
> simplify something and so you if you added this to the test
> above the code would die later anyway. If this assert
> happens, you just need to make the port support wide int. */
> gcc_assert (width <= HOST_BITS_PER_DOUBLE_INT);
> #endif
>
> since without CONST_WIDE_INT we won't be able to represent all
> results correctly.
>
> Unfortunately porting to CONST_WIDE_INT is something that needs
> knowledge of the target-specific code, but it shouldn't be much work.
> It's just a case of auditing each use of const_double in config/arm
> to see whether it is handling integer const_doubles or floating-point
> const_doubles. Since ARM is a 32-bit target and since HWI and CONST_INT
> are 64 bits, I assume most places really are handling floating-point values.
> (A grep makes that obvious for some things, but arm_immediate_di_operand
> does accept const_double. I'm not sure whether that's just a left-over
> from pre need_64bit_hwint days though.)
>
I suppose mine.
In addition to auditing for the use of const_doubles, I think one thing that
needs to be mentioned explicitly is trying to find use of const_double_operand
as well. One of the splitters in the backend which split DImode immediate moves
was actually explicitly trying to only look for const_double_operand and it
appears that this just worked (TM) prior to a trial switch to
TARGET_SUPPORTS_WIDE_INT. I'm still trying to test through the rest of that.
I note that SPARC has a similar define_split so it might also be affected by
such a switch over.
I still have an unfinished patch stack on top of that which will attempt to fix
other cases in the backend where we could be replacing uses of GEN_INT with
gen_int_mode. Is there any rule of thumb for such a conversion ?
regards
Ramana
> Adding:
>
> #define TARGET_SUPPORTS_WIDE_INT 1
>
> does fix the ICE but it'd be good audit the use of const_doubles too.
>From gcc-bugs-return-451925-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon May 19 15:53:39 2014
Return-Path: <gcc-bugs-return-451925-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 367 invoked by alias); 19 May 2014 15:53:39 -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 32760 invoked by uid 48); 19 May 2014 15:53:33 -0000
From: "hvtaifwkbgefbaei at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug lto/53831] [4.7 Regression] Virtuals missing in LTO symtab
Date: Mon, 19 May 2014 15:53:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: lto
X-Bugzilla-Version: 4.7.1
X-Bugzilla-Keywords: lto
X-Bugzilla-Severity: normal
X-Bugzilla-Who: hvtaifwkbgefbaei at gmail dot com
X-Bugzilla-Status: WAITING
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.7.4
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cc
Message-ID: <bug-53831-4-9K56UjsEDm@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-53831-4@http.gcc.gnu.org/bugzilla/>
References: <bug-53831-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-05/txt/msg01617.txt.bz2
Content-length: 1961
https://gcc.gnu.org/bugzilla/show_bug.cgi?idS831
Sami Farin <hvtaifwkbgefbaei at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hvtaifwkbgefbaei at gmail dot com
--- Comment #33 from Sami Farin <hvtaifwkbgefbaei at gmail dot com> ---
Is 4.9.0 supposed to work with -flto with ar archives? It works if I do gcc
-flto *.o, though.
$ gcc-ar r libdiv.a div64.o
/bin/ar terminated with signal 11 [Segmentation fault]
...
Starting program: /usr/bin/ar r --plugin
/usr/libexec/gcc/x86_64-redhat-linux/4.9.?/liblto_plugin.so libdiv.a div64.o
Program received signal SIGSEGV, Segmentation fault.
bfd_plugin_get_symbols_in_object_only (abfd=0x6138f0) at plugin.c:151
151 plugin_data->object_only_syms = NULL;
(gdb) bt
#0 bfd_plugin_get_symbols_in_object_only (abfd=0x6138f0) at plugin.c:151
#1 add_symbols (handle=0x6138f0, nsyms=1, syms=0x618e20) at plugin.c:278
#2 0x00007ffff0bb577a in claim_file_handler (file=0x7fffffff9880,
claimed=0x7fffffff987c) at ../../lto-plugin/lto-plugin.c:929
#3 0x00007ffff7b806d4 in bfd_plugin_object_p (abfd=0x6138f0) at plugin.c:450
#4 0x00007ffff7b0c415 in bfd_check_format_matches (abfd=0x6138f0,
format¿d_object, matching=0x0) at format.c:278
#5 0x00007ffff7b047a2 in _bfd_write_archive_contents (arch=0x615cd0) at
archive.c:2149
#6 0x00007ffff7b0dcef in bfd_close (abfd«fd@entry=0x615cd0) at opncls.c:718
#7 0x0000000000404f37 in write_archive (iarch=iarch@entry=0x60f1e0) at
ar.c:1160
#8 0x00000000004054ec in replace_members (arch=arch@entry=0x60f1e0,
files_to_move=0x60ef10, files_to_move@entry=0x60ef08, quick=0) at ar.c:1401
#9 0x0000000000402a8f in main (argc=6, argv=0x60ef00) at ar.c:836
(gdb) p plugin_data
$2 = (struct plugin_data_struct *) 0x0
$ cat div64.c
#include <stdint.h>
uint64_t div64(uint64_t x, uint64_t y) { return x/y; }
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [4.10 Regression][ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
` (4 preceding siblings ...)
2014-05-19 14:47 ` ramana at gcc dot gnu.org
@ 2014-06-02 8:23 ` ramana at gcc dot gnu.org
2014-06-02 9:20 ` rsandifo at gcc dot gnu.org
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-06-02 8:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
--- Comment #6 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
Author: ramana
Date: Mon Jun 2 08:22:30 2014
New Revision: 211129
URL: http://gcc.gnu.org/viewcvs?rev=211129&root=gcc&view=rev
Log:
Fix PR target/61154
2014-06-02 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/61154
* config/arm/arm.h (TARGET_SUPPORTS_WIDE_INT): Define.
* config/arm/arm.md (mov64 splitter): Replace const_double_operand
with immediate_operand.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/arm.h
trunk/gcc/config/arm/arm.md
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [4.10 Regression][ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
` (5 preceding siblings ...)
2014-06-02 8:23 ` ramana at gcc dot gnu.org
@ 2014-06-02 9:20 ` rsandifo at gcc dot gnu.org
2014-06-02 9:27 ` ramana at gcc dot gnu.org
2014-07-16 16:44 ` yroux at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: rsandifo at gcc dot gnu.org @ 2014-06-02 9:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |naroyce at hotmail dot com
--- Comment #7 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> ---
*** Bug 61353 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [4.10 Regression][ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
` (6 preceding siblings ...)
2014-06-02 9:20 ` rsandifo at gcc dot gnu.org
@ 2014-06-02 9:27 ` ramana at gcc dot gnu.org
2014-07-16 16:44 ` yroux at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-06-02 9:27 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #8 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
Fixed presumably.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/61154] [4.10 Regression][ARM] wide-int merge introduced regressions in vshuf tests
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
` (7 preceding siblings ...)
2014-06-02 9:27 ` ramana at gcc dot gnu.org
@ 2014-07-16 16:44 ` yroux at gcc dot gnu.org
8 siblings, 0 replies; 10+ messages in thread
From: yroux at gcc dot gnu.org @ 2014-07-16 16:44 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61154
--- Comment #10 from yroux at gcc dot gnu.org ---
Author: yroux
Date: Wed Jul 16 16:44:09 2014
New Revision: 212685
URL: https://gcc.gnu.org/viewcvs?rev=212685&root=gcc&view=rev
Log:
2014-07-16 Yvan Roux <yvan.roux@linaro.org>
Backport from trunk r211129.
2014-06-02 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
PR target/61154
* config/arm/arm.h (TARGET_SUPPORTS_WIDE_INT): Define.
* config/arm/arm.md (mov64 splitter): Replace const_double_operand
with immediate_operand.
Modified:
branches/linaro/gcc-4_9-branch/gcc/ChangeLog.linaro
branches/linaro/gcc-4_9-branch/gcc/config/arm/arm.h
branches/linaro/gcc-4_9-branch/gcc/config/arm/arm.md
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-07-16 16:44 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-12 12:40 [Bug middle-end/61154] New: [ARM] wide-int merge introduced regressions in vshuf tests christophe.lyon at st dot com
2014-05-12 13:48 ` [Bug target/61154] " ktkachov at gcc dot gnu.org
2014-05-12 13:49 ` ramana at gcc dot gnu.org
2014-05-12 16:04 ` rsandifo at gcc dot gnu.org
2014-05-13 11:22 ` [Bug target/61154] [4.10 Regression][ARM] " rguenth at gcc dot gnu.org
2014-05-19 14:47 ` ramana at gcc dot gnu.org
2014-06-02 8:23 ` ramana at gcc dot gnu.org
2014-06-02 9:20 ` rsandifo at gcc dot gnu.org
2014-06-02 9:27 ` ramana at gcc dot gnu.org
2014-07-16 16:44 ` yroux 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).