Bug 37197 - -msse4 ICE on __builtin_parityl
Summary: -msse4 ICE on __builtin_parityl
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.3.2
: P3 normal
Target Milestone: 4.3.3
Assignee: Uroš Bizjak
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords: patch
Depends on:
Blocks: 35540
  Show dependency treegraph
 
Reported: 2008-08-22 06:31 UTC by H.J. Lu
Modified: 2009-05-12 12:07 UTC (History)
4 users (show)

See Also:
Host:
Target: i686-pc-linux
Build:
Known to work:
Known to fail:
Last reconfirmed: 2008-08-22 12:42:28


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2008-08-22 06:31:12 UTC
[hjl@gnu-6 gcc]$ cat /tmp/x.i
int __attribute__ ((noinline))
testl (unsigned long *a, int b)
{
  return b ? 1 : __builtin_parityl (*a);
}
[hjl@gnu-6 gcc]$ ./xgcc -B./ -m32 -S /tmp/x.i -O2 -msse4
/tmp/x.i: In function âtestlâ:
/tmp/x.i:5: internal compiler error: output_operand: invalid expression as operand
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
[hjl@gnu-6 gcc]$ ./xgcc --version
xgcc (GCC) 4.4.0 20080821 (experimental) [trunk revision 139403]
Comment 1 Uroš Bizjak 2008-08-22 12:42:28 UTC
Confirmed, not a regression.

Patch in testing.
Comment 2 uros 2008-08-22 14:00:20 UTC
Subject: Bug 37197

Author: uros
Date: Fri Aug 22 13:58:52 2008
New Revision: 139471

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=139471
Log:
        PR target/37184
        * config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
        CCCmode, CCOmode and CCSmode destination modes.

        PR target/37191
        * config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
        from different units in a single alternative.
        (*vec_extractv2sf_1): Ditto.
        (*vec_extractv2si_0): Ditto.
        (*vec_extractv2si_1): Ditto.
        * config/i386/sse.md (sse2_storehpd): Ditto.
        (sse2_storelpd): Ditto.
        (sse2_loadhpd): Ditto.
        (sse2_loadlpd): Ditto.

        PR target/37197
        * config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
        (popcountsi2): Ditto.
        (clzdi2_abm): Ditto.
        (popcountdi2): Ditto.
        (clzhi2_abm): Ditto.
        (popcounthi2): Ditto.

testsuite/ChangeLog:

        PR target/37184
        * gcc.target/i386/pr37184.c: New test.

        PR target/37191
        * gcc.target/i386/pr37191.c: New test.

        PR target/37197
        * gcc.target/i386/pr37197.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/i386/pr37184.c
    trunk/gcc/testsuite/gcc.target/i386/pr37191.c
    trunk/gcc/testsuite/gcc.target/i386/pr37197.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.md
    trunk/gcc/config/i386/mmx.md
    trunk/gcc/config/i386/sse.md
    trunk/gcc/testsuite/ChangeLog

Comment 3 Uroš Bizjak 2008-08-22 14:04:36 UTC
Fixed for 4.4.
Comment 4 uros 2008-08-28 13:32:42 UTC
Subject: Bug 37197

Author: uros
Date: Thu Aug 28 13:31:33 2008
New Revision: 139707

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=139707
Log:
	PR target/37184
	* config/i386/i386.c (ix86_match_ccmode): Handle CCAmode,
	CCCmode, CCOmode and CCSmode destination modes.

	PR target/37191
	* config/i386/mmx.md (*vec_extractv2sf_0): Avoid combining registers
	from different units in a single alternative.
	(*vec_extractv2sf_1): Ditto.
	(*vec_extractv2si_0): Ditto.
	(*vec_extractv2si_1): Ditto.
	* config/i386/sse.md (sse2_storehpd): Ditto.
	(sse2_storelpd): Ditto.
	(sse2_loadhpd): Ditto.
	(sse2_loadlpd): Ditto.

	PR target/37197
	* config/i386/i386.md (clzsi2_abm): Fix operand 1 constraints.
	(popcountsi2): Ditto.
	(clzdi2_abm): Ditto.
	(popcountdi2): Ditto.
	(clzhi2_abm): Ditto.
	(popcounthi2): Ditto.

testsuite/ChangeLog:

	PR target/37184
	* gcc.target/i386/pr37184.c: New test.

	PR target/37191
	* gcc.target/i386/pr37191.c: New test.

	PR target/37197
	* gcc.target/i386/pr37197.c: New test.


Added:
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/pr37184.c
      - copied unchanged from r139471, trunk/gcc/testsuite/gcc.target/i386/pr37184.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/pr37191.c
      - copied unchanged from r139471, trunk/gcc/testsuite/gcc.target/i386/pr37191.c
    branches/gcc-4_3-branch/gcc/testsuite/gcc.target/i386/pr37197.c
      - copied unchanged from r139471, trunk/gcc/testsuite/gcc.target/i386/pr37197.c
Modified:
    branches/gcc-4_3-branch/gcc/ChangeLog
    branches/gcc-4_3-branch/gcc/config/i386/i386.c
    branches/gcc-4_3-branch/gcc/config/i386/i386.md
    branches/gcc-4_3-branch/gcc/config/i386/mmx.md
    branches/gcc-4_3-branch/gcc/config/i386/sse.md
    branches/gcc-4_3-branch/gcc/testsuite/ChangeLog

Comment 5 Uroš Bizjak 2008-08-28 13:46:29 UTC
Fixed.
Comment 6 uros 2009-05-12 11:43:08 UTC
Subject: Bug 37197

Author: uros
Date: Tue May 12 11:42:53 2009
New Revision: 147429

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=147429
Log:
	PR target/37197
	* config/i386/driver-i386.c (processor_signatures): New enum.
	(SIG_GEODE): Move from vendor_signatures to processor_signatures.
	(host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
	processor signature to detect geode processor.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/driver-i386.c

Comment 7 Uroš Bizjak 2009-05-12 12:07:03 UTC
Oops, wrong PR number.