This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/37243] [4.4 Regression] IRA causes wrong code generation
- From: "hjl dot tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 3 Sep 2008 16:05:03 -0000
- Subject: [Bug middle-end/37243] [4.4 Regression] IRA causes wrong code generation
- References: <bug-37243-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #22 from hjl dot tools at gmail dot com 2008-09-03 16:05 -------
(In reply to comment #7)
> Created an attachment (id=16155)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16155&action=view) [edit]
> Test case from 2006.434.zeusmp
>
> Though fail to extract a smaller case, hopeful it helpful.
>
> Compile with gfortran -c -O2 -DSPEC_CPU_LP64 tranx1.f -S -fdump-rtl-all -g.
> Miscompile in revision 139590.
>
> In IRA dump file, I believe following suspicious RTL is the cause of segfault:
> (insn 886 885 893 35 tranx1.f:570 (set (reg:DI 0 ax [orig:123 D.3215 ] [123])
> (mem/c:DI (plus:DI (reg/f:DI 7 sp)
> (const_int -104 [0xffffffffffffff98])) [68 D.3215+0 S8 A64]))
> 89 {*movdi_1_rex64} (nil))
>
> (insn 893 886 896 35 tranx1.f:570 (set (mem/c:DI (plus:DI (reg/f:DI 7 sp)
> (const_int -104 [0xffffffffffffff98])) [68 ivtmp.160+0 S8 A64])
> (reg/f:DI 3 bx [orig:159 ivtmp.160 ] [159])) 89 {*movdi_1_rex64} (nil))
> D.3215 and ivtmp.160 shares the spill space (%rsp-104), where as D.3215 and
> ivtmp.160 has overlapped liverange.
>
It is fixed by Richard's use DF patch:
http://gcc.gnu.org/ml/gcc/2008-09/msg00015.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37243