building DDG from RTL file
Wei Li
weili747@gmail.com
Wed Aug 5 03:53:00 GMT 2009
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
More information about the Gcc-help
mailing list