pro64-support
[Top] [All Lists]

OPT_FEEDBACK

To: sgi <pro64-support@xxxxxxxxxxx>, pro64 <pro64-contrib@xxxxxxxxxxx>
Subject: OPT_FEEDBACK
From: Peng Zhao <pengzhao@xxxxxxxxxxxxxx>
Date: Tue, 12 Jun 2001 18:07:06 -0600 (MDT)
Sender: owner-pro64-support@xxxxxxxxxxx
Hi,

        Enclosed is my c program ( a inner product program).

        I use -O3 to activate the PREOPT_LNO_PHASE, but the OPT_FEEDBACK
generated in the Pre_Optimizer() is a little strange. Essentially, it is
the LOOP related edges (LOOP_ZERO, LOOP_OUT, LOOP_POSITIVE,LOOPBACK). To
me, it is not a classic CFG either. Two edges from bb9 to bb13(LOOP_ZERO,
LOOP_OUT) and two edges from bb9 to bb10(LOOP_POSITIVE,LOOPBACK).  and the
whole CFG has not a single EXIT block. Is this CFG valid? check the end of
this message for details.


        The OPT_FEEDBACK generated in WOPT phase is a better one. but at
that time, I cannot identify the backedges in the CFG directly (i.e. using
previous analysis results, I had thought an edge should be marked as
backedge, But the OPT_FB_EDGE->edge_type only holds OUTGOING,BR_NOT_TAKEN
and BR_TAKEN). This makes the traversing of the CFG difficult for avoiding
the backedge infinite loops.



13 nodes: Node[1]:  in_out_same N, update_count 0
  in:  unknown 0, unexact 0, freq_total 0!, edges [ ],
  out: unknown 0, unexact 0, freq_total 1!, edges [ 1 ] Node[2]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1!, edges [ 1 ],
  out: unknown 0, unexact 0, freq_total 1!, edges [ 2 3 ] Node[3]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 0!, edges [ 2 ],
  out: unknown 0, unexact 0, freq_total 0!, edges [ 4 ] Node[4]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1!, edges [ 3 ],
  out: unknown 0, unexact 0, freq_total 1!, edges [ 5 ] Node[5]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1!, edges [ 4 5 ],
  out: unknown 0, unexact 0, freq_total 1!, edges [ 6 7 ] Node[6]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 0!, edges [ 6 ],
  out: unknown 0, unexact 0, freq_total 0!, edges [ 8 ] Node[7]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1!, edges [ 7 ],
  out: unknown 0, unexact 0, freq_total 1!, edges [ 9 ] Node[8]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1!, edges [ 8 9 ],
  out: unknown 0, unexact 0, freq_total 1!, edges [ 10 ] Node[9]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1001!, edges [ 10 17 ],
  out: unknown 0, unexact 0, freq_total 1001!, edges [ 11 12 13 14 ]
Node[10]:  in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1000!, edges [ 13 14 ],
  out: unknown 0, unexact 0, freq_total 1000!, edges [ 15 ] Node[11]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1000!, edges [ 15 ],
  out: unknown 0, unexact 0, freq_total 1000!, edges [ 16 ] Node[12]:  
in_out_same Y, update_count 0
  in:  unknown 0, unexact 0, freq_total 1000!, edges [ 16 ],
  out: unknown 0, unexact 0, freq_total 1000!, edges [ 17 ] Node[13]:  
in_out_same N, update_count 0
  in:  unknown 0, unexact 0, freq_total 1!, edges [ 11 12 ],
  out: unknown 0, unexact 0, freq_total 0!, edges [ ] 
17 edges: 
Edge[ 1]:  ( 1 --> 2) : freq = 1! : OUTGOING 
Edge[ 2]:  ( 2 --> 3) : freq = 0! : BRANCH_NOT_TAKEN 
Edge[ 3]:  ( 2 --> 4) : freq = 1! : BRANCH_TAKEN 
Edge[ 4]:  ( 3 --> 5) : freq = 0! : OUTGOING 
Edge[ 5]:  ( 4 --> 5) : freq = 1! :OUTGOING 
Edge[ 6]:  ( 5 --> 6) : freq = 0! : BRANCH_NOT_TAKEN
Edge[ 7]:  ( 5 --> 7) : freq = 1! : BRANCH_TAKEN 
Edge[ 8]:  ( 6 --> 8) : freq = 0! :OUTGOING 
Edge[ 9]:  ( 7 --> 8) : freq = 1! : OUTGOING 
Edge[ 10]:  ( 8 -->9) : freq = 1! : OUTGOING 
Edge[ 11]:  ( 9 --> 13) : freq = 0! : LOOP_ZERO
Edge[ 12]:  ( 9 --> 13) : freq = 1! : LOOP_OUT 
Edge[ 13]:  ( 9 --> 10) : freq = 1! : LOOP_POSITIVE 
Edge[ 14]:  ( 9 --> 10) : freq = 999! :LOOP_BACK 
Edge[ 15]:  ( 10 --> 11) : freq = 1000! : OUTGOING 
Edge[ 16]:  ( 11 --> 12) : freq = 1000! : OUTGOING 
Edge[ 17]:  ( 12 --> 9) : freq =1000! : OUTGOING

Attachment: ip.c
Description: Text document

<Prev in Thread] Current Thread [Next in Thread>
  • OPT_FEEDBACK, Peng Zhao <=