Bug 49696 - ICE on mips when compiling drizzle
Summary: ICE on mips when compiling drizzle
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.6.2
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-07-10 11:03 UTC by Aurelien Jarno
Modified: 2011-10-06 06:40 UTC (History)
1 user (show)

See Also:
Host: mips-unknown-linux-gnu
Target: mips-unknown-linux-gnu
Build: mips-unknown-linux-gnu
Known to work:
Known to fail:
Last reconfirmed:


Attachments
Testcase to reproduce the issue (444 bytes, text/plain)
2011-07-10 11:03 UTC, Aurelien Jarno
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Aurelien Jarno 2011-07-10 11:03:25 UTC
Created attachment 24731 [details]
Testcase to reproduce the issue

When building drizzle on mips, g++ crash with an internal compiler error. The problem is reproducible with versions 4.4, 4.5 and 4.6, but not with version 4.3 (I didn't test earlier versions). I have attached a reduced testcase.

$ g++ -c ./testcase-min.ii
./testcase-min.ii: In member function 'drizzled::internal::gcc_traits<T, D>::value_type drizzled::internal::gcc_traits<T, D>::fetch(const volatile value_type*) const volatile [with T = bool, D = bool, drizzled::internal::gcc_traits<T, D>::value_type = bool]':
./testcase-min.ii:12:5: error: unrecognizable insn:
(insn 16 15 17 3 (parallel [
            (set (reg:SI 205)
                (mem/v:SI (reg:SI 200) [-1 S4 A32]))
            (set (mem/v:SI (reg:SI 200) [-1 S4 A32])
                (unspec_volatile:SI [
                        (reg:SI 203)
                        (reg:SI 204)
                        (plus:SI (reg:SI 205)
                            (const_int 0 [0]))
                    ] UNSPEC_SYNC_OLD_OP_12))
            (clobber (scratch:SI))
        ]) ./testcase-min.ii:11 -1
     (nil))
./testcase-min.ii:12:5: internal compiler error: in extract_insn, at recog.c:2109
Please submit a full bug report,
with preprocessed source if appropriate.
Comment 1 Richard Sandiford 2011-10-02 17:45:16 UTC
Author: rsandifo
Date: Sun Oct  2 17:45:10 2011
New Revision: 179431

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=179431
Log:
gcc/
	PR target/49696
	* config/mips/sync.md (sync_<optab>_12): Allow zero operands.
	(sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
	(sync_old_nand_12, sync_new_nand_12, test_and_set_12): Likewise.

gcc/testsuite/
	* gcc.dg/pr49696.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/pr49696.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/mips/sync.md
    trunk/gcc/testsuite/ChangeLog
Comment 2 Richard Sandiford 2011-10-02 17:47:53 UTC
Patch applied to trunk.  I don't think this is a regression,
so it probably isn't suitable for the release branches.
Comment 3 Aurelien Jarno 2011-10-06 06:40:46 UTC
I confirm the issue is fixed in trunk. Thanks!