building DDG from RTL file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear all:

I am trying to build DDG for all functions from a RTL file. I have
some questions:


;;
;; Full RTL generated for this function:
;;
(note 1 0 12 ("test.c") 7)




what is  a "note" in the above instruction ? and what does the
sequence "1 0 12" represent? Does "note" represent a dummy node in a
basic block?



;; Start of basic block 0, registers live: (nil)
(note 12 1 2 0 [bb 0] NOTE_INSN_BASIC_BLOCK)

(note 2 12 10 0 NOTE_INSN_DELETED)

(note 10 2 11 0 NOTE_INSN_FUNCTION_BEG)

(note 11 10 13 0 NOTE_INSN_DELETED)
;; End of basic block 0, registers live:
 (nil)

;; Start of basic block 1, registers live: (nil)
(note 13 11 14 1 [bb 1] NOTE_INSN_BASIC_BLOCK)

(insn 14 13 15 1 (set (reg/v:SI 62 [ j ])
        (const_int 0 [0x0])) -1 (nil)
    (nil))




Here again what does the sequence  "14 13 15  1" mean? "1" gives you
the block number. "13" is the node/instruction number. What about
others?  In order to determine a data dependency among the
instructions, should I compare or look for label "reg/v" in the
instruction ? what else should I compare or look for to build data
dependency between instructions?


Thanks

Wei Li



(insn 15 14 16 1 (set (reg/v:SI 63 [ i ])
        (const_int 0 [0x0])) -1 (nil)
    (nil))
;; End of basic block 1, registers live:
 (nil)

;; Start of basic block 2, registers live: (nil)
(code_label 16 15 17 2 2 "" [2 uses])

(note 17 16 18 2 [bb 2] NOTE_INSN_BASIC_BLOCK)

(note 18 17 19 2 ("test.c") 21)

(insn 19 18 20 2 (set (reg:DI 5 di)
        (symbol_ref/f:DI ("*.LC0") [flags 0x2] <string_cst
0x2b94a63c3100>)) -1 (nil)
    (nil))

(call_insn 20 19 21 2 (set (reg:SI 0 ax)
        (call (mem:QI (symbol_ref:DI ("puts") [flags 0x41]
<function_decl 0x2b94a61a3000 __builtin_puts>) [0 S1 A8])
            (const_int 0 [0x0]))) -1 (nil)
    (nil)
    (expr_list:REG_DEP_TRUE (use (reg:DI 5 di))
        (nil)))

(note 21 20 22 2 ("test.c") 13)

(insn 22 21 23 2 (parallel [
            (set (reg/v:SI 62 [ j ])
                (plus:SI (reg/v:SI 62 [ j ])
                    (const_int 1 [0x1])))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil)
    (nil))

(insn 23 22 24 2 (set (reg:CCGC 17 flags)
        (compare:CCGC (reg/v:SI 62 [ j ])
            (const_int 999 [0x3e7]))) -1 (nil)
    (nil))

(jump_insn 24 23 25 2 (set (pc)
        (if_then_else (le (reg:CCGC 17 flags)
                (const_int 0 [0x0]))
            (label_ref 16)
            (pc))) -1 (nil)
    (expr_list:REG_BR_PROB (const_int 8900 [0x22c4])
        (nil)))
;; End of basic block 2, registers live:
 (nil)



-- 
Regards,

Wei Li

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux