- 28 Feb, 2014 1 commit
-
-
Erik de Castro Lopo authored
Loads should now handle up to 32 bit offsets.
-
- 07 Jan, 2014 1 commit
-
-
Ben Gamari authored
Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- 13 May, 2013 3 commits
-
-
ian@well-typed.com authored
It doesn't actually use it yet
-
ian@well-typed.com authored
It now has its own class, and the addImport function is defined in that class, rather than needing to be passed as an argument.
-
ian@well-typed.com authored
-
- 12 Apr, 2013 1 commit
-
-
Gabor Greif authored
Darwin x86 has inconsistent PIC base register, so splitting (which happened before) ensures that each cmm procedure only has one entry point (namely the first block).
-
- 11 Apr, 2013 1 commit
-
-
Gabor Greif authored
per cmm procedure on Darwin/PPC, because of splitting. x86 should be treated the same way, I'll come back to that later.
-
- 08 Apr, 2013 1 commit
-
-
Gabor Greif authored
add FETCHPC to all of them (this fixes #7814).
-
- 12 Nov, 2012 1 commit
-
-
Simon Marlow authored
This removes the OldCmm data type and the CmmCvt pass that converts new Cmm to OldCmm. The backends (NCGs, LLVM and C) have all been converted to consume new Cmm. The main difference between the two data types is that conditional branches in new Cmm have both true/false successors, whereas in OldCmm the false case was a fallthrough. To generate slightly better code we occasionally need to invert a conditional to ensure that the branch-not-taken becomes a fallthrough; this was previously done in CmmCvt, and it is now done in CmmContFlowOpt. We could go further and use the Hoopl Block representation for native code, which would mean that we could use Hoopl's postorderDfs and analyses for native code, but for now I've left it as is, using the old ListGraph representation for native code.
-
- 30 Oct, 2012 1 commit
-
-
gmainlan@microsoft.com authored
All Cmm procedures now include the set of global registers that are live on procedure entry, i.e., the global registers used to pass arguments to the procedure. Only global registers that are use to pass arguments are included in this list.
-
- 19 Oct, 2012 1 commit
-
-
ian@well-typed.com authored
-
- 16 Oct, 2012 1 commit
-
-
ian@well-typed.com authored
Mostly d -> g (matching DynFlag -> GeneralFlag). Also renamed if* to when*, matching the Haskell if/when names
-
- 12 Sep, 2012 2 commits
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
I've switched to passing DynFlags rather than Platform, as (a) it's simpler to not have to extract targetPlatform in so many places, and (b) it may be useful to have DynFlags around in future.
-
- 03 Sep, 2012 1 commit
-
-
ian@well-typed.com authored
-
- 31 Aug, 2012 1 commit
-
-
Simon Marlow authored
(fixes dyn tests with -fnew-codegen on x86)
-
- 16 Jul, 2012 1 commit
-
-
Ian Lynagh authored
Hopefully I've kept the logic the same, and we now generate warnings if the user does -fno-PIC but we ignore them (e.g. because they're on OS X amd64).
-
- 12 Jun, 2012 1 commit
-
-
Ian Lynagh authored
This avoid lots of converting back and forth between the two types.
-
- 22 Nov, 2011 1 commit
-
-
dterei authored
-
- 04 Nov, 2011 1 commit
-
-
Ian Lynagh authored
We only use it for "compiler" sources, i.e. not for libraries. Many modules have a -fno-warn-tabs kludge for now.
-
- 19 Oct, 2011 1 commit
-
-
Ian Lynagh authored
-
- 02 Oct, 2011 2 commits
-
-
Ian Lynagh authored
And some knock-on changes
-
Ian Lynagh authored
-
- 25 Aug, 2011 1 commit
-
-
CmmTop -> CmmDecl CmmPgm -> CmmGroup
-
- 05 Jul, 2011 1 commit
-
-
batterseapower authored
I observed that the [CmmStatics] within CmmData uses the list in a very stylised way. The first item in the list is almost invariably a CmmDataLabel. Many parts of the compiler pattern match on this list and fail if this is not true. This patch makes the invariant explicit by introducing a structured type CmmStatics that holds the label and the list of remaining [CmmStatic]. There is one wrinkle: the x86 backend sometimes wants to output an alignment directive just before the label. However, this can be easily fixed up by parameterising the native codegen over the type of CmmStatics (though the GenCmmTop parameterisation) and using a pair (Alignment, CmmStatics) there instead. As a result, I think we will be able to remove CmmAlign and CmmDataLabel from the CmmStatic data type, thus nuking a lot of code and failing pattern matches. This change will come as part of my next patch.
-
- 24 Jan, 2011 1 commit
-
-
Simon Marlow authored
This changes the new code generator to make use of the Hoopl package for dataflow analysis. Hoopl is a new boot package, and is maintained in a separate upstream git repository (as usual, GHC has its own lagging darcs mirror in http://darcs.haskell.org/packages/hoopl). During this merge I squashed recent history into one patch. I tried to rebase, but the history had some internal conflicts of its own which made rebase extremely confusing, so I gave up. The history I squashed was: - Update new codegen to work with latest Hoopl - Add some notes on new code gen to cmm-notes - Enable Hoopl lag package. - Add SPJ note to cmm-notes - Improve GC calls on new code generator. Work in this branch was done by: - Milan Straka <fox@ucw.cz> - John Dias <dias@cs.tufts.edu> - David Terei <davidterei@gmail.com> Edward Z. Yang <ezyang@mit.edu> merged in further changes from GHC HEAD and fixed a few bugs.
-
- 18 Jun, 2010 1 commit
-
-
Simon Marlow authored
-
- 06 Jan, 2010 1 commit
-
-
Ian Lynagh authored
From Maxime Henrion <mhenrion@gmail.com>
-
- 05 Jan, 2010 1 commit
-
-
simonpj@microsoft.com authored
-
- 02 Jan, 2010 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
-
- 26 Sep, 2009 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
-
- 15 Feb, 2009 3 commits
-
-
Ben.Lippmeier@anu.edu.au authored
-
Ben.Lippmeier@anu.edu.au authored
-
Ben.Lippmeier@anu.edu.au authored
- nativeGen/Instruction defines a type class for a generic instruction set. Each of the instruction sets we have, X86, PPC and SPARC are instances of it. - The register alloctors use this type class when they need info about a certain register or instruction, such as regUsage, mkSpillInstr, mkJumpInstr, patchRegs.. - nativeGen/Platform defines some data types enumerating the architectures and operating systems supported by the native code generator. - DynFlags now keeps track of the current build platform, and the PositionIndependentCode module uses this to decide what to do instead of relying of #ifdefs. - It's not totally retargetable yet. Some info info about the build target is still hardwired, but I've tried to contain most of it to a single module, TargetRegs. - Moved the SPILL and RELOAD instructions into LiveInstr. - Reg and RegClass now have their own modules, and are shared across all architectures.
-
- 06 Feb, 2009 2 commits
-
-
Ian Lynagh authored
-
Ian Lynagh authored
We used to generated things like: extern StgWordArray (newCAF) __attribute__((aligned (8))); ((void (*)(void *))(W_)&newCAF)((void *)R1.w); (which is to say, pretend that newCAF is some data, then cast it to a function and call it). This goes wrong on at least IA64, where: A function pointer on the ia64 does not point to the first byte of code. Intsead, it points to a structure that describes the function. The first quadword in the structure is the address of the first byte of code so we end up dereferencing function pointers one time too many, and segfaulting.
-
- 04 Feb, 2009 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
-
- 14 Aug, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
This merge does not turn on the new codegen (which only compiles a select few programs at this point), but it does introduce some changes to the old code generator. The high bits: 1. The Rep Swamp patch is finally here. The highlight is that the representation of types at the machine level has changed. Consequently, this patch contains updates across several back ends. 2. The new Stg -> Cmm path is here, although it appears to have a fair number of bugs lurking. 3. Many improvements along the CmmCPSZ path, including: o stack layout o some code for infotables, half of which is right and half wrong o proc-point splitting
-
- 23 Apr, 2008 1 commit
-
-
rl@cse.unsw.edu.au authored
-
- 12 Apr, 2008 1 commit
-
-
Ian Lynagh authored
-