- 29 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 25 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
This frees the Cmm data type from keeping a list of live global registers in CmmCall which helps prepare for the CPS conversion phase. CPS conversion does its own liveness analysis and takes input that should not directly refer to parameter registers (e.g. R1, F5, D3, L2). Since these are the only things which could occur in the live global register list, CPS conversion makes that field of the CmmCall constructor obsolite. Once the CPS conversion pass is fully implemented, global register saving will move from codeGen into the CPS pass. Until then, this patch is worth scrutinizing and testing to ensure it doesn't cause any performance or correctness problems as the code passed to the backends by the CPS converting will look very similar to the code that this patch makes codeGen pass to the backend.
-
Michael D. Adams authored
-
- 24 May, 2007 2 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 23 May, 2007 7 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 22 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
Since a CmmCall returns CmmFormals which may include global registers (and indeed one place in the code returns the results of a CmmCall into BaseReg) and since CPS conversion will change those return slots into formal arguments for the continuation of the call, CmmProc has to have CmmFormals for the formal arguments. Oddly, the old code never made use of procedure arguments so this change only effects the types and not any of the code. (Because [] is both of type [LocalReg] and CmmFormals.)
-
Michael D. Adams authored
-
- 21 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 18 May, 2007 6 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
The function listSplitUniqSupply :: UniqSupply -> [UniqSupply] splits a UniqSupply into an infinite list of supplies. It is a generalization of splitUniqSupply.
-
Michael D. Adams authored
This is a safety check-in, before I begin a cleanup.
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 16 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 14 May, 2007 1 commit
-
-
Michael D. Adams authored
-
- 10 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
At present it just annotates each block with a comment indicating what local registers are live at the start of the block.
-
Michael D. Adams authored
Dataflow.hs contains an early draft of the live variable analysis. This draft contains known bugs and is being recorded only to provide a point to be revert back to if necessary.
-
- 28 Jun, 2007 1 commit
-
-
Clemens Fruhwirth authored
-
- 30 Jun, 2007 1 commit
-
-
Clemens Fruhwirth authored
-
- 02 Jul, 2007 4 commits
-
-
Ian Lynagh authored
-
simonpj@microsoft.com authored
See Note [Recursive rules] in OccurAnal
-
Ian Lynagh authored
Fans of the banner can add putStrLn " ___ ___ _" putStrLn " / _ \\ /\\ /\\/ __(_)" putStrLn " / /_\\// /_/ / / | | GHC Interactive, for Haskell 98." putStrLn "/ /_\\\\/ __ / /___| | http://www.haskell.org/ghc/" putStrLn "\\____/\\/ /_/\\____/|_| Type :? for help." putStrLn "" to their ~/.ghci
-
Ian Lynagh authored
The logic for printing the ghc and ghci usage messages was inverted. However, the ghci case will never actually happen with the current code, as we print a usage message when cli_mode == ShowUsage and choose the ghci usage message if cli_mode == DoInteractive. This should be fixed as part of a larger options handling overhaul.
-