~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
\r
Things to do:\r
+\r
+ - SDM (2010-02-26) can we remove the Foreign constructor from Convention?\r
+ Reason: we never generate code for a function with the Foreign\r
+ calling convention, and the code for calling foreign calls is generated\r
+\r
+ - All dataflow analyses are in the FuelMonad, even though they\r
+ are guarnteed to consume no fuel. This seems silly\r
+\r
+ - CmmContFlowOpt.runCmmContFlowOptZs is not called!\r
+ - Why is runCmmOpts called from HscMain? Seems too "high up".\r
+ In fact HscMain calls (runCmmOpts cmmCfgOptsZ) which is what\r
+ runCmmContFlowOptZs does. Tidy up!\r
+\r
+\r
+ - AsmCodeGen has a generic Cmm optimiser; move this into new pipeline\r
+\r
+ - AsmCodeGen has post-native-cg branch elimiator (shortCutBranches);\r
+ we ultimately want to share this with the Cmm branch eliminator.\r
+\r
+ - At the moment, references to global registers like Hp are "lowered" \r
+ late (in AsmCodeGen.fixAssignTop and cmmToCmm). We should do this\r
+ early, in the new native codegen, much in the way that we lower \r
+ calling conventions. Might need to be a bit sophisticated about\r
+ aliasing.\r
+\r
- Refactor Cmm so that it contains only shared stuff\r
Add a module MoribundCmm which contains stuff from\r
Cmm for old code gen path\r