public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints
@ 2014-03-25 16:31 doko at gcc dot gnu.org
2014-03-25 16:39 ` [Bug target/60657] " doko at gcc dot gnu.org
` (13 more replies)
0 siblings, 14 replies; 15+ messages in thread
From: doko at gcc dot gnu.org @ 2014-03-25 16:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Bug ID: 60657
Summary: [4.9 Regression] ICE: error: insn does not satisfy its
constraints
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: doko at gcc dot gnu.org
Created attachment 32452
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32452&action=edit
preprocessed source
seen with trunk r208764 on arm-linux-gnueabihf, works with 4.8 branch.
$ g++ -std=c++11 -c -g -O2 wide_posix_api.ii
In file included from ext/boost/regex/v4/regex.hpp:73:0,
from ext/boost/regex.hpp:31,
from ext/boost/libs/regex/src/wide_posix_api.cpp:25:
ext/boost/regex/v4/basic_regex_parser.hpp: In member function 'bool
boost::re_detail::basic_regex_parser<charT, traits>::parse_extended_escape()
[with charT = wchar_t; traits = boost::c_regex_traits<wchar_t>]':
ext/boost/regex/v4/basic_regex_parser.hpp:910:1: error: insn does not satisfy
its constraints:
}
^
(insn 3014 3013 3015 227 (set (reg:SI 788 [ D.215148 ])
(zero_extract:SI (reg:SI 786 [ this_35(D)->D.157694.m_backrefs ])
(const_int 1 [0x1])
(const_int 9999 [0x270f])))
ext/boost/regex/v4/basic_regex_parser.hpp:876 149 {extzv_t2}
(expr_list:REG_DEAD (reg:SI 786 [ this_35(D)->D.157694.m_backrefs ])
(nil)))
ext/boost/regex/v4/basic_regex_parser.hpp:910:1: internal compiler error: in
extract_constrain_insn_cached, at recog.c:2156
Please submit a full bug report,
with preprocessed source if appropriate.
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
4.9-20140322-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs
--enable-languages=c,c++,java,go,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.9 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap
--disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib
--disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-armhf
--with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions
--with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb
--disable-werror --enable-multilib --enable-checking=release
--build=arm-linux-gnueabihf --host=arm-linux-gnueabihf
--target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.9.0 20140322 (experimental) [trunk revision 208764] (Ubuntu
4.9-20140322-1ubuntu1)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
@ 2014-03-25 16:39 ` doko at gcc dot gnu.org
2014-03-25 18:18 ` ramana at gcc dot gnu.org
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: doko at gcc dot gnu.org @ 2014-03-25 16:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #1 from Matthias Klose <doko at gcc dot gnu.org> ---
seen with every package using this boost header
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
2014-03-25 16:39 ` [Bug target/60657] " doko at gcc dot gnu.org
@ 2014-03-25 18:18 ` ramana at gcc dot gnu.org
2014-03-26 12:52 ` rguenth at gcc dot gnu.org
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-03-25 18:18 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2014-03-25
CC| |ramana at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #2 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
Confirmed.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
2014-03-25 16:39 ` [Bug target/60657] " doko at gcc dot gnu.org
2014-03-25 18:18 ` ramana at gcc dot gnu.org
@ 2014-03-26 12:52 ` rguenth at gcc dot gnu.org
2014-03-26 20:45 ` jakub at gcc dot gnu.org
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-26 12:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.9.0
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (2 preceding siblings ...)
2014-03-26 12:52 ` rguenth at gcc dot gnu.org
@ 2014-03-26 20:45 ` jakub at gcc dot gnu.org
2014-03-26 20:46 ` jakub at gcc dot gnu.org
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-26 20:45 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Reduced testcase -O2 -march=armv7-a:
void foo (void);
void
bar (int x, int y)
{
y = 9999;
if (x & (1 << y))
foo ();
}
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (3 preceding siblings ...)
2014-03-26 20:45 ` jakub at gcc dot gnu.org
@ 2014-03-26 20:46 ` jakub at gcc dot gnu.org
2014-03-27 8:01 ` jakub at gcc dot gnu.org
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-26 20:46 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Note the code isn't invalid, just has undefined behavior.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (4 preceding siblings ...)
2014-03-26 20:46 ` jakub at gcc dot gnu.org
@ 2014-03-27 8:01 ` jakub at gcc dot gnu.org
2014-03-31 9:57 ` rguenth at gcc dot gnu.org
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-27 8:01 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This fixes this for me, based on:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/BABIDBHE.html
If gas accepts some other value beyond those, the conditions can be tweaked of
course, or it could be solved through more tight predicates and/or more
correct/tight constraints (don't see how 0-32 or any power of 2 applies here,
plus the ICE is that const_int_operand + no specific condition allowed combine
to match garbage insn and once you match it with a wrong number, when the
operand doesn't have a register possibility, there is no way to reload it).
Can somebody please test this (together with the testcase, dunno if
-march=armv7-a is tested often enough that the testcase could be just added to
gcc.c-torture/compile/pr60657.c or if you really want to add the -march=armv7-a
option explicitly). I'd also think that it would be worthwhile to look at all
arm insns with const_int_operand and constraint that doesn't accept all
CONST_INT values and check if it shouldn't be tightened.
--- gcc/config/arm/arm.md.jj 2014-01-03 11:41:20.000000000 +0100
+++ gcc/config/arm/arm.md 2014-03-27 08:53:48.267277083 +0100
@@ -4581,7 +4581,9 @@ (define_insn "*extv_reg"
(sign_extract:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "const_int_operand" "M")
(match_operand:SI 3 "const_int_operand" "M")))]
- "arm_arch_thumb2"
+ "arm_arch_thumb2
+ && IN_RANGE (INTVAL (operands[3]), 0, 31)
+ && IN_RANGE (INTVAL (operands[2]), 1, 32 - INTVAL (operands[3]))"
"sbfx%?\t%0, %1, %3, %2"
[(set_attr "length" "4")
(set_attr "predicable" "yes")
@@ -4594,7 +4596,9 @@ (define_insn "extzv_t2"
(zero_extract:SI (match_operand:SI 1 "s_register_operand" "r")
(match_operand:SI 2 "const_int_operand" "M")
(match_operand:SI 3 "const_int_operand" "M")))]
- "arm_arch_thumb2"
+ "arm_arch_thumb2
+ && IN_RANGE (INTVAL (operands[3]), 0, 31)
+ && IN_RANGE (INTVAL (operands[2]), 1, 32 - INTVAL (operands[3]))"
"ubfx%?\t%0, %1, %3, %2"
[(set_attr "length" "4")
(set_attr "predicable" "yes")
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (5 preceding siblings ...)
2014-03-27 8:01 ` jakub at gcc dot gnu.org
@ 2014-03-31 9:57 ` rguenth at gcc dot gnu.org
2014-04-01 19:43 ` law at redhat dot com
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-31 9:57 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (6 preceding siblings ...)
2014-03-31 9:57 ` rguenth at gcc dot gnu.org
@ 2014-04-01 19:43 ` law at redhat dot com
2014-04-02 18:29 ` law at redhat dot com
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: law at redhat dot com @ 2014-04-01 19:43 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Jeffrey A. Law <law at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |law at redhat dot com
--- Comment #6 from Jeffrey A. Law <law at redhat dot com> ---
There's a handful of these that need fixing in the ARM backend, some for the
'M' constraint others for 'I'.
Could you use satisfies_constraint_M and satisfies_constraint_I on the operand?
At least that way the constraint and the predicate are 100% checking the same
thing.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (7 preceding siblings ...)
2014-04-01 19:43 ` law at redhat dot com
@ 2014-04-02 18:29 ` law at redhat dot com
2014-04-03 3:55 ` law at redhat dot com
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: law at redhat dot com @ 2014-04-02 18:29 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #7 from Jeffrey A. Law <law at redhat dot com> ---
Actually, it occurs to me, why don't we fix the predicates. That seems like a
better solution than rejecting problematical constants in the insn's condition.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (8 preceding siblings ...)
2014-04-02 18:29 ` law at redhat dot com
@ 2014-04-03 3:55 ` law at redhat dot com
2014-04-04 13:13 ` law at gcc dot gnu.org
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: law at redhat dot com @ 2014-04-03 3:55 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #8 from Jeffrey A. Law <law at redhat dot com> ---
Patch is spinning which introduced new predicates which only allow suitable
constants.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (9 preceding siblings ...)
2014-04-03 3:55 ` law at redhat dot com
@ 2014-04-04 13:13 ` law at gcc dot gnu.org
2014-04-04 13:14 ` law at redhat dot com
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: law at gcc dot gnu.org @ 2014-04-04 13:13 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #9 from Jeffrey A. Law <law at gcc dot gnu.org> ---
Author: law
Date: Fri Apr 4 13:13:20 2014
New Revision: 209085
URL: http://gcc.gnu.org/viewcvs?rev=209085&root=gcc&view=rev
Log:
PR target/60657
* config/arm/predicates.md (const_int_I_operand): New predicate.
(const_int_M_operand): Similarly.
* config/arm/arm.md (insv_zero): Use const_int_M_operand instead of
const_int_operand.
(insv_t2, extv_reg, extzv_t2): Likewise.
(load_multiple_with_writeback): Similarly for const_int_I_operand.
(pop_multiple_with_writeback_and_return): Likewise.
(vfp_pop_multiple_with_writeback): Likewise
PR target/60657
* gcc.target/arm/pr60657.c: New test.
Added:
trunk/gcc/testsuite/gcc.target/arm/pr60657.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/arm.md
trunk/gcc/config/arm/predicates.md
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (10 preceding siblings ...)
2014-04-04 13:13 ` law at gcc dot gnu.org
@ 2014-04-04 13:14 ` law at redhat dot com
2014-04-07 13:17 ` ramana at gcc dot gnu.org
2014-04-07 22:11 ` jakub at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: law at redhat dot com @ 2014-04-04 13:14 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
Jeffrey A. Law <law at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #10 from Jeffrey A. Law <law at redhat dot com> ---
Fixed on trunk.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (11 preceding siblings ...)
2014-04-04 13:14 ` law at redhat dot com
@ 2014-04-07 13:17 ` ramana at gcc dot gnu.org
2014-04-07 22:11 ` jakub at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-04-07 13:17 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #11 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
Author: ramana
Date: Mon Apr 7 13:17:11 2014
New Revision: 209185
URL: http://gcc.gnu.org/viewcvs?rev=209185&root=gcc&view=rev
Log:
Fix testcase for PR target/60657
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/arm/pr60657.c
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug target/60657] [4.9 Regression] ICE: error: insn does not satisfy its constraints
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
` (12 preceding siblings ...)
2014-04-07 13:17 ` ramana at gcc dot gnu.org
@ 2014-04-07 22:11 ` jakub at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-04-07 22:11 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60657
--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
While the improved predicates make the first IN_RANGE tests unneeded, IMHO it
should still verify what the second IN_RANGE tests did, i.e. that operands[2]
is not 0 and at most 32 - third operand. I think the combiner just blindly
tries to match and simplify, all the verification is performed through trying
to recog the insn.
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2014-04-07 22:11 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-25 16:31 [Bug target/60657] New: [4.9 Regression] ICE: error: insn does not satisfy its constraints doko at gcc dot gnu.org
2014-03-25 16:39 ` [Bug target/60657] " doko at gcc dot gnu.org
2014-03-25 18:18 ` ramana at gcc dot gnu.org
2014-03-26 12:52 ` rguenth at gcc dot gnu.org
2014-03-26 20:45 ` jakub at gcc dot gnu.org
2014-03-26 20:46 ` jakub at gcc dot gnu.org
2014-03-27 8:01 ` jakub at gcc dot gnu.org
2014-03-31 9:57 ` rguenth at gcc dot gnu.org
2014-04-01 19:43 ` law at redhat dot com
2014-04-02 18:29 ` law at redhat dot com
2014-04-03 3:55 ` law at redhat dot com
2014-04-04 13:13 ` law at gcc dot gnu.org
2014-04-04 13:14 ` law at redhat dot com
2014-04-07 13:17 ` ramana at gcc dot gnu.org
2014-04-07 22:11 ` 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).