This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: A new alpha bug
- To: jason at cygnus dot com (Jason Merrill)
- Subject: Re: A new alpha bug
- From: hjl at lucon dot org (H.J. Lu)
- Date: Fri, 12 Sep 1997 22:02:41 -0700 (PDT)
- Cc: egcs at cygnus dot com, rth at cygnus dot com
>
> Not quite. More like
>
> complex_double tmp (1.0, 0);
> complex_double one (tmp);
>
> The '=' in a declaration does not indicate use of the assignment operator.
>
Of course, you are right. After comparing the foo.cc.rtl files from
gcc 2.7.2.1 -O, egcs 970910 and egcs 970910 -O, I think either
TImode in alpha and/or aliase for TImode are broken. Here is
foo.cc.rtl generated by egcs 970910 -O. As you can see, TI 69
is used without setting first.
--
H.J. Lu (hjl@gnu.ai.mit.edu)
---foo.cc.rtl---
;; Function complex_double::complex_double(double = 0, double = 0)
(note 2 0 3 "" NOTE_INSN_DELETED)
(note 3 2 5 "" NOTE_INSN_DELETED)
(insn 5 3 7 (set (reg/v/u:DI 69)
(reg:DI 16 $16)) -1 (nil)
(nil))
(insn 7 5 9 (set (reg/v:DF 70)
(reg:DF 49 $f17)) -1 (nil)
(nil))
(insn 9 7 10 (set (reg/v:DF 71)
(reg:DF 50 $f18)) -1 (nil)
(nil))
(note 10 9 11 "" NOTE_INSN_FUNCTION_BEG)
(note 11 10 13 "" NOTE_INSN_DELETED)
(note 13 11 14 "" NOTE_INSN_DELETED)
(note 14 13 16 "" NOTE_INSN_DELETED)
(insn 16 14 17 (set (mem/s:DF (reg/v/u:DI 69))
(reg/v:DF 70)) -1 (nil)
(nil))
(note 17 16 19 "" NOTE_INSN_DELETED)
(insn 19 17 12 (set (mem/s:DF (plus:DI (reg/v/u:DI 69)
(const_int 8)))
(reg/v:DF 71)) -1 (nil)
(nil))
(note 12 19 21 "" NOTE_INSN_DELETED)
(note 21 12 22 "" NOTE_INSN_BLOCK_BEG)
(note 22 21 23 "" NOTE_INSN_BLOCK_END)
(code_label 23 22 24 2 "")
(note 24 23 26 "" NOTE_INSN_DELETED)
(insn 26 24 27 (set (reg/i:DI 0 $0)
(reg/v/u:DI 69)) -1 (nil)
(nil))
(insn 27 26 28 (use (reg/i:DI 0 $0)) -1 (nil)
(nil))
(jump_insn 28 27 29 (set (pc)
(label_ref 32)) -1 (nil)
(nil))
(barrier 29 28 30)
(note 30 29 32 "" NOTE_INSN_FUNCTION_END)
(code_label 32 30 0 1 "")
;; Function int main()
(note 2 0 3 "" NOTE_INSN_DELETED)
(note 3 2 4 "" NOTE_INSN_DELETED)
(note 4 3 5 "" NOTE_INSN_FUNCTION_BEG)
(note 5 4 7 "" NOTE_INSN_DELETED)
(note 7 5 8 "" NOTE_INSN_BLOCK_BEG)
(note 8 7 10 "" NOTE_INSN_DELETED)
(note 10 8 11 "" NOTE_INSN_BLOCK_BEG)
(insn 11 10 13 (clobber (mem/s:TI (reg:DI 66))) -1 (nil)
(nil))
(insn 13 11 15 (set (mem/s:DI (reg:DI 66))
(subreg:DI (reg/v:TI 69) 0)) -1 (nil)
(nil))
(insn 15 13 17 (set (mem/s:DI (plus:DI (reg:DI 66)
(const_int 8)))
(subreg:DI (reg/v:TI 69) 1)) -1 (nil)
(nil))
(insn 17 15 19 (set (reg/v:DI 70)
(reg:DI 66)) -1 (nil)
(nil))
(insn 19 17 21 (set (reg:DI 72)
(symbol_ref/u:DI ("*$C32"))) -1 (nil)
(expr_list:REG_EQUAL (symbol_ref/u:DI ("*$C32"))
(nil)))
(insn 21 19 23 (set (reg/v:DF 71)
(mem/u:DF (reg:DI 72))) -1 (nil)
(nil))
(insn 23 21 24 (set (reg/v:DF 73)
(const_double:DF (cc0) 0 0)) -1 (nil)
(nil))
(insn/i 24 23 25 (set (mem/s:DF (reg/v:DI 70))
(reg/v:DF 71)) -1 (nil)
(nil))
(insn/i 25 24 26 (set (mem/s:DF (plus:DI (reg/v:DI 70)
(const_int 8)))
(const_double:DF (cc0) 0 0)) 243 {movsf-1} (nil)
(nil))
(note/i 26 25 27 "" NOTE_INSN_BLOCK_BEG)
(note/i 27 26 28 "" NOTE_INSN_BLOCK_END)
(code_label/i 28 27 29 5 "")
(insn/i 29 28 30 (set (reg:DI 74)
(reg/v:DI 70)) -1 (nil)
(nil))
(jump_insn/i 30 29 31 (set (pc)
(label_ref 32)) -1 (nil)
(nil))
(barrier/i 31 30 32)
(code_label/i 32 31 33 4 "")
(note 33 32 35 "" NOTE_INSN_BLOCK_END)
(note 35 33 37 "" NOTE_INSN_DELETED)
(insn 37 35 39 (set (reg:DI 76)
(symbol_ref/u:DI ("*$C32"))) -1 (nil)
(expr_list:REG_EQUAL (symbol_ref/u:DI ("*$C32"))
(nil)))
(insn 39 37 40 (set (reg:DF 75)
(mem/u:DF (reg:DI 76))) -1 (nil)
(nil))
(insn 40 39 41 (set (reg:DF 77)
(eq:DF (subreg:DF (reg/v:TI 69) 0)
(reg:DF 75))) -1 (nil)
(nil))
(jump_insn 41 40 42 (set (pc)
(if_then_else (eq (reg:DF 77)
(const_double:DF (cc0) 0 0))
(label_ref 46)
(pc))) -1 (nil)
(nil))
(insn 42 41 43 (set (reg:DF 78)
(eq:DF (subreg:DF (reg/v:TI 69) 1)
(const_double:DF (cc0) 0 0))) -1 (nil)
(nil))
(jump_insn 43 42 44 (set (pc)
(if_then_else (eq (reg:DF 78)
(const_double:DF (cc0) 0 0))
(label_ref 46)
(pc))) -1 (nil)
(nil))
(jump_insn 44 43 45 (set (pc)
(label_ref 54)) -1 (nil)
(nil))
(barrier 45 44 46)
(code_label 46 45 48 7 "")
(note 48 46 49 "" NOTE_INSN_DELETED)
(note 49 48 52 "" NOTE_INSN_DELETED)
(call_insn 52 49 53 (parallel[
(call (mem:DI (symbol_ref:DI ("abort")))
(const_int 0))
(clobber (reg:DI 27 $27))
(clobber (reg:DI 26 $26))
] ) -1 (nil)
(nil)
(nil))
(barrier 53 52 54)
(code_label 54 53 56 6 "")
(note 56 54 58 "" NOTE_INSN_DELETED)
(insn 58 56 59 (set (reg/i:DI 0 $0)
(const_int 0)) -1 (nil)
(nil))
(insn 59 58 60 (use (reg/i:DI 0 $0)) -1 (nil)
(nil))
(jump_insn 60 59 61 (set (pc)
(label_ref 71)) -1 (nil)
(nil))
(barrier 61 60 62)
(note 62 61 63 "" NOTE_INSN_BLOCK_END)
(note 63 62 65 "" NOTE_INSN_DELETED)
(insn 65 63 66 (set (reg/i:DI 0 $0)
(const_int 0)) -1 (nil)
(nil))
(insn 66 65 67 (use (reg/i:DI 0 $0)) -1 (nil)
(nil))
(jump_insn 67 66 68 (set (pc)
(label_ref 71)) -1 (nil)
(nil))
(barrier 68 67 69)
(note 69 68 71 "" NOTE_INSN_FUNCTION_END)
(code_label 71 69 0 3 "")