From b76676eca83dcb36a74554629645d6c2c7617069 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Thu, 2 Apr 2009 19:33:09 +0000 Subject: [PATCH] Fixed a few more missing-static problems --- backends/GenerateC.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/backends/GenerateC.hs b/backends/GenerateC.hs index 933b0ae..56b79e6 100644 --- a/backends/GenerateC.hs +++ b/backends/GenerateC.hs @@ -181,7 +181,8 @@ cgenTopLevel headerName s | usedFile <- Set.toList $ csUsedFiles cs] sequence_ [tell ["extern int "] >> genName n >> tell ["_stack_size;\n"] - | n <- (Set.toList $ csParProcs cs) + | n <- (Set.toList $ csParProcs cs `Set.difference` + Set.fromList (map (A.Name emptyMeta . fst) (csExternals cs))) ++ [A.Name emptyMeta n | A.NameDef {A.ndName = n ,A.ndSpecType=A.Proc _ (_,A.Recursive) _ _ @@ -1462,20 +1463,24 @@ cgenRecordTypeSpec n attr fs genName n tell [";"] if null [t | (_, A.Mobile t) <- fs] - then do tell ["const word "] + then do genStatic TopLevel n + tell ["const word "] genName n tell ["_mttype = MT_SIMPLE | MT_MAKE_TYPE(MT_DATA);"] + genStatic TopLevel n tell ["const int "] genName n tell ["_mtsize = sizeof("] genName n tell [");"] -- Not quite certain CCSP handles these descriptors: - else do tell ["const word "] + else do genStatic TopLevel n + tell ["const word "] genName n tell ["_mttype[", show (length mtEntries), "] = {"] seqComma mtEntries tell ["};"] + genStatic TopLevel n tell ["const int "] genName n tell ["_mtsize = ", show (length mtEntries), ";"]