X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2FSDCCloop.h;h=34566f26006a34c1172cd43c8c31e1769515624c;hb=04a66f4aa0c6a3cf27d0b5339a74ed8e4f92f1a6;hp=dc43c91cc7826665e9063a0e087b1f9bbb14254a;hpb=b09af35f2f1cde7649d3ac4a6f5d2af6d97895a0;p=fw%2Fsdcc diff --git a/src/SDCCloop.h b/src/SDCCloop.h index dc43c91c..34566f26 100644 --- a/src/SDCCloop.h +++ b/src/SDCCloop.h @@ -8,19 +8,19 @@ under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - + In other words, you are welcome to use, share and improve this program. You are forbidden to forbid anyone else to use, share and improve - what you give them. Help stamp out software-hoarding! + what you give them. Help stamp out software-hoarding! -------------------------------------------------------------------------*/ #include "SDCCBBlock.h" #include "SDCCcse.h" @@ -28,33 +28,30 @@ #ifndef SDCCLOOP_H #define SDCCLOOP_H 1 -typedef struct region { +typedef struct region + { + + unsigned int merged:1; + unsigned int visited:1; + eBBlock *entry; /* entry Block */ + int containsLoops; /* contains other loops */ + set *regBlocks; /* set of all blocks */ + set *exits; /* set of exits */ + } +region; - unsigned int merged:1; - eBBlock *entry ; /* entry Block */ - int containsLoops; /* contains other loops */ - set *regBlocks ; /* set of all blocks */ - set *exits ; /* set of exits */ -} region ; +typedef struct induction + { -typedef struct induction { - - operand *sym ; + operand *sym; operand *asym; - unsigned int op ; - long cval ; + unsigned int op; + long cval; iCode *ic; -} induction ; - -DEFSETFUNC(backEdges); -DEFSETFUNC(pregion); -DEFSETFUNC(pinduction); -int loopOptimizations (hTab *, eBBlock **, int); -int addressTaken (set *,operand *); -hTab *createLoopRegions (eBBlock **, int ); -iCode *findDefInRegion (set *, operand *, eBBlock **); -int hasIncomingDefs (region *, operand *); -int findLoopEndSeq(region *); + } +induction; +int loopOptimizations (hTab *, ebbIndex *); +hTab *createLoopRegions (ebbIndex *); #endif