The attached patch "odc" reworks some logic in "SC_NODE::Is_sese()", which 
identifies single entry single exit (SESE) nodes. The change excludes 
unstructured control flows like Fortran goto statements (as shown in the 
attached sample code "try.f") from being recognized as SESEs. In WHIRL, such 
statements are represented as "OPR_FALSEBR" and "OPR_TRUEBR" instead of 
IF-statements.   Without a structured control flow representation, when 
SC_NODEs are built together with CFG , there is no easy way to tell the 
relationships among SC_NODEs associated with these statements.  As a result, 
these statements are grouped into SC_BLOCK nodes together with other 
straight-line codes, and therefore we can see entrances and exits in the middle 
of a SC_BLOCK.

The following changes are applied to "SC_BLOCK" nodes:

1.       Do not allow exits except the last block.

2.       Do not allow entrances except the first block.

3.       For the first block, do not allow more than 1 entrances unless it is 
the merge block of a if-region.


Attachment: try.f
Description: try.f

Attachment: odc
Description: odc

------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to