[Bug tree-optimization/31358] IV-OPTs produces a weird MEM_REF

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Mar 26 21:27:00 GMT 2007



------- Comment #3 from pinskia at gcc dot gnu dot org  2007-03-26 22:27 -------
3.2.3 produced:
.L6:
        slwi 0,9,2
        add 9,9,5
        cmpw 0,9,4
        stwx 11,3,0
        bgelr- 0
        b .L6

While 4.1.0 and above produces:
.L4:
        add 9,9,5
        stw 10,-4(3)
        add 3,3,11
        subf 0,5,9
        cmpw 7,4,0
        bgt 7,.L4


If we change "int *" to "char *" and set c to be 2, we get even worse code gen.
3.2.3:

.L9:
        stbx 11,3,9
        addi 9,9,2
        bdnz .L9
        blr


4.1.0:
.L4:
        add 9,3,11
        addi 11,11,2
        cmpw 7,4,11
        stb 0,-1(9)
        bgt 7,.L4

What happened to bdnz and we are now doing *(r9+r3-1) = r0 inside the loop?


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |4.1.0 4.2.0 4.3.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31358



More information about the Gcc-bugs mailing list