[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