This is the mail archive of the
mailing list for the GCC project.
Transformation from SEME(Single Entry Multiple Exit) to SESE(Single Entry Single Exit)
- From: Ajit Kumar Agarwal <ajit dot kumar dot agarwal at xilinx dot com>
- To: "law at redhat dot com" <law at redhat dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Cc: Vinod Kathail <vinodk at xilinx dot com>, Shail Aditya Gupta <shailadi at xilinx dot com>, Vidhumouli Hunsigida <vidhum at xilinx dot com>, "Nagaraju Mekala" <nmekala at xilinx dot com>
- Date: Thu, 2 Jul 2015 09:18:23 +0000
- Subject: Transformation from SEME(Single Entry Multiple Exit) to SESE(Single Entry Single Exit)
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=pass (sender IP is 220.127.116.11) smtp.mailfrom=xilinx.com; gcc.gnu.org; dkim=none (message not signed) header.d=none;
Single Entry and Multiple Exits disables traditional Loop optimization. The presence of short circuit also makes the CFG as
Single Entry and Multiple Exits. The transformation from SEME(Single Entry and Multiple Exits) to SESE( Single Entry and
Single Exits enables many Loop Optimizations.
The approach like Node Splitting to make SEME regions to SESE regions is an important optimization on the CFG that
Enable the transformation with respect to Loops and Conditionals.
The Loops transformation in LLVM does the node splitting to convert from SEME regions to SESE regions. The presence
of break and GOTO statements inside the loops makes the CFG unstructured transforming it SEME. To convert such control
Flow from unstructured to Structured control flow enables many Loop transformation.
I would like to implement a transformation phase on the loops before any Loop optimizations pass is enabled to transform
Unstructured CFG to structured CFG like LLVM.
Does the GCC already has such transformation passes on Loops? Please share your thoughts.
Thanks & Regards