Summary: | [4.0 regression] ICE with long doubles in expand_simple_unop | ||
---|---|---|---|
Product: | gcc | Reporter: | Debian GCC Maintainers <debian-gcc> |
Component: | target | Assignee: | Uroš Bizjak <ubizjak> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | gcc-bugs, pinskia, reichelt |
Priority: | P2 | Keywords: | ice-on-valid-code, monitored, patch |
Version: | 4.0.2 | ||
Target Milestone: | 4.0.3 | ||
URL: | http://gcc.gnu.org/ml/gcc-patches/2005-07/msg01490.html | ||
Host: | Target: | i486-linux | |
Build: | Known to work: | 3.4.4 4.1.0 | |
Known to fail: | 4.0.0 4.0.1 | Last reconfirmed: | 2005-09-04 18:20:24 |
Description
Debian GCC Maintainers
2005-07-21 12:01:24 UTC
Confirmed (at least the ICE in redirect_branch_edge and extract_insn, I cannot reproduce the one in expand_simple_unop). Reduced testcase: ========================= struct A { long double d; }; int foo(struct A *p) { if (p->d) return 1; } ========================= This is related to PR22576. I was trying to trigger the "unrecognizable insn" bug with gcc-4.1, because this bug should be fixed by the patch in PR22576. I have tested: gcc -O2 -mno-ieee-fp fractal.c gcc -O2 -ffast-math fractal.c gcc -O2 fractal.c gcc -mno-ieee-fp fractal.c gcc -ffast-math fractal.c gcc fractal.c And the same pack of compile options with testcase from comment #1. In all cases, compilation was successful. The compiler was: gcc version 4.1.0 20050716 (experimental), patched with patch from PR22576. I'm updating the summary to reflect this. Uros' patch for PR22576 indeed fixes the ICEs in redirect_branch and extract_insn on the 4.0 branch and mainline. But I can now confirm the bug in expand_simple_unop, I just had to add -march=i486 to the command line. So here's a reduced testcase (compile with "gcc -O -ffast-math -march=i486"): ==================================== int foo(long double d, int i) { if (d == (long double)i) return 1; } ==================================== Happens on the 4.0 branch and mainline. Patch here: http://gcc.gnu.org/ml/gcc-patches/2005-07/msg01490.html Patch fixes compilation of testcase from comment #3 and compilation of fractal.c. Subject: Bug 22585 CVSROOT: /cvs/gcc Module name: gcc Changes by: ian@gcc.gnu.org 2005-09-21 18:39:10 Modified files: gcc : ChangeLog gcc/config/i386: i386.c Log message: PR target/22585 * config/i386/i386.c (ix86_prepare_fp_compare_args): Do not force integer op1 into register for XFmode compares. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9998&r2=2.9999 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&r1=1.859&r2=1.860 Fixed on the mainline. Subject: Bug 22585 CVSROOT: /cvs/gcc Module name: gcc Changes by: janis@gcc.gnu.org 2005-09-26 19:19:43 Modified files: gcc/testsuite : ChangeLog Added files: gcc/testsuite/gcc.target/i386: pr22576.c pr22585.c pr23268.c builtin-apply-mmx.c Log message: 2005-08-26 Uros Bizjak <uros@kss-loka.si> * gcc.target/i386/builtin-apply-mmx.c: New test. PR target/22576 * gcc.target/i386/pr22576.c: New test. PR target/22585 * gcc.target/i386/pr22585.c: New test. PR target/23268 * gcc.target/i386/pr23268.c: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.6104&r2=1.6105 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr22576.c.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr22585.c.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr23268.c.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/builtin-apply-mmx.c.diff?cvsroot=gcc&r1=NONE&r2=1.1 Subject: Bug 22585 CVSROOT: /cvs/gcc Module name: gcc Branch: gcc-4_0-branch Changes by: uros@gcc.gnu.org 2005-10-07 05:32:37 Modified files: gcc : ChangeLog gcc/config/i386: i386.c sse.md gcc/testsuite : ChangeLog Added files: gcc/testsuite/gcc.target/i386: pr22576.c pr22585.c pr23570.c Log message: PR target/23570 * config/i386/sse.md (*sse_concatv2sf): Change operand 2 constraint to "reg_or_0_operand". (sse2_loadld): Change operand 1 constraint to "reg_or_0_operand". testsuite/ PR target/22576 * gcc.target/i386/pr22576.c: New test. PR target/22585 * gcc.target/i386/pr22585.c: New test. PR target/23570 * gcc.target/i386/pr23570.c: New test. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.451&r2=2.7592.2.452 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.795.6.11&r2=1.795.6.12 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/sse.md.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.7.14.2&r2=1.7.14.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.434&r2=1.5084.2.435 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr22576.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.10.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr22585.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.2.10.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.target/i386/pr23570.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.20.1 Fixed on 4.0 branch. |