| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
These are needed for GLOBAL_VAR's to work properly
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
so we no longer need to use defaultDynFlags there
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Several changes in this patch, partially bug fixes, partially new code:
o bug fixes in ZipDataflow
- added some checks to verify that facts converge
- removed some erroneous checks of convergence on entry nodes
- added some missing applications of transfer functions
o changed dataflow clients to use ZipDataflow, making ZipDataflow0 obsolete
o eliminated DFA monad (no need for separate analysis and rewriting monads with ZipDataflow)
o started stack layout changes
- no longer generating CopyIn and CopyOut nodes (not yet fully expunged though)
- still not using proper calling conventions
o simple new optimizations:
- common block elimination
-- have not yet tried to move the Adams opt out of CmmProcPointZ
- block concatenation
o piped optimization fuel up to the HscEnv
- can be limited by a command-line flag
- not tested, and probably not yet properly used by clients
o added unique supply to FuelMonad, also lifted unique supply to DFMonad
|
| |
|
|
|
|
| |
Modules that need it import it themselves instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These fix these failures:
break008(ghci)
break009(ghci)
break026(ghci)
ghci.prog009(ghci)
ghci025(ghci)
print007(ghci)
prog001(ghci)
prog002(ghci)
prog003(ghci)
at least some of which have this symptom:
Exception: expectJust prune
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
for rational)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Added API support for compiling Haskell to simplified Core, and for
compiling Core to machine code. The latter, especially, should be
considered experimental and has only been given cursory testing. Also
fixed warnings in DriverPipeline. Merry Christmas.
|
|
|
|
|
|
|
|
|
| |
Using -stubdir together with hierarchical modules, -fvia-C, and --make
is essentially broken in 6.6.x. Recently discovered by Cabal's use of
-stubdir.
Test cases: driver027/driver028 (I've updated them to use -fvia-C, in
order to test for this bug).
|
|
|
|
| |
Based on a patch from Lemmih
|
| |
|
|
|
|
| |
Fixes building with -Werror (i.e. validate) and GHC < 6.6
|
| |
|
|
|
|
| |
from using .def files
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In fact hs-boot files had nothing to do with it: the problem was that
GHCi would forget the breakpoint information for a module that had
been reloaded but not recompiled. It's amazing that we never noticed
this before.
The ModBreaks were in the ModDetails, which was the wrong place. When
we avoid recompiling a module, ModDetails is regenerated from ModIface
by typecheckIface, and at that point it has no idea what the ModBreaks
should be, so typecheckIface made it empty. The right place for the
ModBreaks to go is with the Linkable, which is retained when
compilation is avoided. So now I've placed the ModBreaks in with the
CompiledByteCode, which also makes it clear that only byte-code
modules have breakpoints.
This fixes break022/break023
|
| |
|
| |
|
|
|
|
|
|
|
| |
Older GHCs can't parse OPTIONS_GHC.
This also changes the URL referenced for the -w options from
WorkingConventions#Warnings to CodingStyle#Warnings for the compiler
modules.
|
| |
|
|
|
|
|
|
| |
Whilst compiling Main.hs with -ddump-stg, ddump-asm and friends
you can how add -ddump-to-file and you'll get the dumps redirected
to Main.dump-stg, Main.dump-asm etc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have 4 new flags:
-fno-gen-manifest
suppresses creation of foo.exe.manifest
-fno-embed-manifest
suppresses embedding of the manifest in the executable
-pgmwindres
specify a program to use instead of windres
-optwindres
extra options to pass to windres
"windres" is now copied from mingw and included in a binary
distribution.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We now have various flags that need to be passed to gcc, but only if
the local gcc version supports them. So instead of wiring this
knowledge into ghc when it is built, we now put these "extra gcc
flags" into a text file in $libdir, extra-gcc-flags, which is created
by configure. It is also created by the configure script of a binary
distribution, so a binary dist is independent of the gcc version used
to build it.
Hopefully I got the binary-dist stuff right, but binary dists aren't
currently working so we'll need to come back and check this.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a check that each imported module is listed in
the dependencies from the previous interface. It catches the
following cases and forces recompilation:
- an exposed package has been upgraded
- we are compiling with different package flags
- a home module that was shadowing a package module has been removed
- a new home module has been added that shadows a package module
I haven't yet added the package timestamping as described in #1372.
|
| |
|
| |
|
|
|
|
|
| |
We were recompiling the .hs-boot files each time, as we were never
writing out the compilation results.
|
|
|
|
|
|
|
|
|
|
| |
To create a dynamic shared object (DSO) on ELF platforms, we invoke
"gcc -shared". This in turn invokes ld. We supply -Bsymbolic to the
linker, as "ld -Bsymbolic -shared -o <lib> <objs>" resolves all
references from <objs> to <objs> at library creation time.
See http://hackage.haskell.org/trac/ghc/wiki/Commentary/PositionIndependentCode
|
|
|
|
|
|
| |
function: staticLink -> linkBinary (will link non static binaries too)
function: doMkDLL -> linkDynLib (as we can link on ELF too where DLL is an inappropriate term)
constructor: MkDLL -> LinkDynLib
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch cleans up the GHC API, and adds some functionality: we can
now compile to object code inside GHCi.
Previously we had:
data GhcMode
= BatchCompile
| Interactive
| OneShot
| JustTypecheck
| MkDepend
data HscTarget
= HscC
| HscAsm
| HscJava
| HscInterpreted
| HscNothing
There was redundancy here; if GhcMode is Interactive, then only
HscInterpreted makes sense, and JustTypecheck required HscNothing.
Now we have:
data GhcMode
= CompManager -- ^ --make, GHCi, etc.
| OneShot -- ^ ghc -c Foo.hs
| MkDepend -- ^ ghc -M, see Finder for why we need this
and HscTarget remains as before.
Previously GhcLink looked like this:
data GhcLink = NoLink | StaticLink
Now we have:
data GhcLink = NoLink | LinkBinary | LinkInMemory
The idea being that you can have an HscTarget of HscAsm (for example)
and still link in memory.
There are two new flags:
-fobject-code selects object code as the target (selects
either -fasm or -fvia-C, whichever is the default)
This can be usd with ':set' in GHCi, or on the command line.
-fbyte-code sets byte-code as the target. Only works in GHCi.
One day maybe this could save the byte code in a file
when used outside GHCi.
(names chosen for consistency with -fno-code).
Changes to the GHC API: newSession no longer takes the GhcMode
argument. The GhcMode defaults to CompManager, which is usually what
you want. To do JustTypecheck now, just set hscTarget to HscNothing.
|
| |
|