summaryrefslogtreecommitdiff
path: root/includes/compiler/IroLoop.h
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2023-01-10 11:05:21 +0000
committerAsh Wolf <ninji@wuffs.org>2023-01-10 11:05:21 +0000
commitaec1b8dddc68ecb8288ec6132932e4c7b4bca09f (patch)
tree8138328fe43bcc5fff690dc60caac79aa570ab2b /includes/compiler/IroLoop.h
parentfcfbafff31869ed808bff0639532db1828660e92 (diff)
downloadMWCC-aec1b8dddc68ecb8288ec6132932e4c7b4bca09f.tar.gz
MWCC-aec1b8dddc68ecb8288ec6132932e4c7b4bca09f.zip
getting close to done
Diffstat (limited to '')
-rw-r--r--includes/compiler/IroLoop.h30
1 files changed, 15 insertions, 15 deletions
diff --git a/includes/compiler/IroLoop.h b/includes/compiler/IroLoop.h
index 8357830..0c60589 100644
--- a/includes/compiler/IroLoop.h
+++ b/includes/compiler/IroLoop.h
@@ -5,32 +5,32 @@
#include "compiler/BitVector.h"
typedef enum IROLoopIndFlags {
- LoopInd_1 = 1,
- LoopInd_2 = 2,
+ LoopInd_HasMod = 1,
+ LoopInd_HasDiv = 2,
LoopInd_4 = 4,
LoopInd_8 = 8
} IROLoopIndFlags;
typedef enum IROLoopFlags {
- LoopFlags_1 = 1,
+ LoopFlags_1 = 1, // LP_INDUCTION_AT_LEFT
LP_LOOP_HAS_CALLS = 2,
LP_LOOP_HAS_CNTRLFLOW = 4,
- LoopFlags_8 = 8,
+ LoopFlags_8 = 8, // LP_HAS_NONASSIGN
LP_INDUCTION_NOT_FOUND = 0x10,
LP_IFEXPR_NON_CANONICAL = 0x20,
LP_HAS_MULTIPLE_INDUCTIONS = 0x40,
LP_LOOP_HDR_HAS_SIDEEFFECTS = 0x80,
- LoopFlags_100 = 0x100,
- LoopFlags_200 = 0x200,
+ LP_LOOP_STEP_ISADD = 0x100,
+ LoopFlags_200 = 0x200, // LP_HEADER_FOLLOWS_UPDATE?
LP_LOOP_STEP_ISPOS = 0x400,
- LoopFlags_800 = 0x800,
- LoopFlags_1000 = 0x1000,
- LoopFlags_2000 = 0x2000,
+ LoopFlags_800 = 0x800, // LP_IND_USED_IN_LOOP
+ LoopFlags_1000 = 0x1000, // LP_HAS_MULTIPLE_EXITS
+ LoopFlags_2000 = 0x2000, // inverse of LP_LOOP_STEP_ISADD?
LP_LOOP_STEP_ISNEG = 0x4000,
LP_LOOP_HAS_ASM = 0x8000,
- LoopFlags_10000 = 0x10000,
- LoopFlags_20000 = 0x20000,
- LoopFlags_40000 = 0x40000
+ LoopFlags_10000 = 0x10000, // LP_WHILE_LOOP
+ LoopFlags_20000 = 0x20000, // maybe LP_RECURSIVE_LOOP?
+ LoopFlags_40000 = 0x40000 // LP_IS_REDUCTION_CAND
} IROLoopFlags;
#ifdef __MWERKS__
@@ -50,10 +50,10 @@ struct IROLoop {
SInt32 flags;
IRONode *fnode;
int x8;
- int xC;
- int x10;
+ IRONode *xC;
+ IRONode *x10;
IROLinear *nd14; // assignment expression that sets the initial value of induction
- IROLinear *nd18;
+ IROLinear *nd18; // ifexpr?
IROLoopInd *induction;
int index20;
int index24;