This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Scheduler moves load in front of store on powerpc-linux, 3.0 and mainline


Hi,

the attached testcase breaks KDE2 on powerpc-linux-gnu and I consider it 
probably the last gcc-3.0 showstopper bug I know of.

If compiled with -O2 -fPIC I get this assembler fragment in 
_ZN11NETRootInfo13setClientListEPmj/NETRootInfo::setClientList(unsigned 
long*, unsigned):

.L14:
        mr 4,29
        mr 3,28
        lwz 29,4(31)
        bl _Z7nwindupPmi@local
        lwz 11,4(31)
        mr 0,3
        lwz 9,.LC0-(.LCTOC1)(30)
        li 8,0
        lwz 10,88(11)
        li 6,33
        lwz 5,0(9)
        li 7,32
        lwz 3,0(11)
        lwz 4,12(11)
        lwz 9,56(11)               < load
        stw 0,56(29)               < store
        bl XChangeProperty@plt
        b .L12

If I add -fno-schedule-insns all is OK again:

.L14:
        mr 4,28
        mr 3,27
        lwz 29,4(31)
        bl _Z7nwindupPmi@local
        li 8,0
        lwz 11,4(31)
        li 6,33
        lwz 9,.LC0-(.LCTOC1)(30)
        li 7,32
        stw 3,56(29)              < store
        lwz 5,0(9)
        lwz 3,0(11)
        lwz 4,12(11)
        lwz 9,56(11)              < load
        lwz 10,88(11)
        bl XChangeProperty@plt
        b .L12

Franz.

test-netwm.ii.gz


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]