This is the mail archive of the gcc@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]

Re: A new alpha bug


> 
> 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 "")


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