[Bug c/38969] -foptimize-sibling-calls generates wrong code on alpha

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Jan 25 19:55:00 GMT 2009



------- Comment #2 from ubizjak at gmail dot com  2009-01-25 19:55 -------
gcc should initialize pseudos from "x" variable in my_print_complex:

;; Function my_print_complex (my_print_complex)


;; Generating RTL for gimple basic block 2

;; D.2813 = internal_print_complex (x); [tail call]

(insn 17 6 18 pr38969.c:20 (set (reg:SF 48 $f16)
        (reg:SF 75 [ D.2870 ])) -1 (nil))

(insn 18 17 19 pr38969.c:20 (set (reg:SF 49 $f17)
        (reg:SF 76 [ D.2870+4 ])) -1 (nil))

(call_insn 19 18 20 pr38969.c:20 (parallel [
            (set (parallel [
                        (expr_list:REG_DEP_TRUE (reg:SF 32 $f0)
                            (const_int 0 [0x0]))
                        (expr_list:REG_DEP_TRUE (reg:SF 33 $f1)
                            (const_int 4 [0x4]))
                    ])
                (call (mem:DI (symbol_ref:DI ("internal_print_complex") [flags
0x3] <function_decl 0x7f203091dc00 internal_print_complex>) [0 S8 A64])
                    (const_int 0 [0x0])))
            (use (reg:DI 29 $29))
            (clobber (reg:DI 26 $26))
        ]) -1 (expr_list:REG_EH_REGION (const_int 0 [0x0])
        (nil))
    (expr_list:REG_DEP_TRUE (use (reg:SF 49 $f17))
        (expr_list:REG_DEP_TRUE (use (reg:SF 48 $f16))
            (nil))))


Missing part is:

(insn 7 6 8 pr38969.c:20 (set (reg:SF 75 [ D.2870 ])
        (reg/v:SF 73 [ x ])) -1 (nil))

(insn 8 7 9 pr38969.c:20 (set (reg:SF 76 [ D.2870+4 ])
        (reg/v:SF 74 [ x+4 ])) -1 (nil))


Since this part is missing, some later pass initializes uninitialized registers
with zeros.

Looking into it.


-- 

ubizjak at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |ubizjak at gmail dot com
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-01-25 19:55:31
               date|                            |


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



More information about the Gcc-bugs mailing list