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.
try.f
Description: try.f
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