aboutsummaryrefslogtreecommitdiff
path: root/backend/backendconvert.icl
diff options
context:
space:
mode:
Diffstat (limited to 'backend/backendconvert.icl')
-rw-r--r--backend/backendconvert.icl19
1 files changed, 16 insertions, 3 deletions
diff --git a/backend/backendconvert.icl b/backend/backendconvert.icl
index 357209f..52f2c77 100644
--- a/backend/backendconvert.icl
+++ b/backend/backendconvert.icl
@@ -6,11 +6,10 @@ implementation module backendconvert
import code from library "backend_library"
import StdEnv
-// import StdDebug
-
import frontend
import backend
import backendsupport, backendpreprocess
+import partition
// trace macro
(-*->) infixl
@@ -489,7 +488,21 @@ backEndConvertModulesH predefs {fe_icl =
= (backEnd -*-> "backend done")
where
functionIndices
- = flatten [[(componentIndex, member) \\ member <- group.group_members] \\ group <-: fe_components & componentIndex <- [1..]]
+ = function_indices 0 fe_components
+
+ function_indices i components
+ | i<size components
+ = function_indices2 components.[i].component_members i components
+ = []
+
+ function_indices2 (ComponentMember member members) i components
+ #! inc_i = i+1
+ = [(inc_i,member) : function_indices2 members i components]
+ function_indices2 (GeneratedComponentMember member _ members) i components
+ #! inc_i = i+1
+ = [(inc_i,member) : function_indices2 members i components]
+ function_indices2 NoComponentMembers i components
+ = function_indices (i+1) components
declareOtherDclModules :: {#DclModule} Int NumberSet -> BackEnder
declareOtherDclModules dcls main_dcl_module_n used_module_numbers