public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
@ 2022-02-24 20:29 jakub at gcc dot gnu.org
2022-02-24 20:30 ` [Bug target/104681] " jakub at gcc dot gnu.org
` (11 more replies)
0 siblings, 12 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-02-24 20:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
Bug ID: 104681
Summary: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble
ICE since r9-6460
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
The following testcase ICEs on powerpc64le-linux with -O2 -mabi=ieeelongdouble
since r9-6460-gb496651b7d281bd1bf22688f4de0cbb78c1bf8e5:
struct A {
A(bool) : a(__builtin_nansl ("")), b(0) {}
long double a;
long b;
};
struct B {
void foo() {
void bar();
c = bar;
}
A c;
};
struct C {
void baz();
B d;
};
void C::baz() { d.foo(); }
cc7NbdyL.C: In member function ‘void C::baz()’:
cc7NbdyL.C:17:26: error: unrecognizable insn:
17 | void C::baz() { d.foo(); }
| ^
(insn 6 3 7 2 (set (mem:TF (reg/f:DI 121 [ this ]) [3 MEM[(struct A
*)this_1(D)]+0 S16 A8])
(const_double:TF +SNaN [+SNaN])) "cc7NbdyL.C":9:7 -1
(nil))
during RTL pass: vregs
cc7NbdyL.C:17:26: internal compiler error: in extract_insn, at recog.c:2310
I think the reason for it is the movmisalign<mode> expander which is just:
(define_expand "movmisalign<mode>"
[(set (match_operand:VEC_N 0 "nonimmediate_operand")
(match_operand:VEC_N 1 "any_operand"))]
"VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_ALLOW_MOVMISALIGN"
"")
and so doesn't what normal "mov<mode>" expanders do - rs6000_emit_move - which
e.g. for the MEM destinations and CONST_DOUBLE sources forces the sources into
reg.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
@ 2022-02-24 20:30 ` jakub at gcc dot gnu.org
2022-02-25 11:55 ` jakub at gcc dot gnu.org
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-02-24 20:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
Target Milestone|--- |9.5
CC| |dje at gcc dot gnu.org,
| |meissner at gcc dot gnu.org,
| |segher at gcc dot gnu.org,
| |wschmidt at gcc dot gnu.org
Keywords| |ice-on-valid-code
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
2022-02-24 20:30 ` [Bug target/104681] " jakub at gcc dot gnu.org
@ 2022-02-25 11:55 ` jakub at gcc dot gnu.org
2022-02-25 15:40 ` segher at gcc dot gnu.org
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-02-25 11:55 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 52513
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52513&action=edit
gcc12-pr104681.patch
Patch I'm testing right now.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
2022-02-24 20:30 ` [Bug target/104681] " jakub at gcc dot gnu.org
2022-02-25 11:55 ` jakub at gcc dot gnu.org
@ 2022-02-25 15:40 ` segher at gcc dot gnu.org
2022-02-25 15:43 ` jakub at gcc dot gnu.org
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: segher at gcc dot gnu.org @ 2022-02-25 15:40 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Could you just change the insn condition to test if at least one of the
operands is a reg?
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (2 preceding siblings ...)
2022-02-25 15:40 ` segher at gcc dot gnu.org
@ 2022-02-25 15:43 ` jakub at gcc dot gnu.org
2022-02-25 17:05 ` segher at gcc dot gnu.org
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-02-25 15:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
No.
/* The movmisalign<mode> pattern cannot fail, else the assignment
would silently be omitted. */
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (3 preceding siblings ...)
2022-02-25 15:43 ` jakub at gcc dot gnu.org
@ 2022-02-25 17:05 ` segher at gcc dot gnu.org
2022-02-25 18:02 ` cvs-commit at gcc dot gnu.org
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: segher at gcc dot gnu.org @ 2022-02-25 17:05 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> ---
We also do the same in define_insn bodies, with a force_reg if needed.
But we do indirect via rs6000_emit_move elsewhere, so let's do that here as
well; it isn't a great idea, but consistency wins, certainly in stage 4.
The patch is okay for trunk. Thank you! Any backports as well, if you want.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (4 preceding siblings ...)
2022-02-25 17:05 ` segher at gcc dot gnu.org
@ 2022-02-25 18:02 ` cvs-commit at gcc dot gnu.org
2022-02-25 18:03 ` [Bug target/104681] [9/10/11 " jakub at gcc dot gnu.org
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-02-25 18:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #5 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:3885a122f817a1b6dca4a84ba9e020d5ab2060af
commit r12-7393-g3885a122f817a1b6dca4a84ba9e020d5ab2060af
Author: Jakub Jelinek <jakub@redhat.com>
Date: Fri Feb 25 18:58:48 2022 +0100
rs6000: Use rs6000_emit_move in movmisalign<mode> expander [PR104681]
The following testcase ICEs, because for some strange reason it decides to
use
movmisaligntf during expansion where the destination is MEM and source is
CONST_DOUBLE. For normal mov<mode> expanders the rs6000 backend uses
rs6000_emit_move to ensure that if one operand is a MEM, the other is a REG
and a few other things, but for movmisalign<mode> nothing enforced this.
The middle-end documents that movmisalign<mode> shouldn't fail, so we can't
force that through predicates or condition on the expander.
2022-02-25 Jakub Jelinek <jakub@redhat.com>
PR target/104681
* config/rs6000/vector.md (movmisalign<mode>): Use
rs6000_emit_move.
* g++.dg/opt/pr104681.C: New test.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (5 preceding siblings ...)
2022-02-25 18:02 ` cvs-commit at gcc dot gnu.org
@ 2022-02-25 18:03 ` jakub at gcc dot gnu.org
2022-03-29 5:53 ` cvs-commit at gcc dot gnu.org
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-02-25 18:03 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Summary|[9/10/11/12 Regression] |[9/10/11 Regression]
|ppc64le |ppc64le
|-mabi=ieeelongdouble ICE |-mabi=ieeelongdouble ICE
|since r9-6460 |since r9-6460
Last reconfirmed| |2022-02-25
Status|UNCONFIRMED |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed on the trunk so far.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10/11 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (6 preceding siblings ...)
2022-02-25 18:03 ` [Bug target/104681] [9/10/11 " jakub at gcc dot gnu.org
@ 2022-03-29 5:53 ` cvs-commit at gcc dot gnu.org
2022-03-30 8:15 ` [Bug target/104681] [9/10 " jakub at gcc dot gnu.org
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-03-29 5:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:
https://gcc.gnu.org/g:b59d29392774b115bea0066b4ad1eb2b959a3a2b
commit r11-9721-gb59d29392774b115bea0066b4ad1eb2b959a3a2b
Author: Jakub Jelinek <jakub@redhat.com>
Date: Fri Feb 25 18:58:48 2022 +0100
rs6000: Use rs6000_emit_move in movmisalign<mode> expander [PR104681]
The following testcase ICEs, because for some strange reason it decides to
use
movmisaligntf during expansion where the destination is MEM and source is
CONST_DOUBLE. For normal mov<mode> expanders the rs6000 backend uses
rs6000_emit_move to ensure that if one operand is a MEM, the other is a REG
and a few other things, but for movmisalign<mode> nothing enforced this.
The middle-end documents that movmisalign<mode> shouldn't fail, so we can't
force that through predicates or condition on the expander.
2022-02-25 Jakub Jelinek <jakub@redhat.com>
PR target/104681
* config/rs6000/vector.md (movmisalign<mode>): Use
rs6000_emit_move.
* g++.dg/opt/pr104681.C: New test.
(cherry picked from commit 3885a122f817a1b6dca4a84ba9e020d5ab2060af)
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (7 preceding siblings ...)
2022-03-29 5:53 ` cvs-commit at gcc dot gnu.org
@ 2022-03-30 8:15 ` jakub at gcc dot gnu.org
2022-05-10 8:24 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-03-30 8:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[9/10/11 Regression] |[9/10 Regression] ppc64le
|ppc64le |-mabi=ieeelongdouble ICE
|-mabi=ieeelongdouble ICE |since r9-6460
|since r9-6460 |
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed for 11.3 too.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (8 preceding siblings ...)
2022-03-30 8:15 ` [Bug target/104681] [9/10 " jakub at gcc dot gnu.org
@ 2022-05-10 8:24 ` cvs-commit at gcc dot gnu.org
2022-05-11 6:25 ` cvs-commit at gcc dot gnu.org
2022-05-11 6:36 ` jakub at gcc dot gnu.org
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-05-10 8:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #9 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:cc7bc8b2ba5adc89e99bc7923cd3e822b7d465cf
commit r10-10689-gcc7bc8b2ba5adc89e99bc7923cd3e822b7d465cf
Author: Jakub Jelinek <jakub@redhat.com>
Date: Fri Feb 25 18:58:48 2022 +0100
rs6000: Use rs6000_emit_move in movmisalign<mode> expander [PR104681]
The following testcase ICEs, because for some strange reason it decides to
use
movmisaligntf during expansion where the destination is MEM and source is
CONST_DOUBLE. For normal mov<mode> expanders the rs6000 backend uses
rs6000_emit_move to ensure that if one operand is a MEM, the other is a REG
and a few other things, but for movmisalign<mode> nothing enforced this.
The middle-end documents that movmisalign<mode> shouldn't fail, so we can't
force that through predicates or condition on the expander.
2022-02-25 Jakub Jelinek <jakub@redhat.com>
PR target/104681
* config/rs6000/vector.md (movmisalign<mode>): Use
rs6000_emit_move.
* g++.dg/opt/pr104681.C: New test.
(cherry picked from commit 3885a122f817a1b6dca4a84ba9e020d5ab2060af)
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (9 preceding siblings ...)
2022-05-10 8:24 ` cvs-commit at gcc dot gnu.org
@ 2022-05-11 6:25 ` cvs-commit at gcc dot gnu.org
2022-05-11 6:36 ` jakub at gcc dot gnu.org
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-05-11 6:25 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-9 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:
https://gcc.gnu.org/g:5c742d9a7e217746de961da20a39f04e5ec1df25
commit r9-10135-g5c742d9a7e217746de961da20a39f04e5ec1df25
Author: Jakub Jelinek <jakub@redhat.com>
Date: Fri Feb 25 18:58:48 2022 +0100
rs6000: Use rs6000_emit_move in movmisalign<mode> expander [PR104681]
The following testcase ICEs, because for some strange reason it decides to
use
movmisaligntf during expansion where the destination is MEM and source is
CONST_DOUBLE. For normal mov<mode> expanders the rs6000 backend uses
rs6000_emit_move to ensure that if one operand is a MEM, the other is a REG
and a few other things, but for movmisalign<mode> nothing enforced this.
The middle-end documents that movmisalign<mode> shouldn't fail, so we can't
force that through predicates or condition on the expander.
2022-02-25 Jakub Jelinek <jakub@redhat.com>
PR target/104681
* config/rs6000/vector.md (movmisalign<mode>): Use
rs6000_emit_move.
* g++.dg/opt/pr104681.C: New test.
(cherry picked from commit 3885a122f817a1b6dca4a84ba9e020d5ab2060af)
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug target/104681] [9/10 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
` (10 preceding siblings ...)
2022-05-11 6:25 ` cvs-commit at gcc dot gnu.org
@ 2022-05-11 6:36 ` jakub at gcc dot gnu.org
11 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-05-11 6:36 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104681
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-05-11 6:36 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-24 20:29 [Bug target/104681] New: [9/10/11/12 Regression] ppc64le -mabi=ieeelongdouble ICE since r9-6460 jakub at gcc dot gnu.org
2022-02-24 20:30 ` [Bug target/104681] " jakub at gcc dot gnu.org
2022-02-25 11:55 ` jakub at gcc dot gnu.org
2022-02-25 15:40 ` segher at gcc dot gnu.org
2022-02-25 15:43 ` jakub at gcc dot gnu.org
2022-02-25 17:05 ` segher at gcc dot gnu.org
2022-02-25 18:02 ` cvs-commit at gcc dot gnu.org
2022-02-25 18:03 ` [Bug target/104681] [9/10/11 " jakub at gcc dot gnu.org
2022-03-29 5:53 ` cvs-commit at gcc dot gnu.org
2022-03-30 8:15 ` [Bug target/104681] [9/10 " jakub at gcc dot gnu.org
2022-05-10 8:24 ` cvs-commit at gcc dot gnu.org
2022-05-11 6:25 ` cvs-commit at gcc dot gnu.org
2022-05-11 6:36 ` 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).