- 25 Jul, 2001 8 commits
-
-
simonmar authored
Specialise thread_static() a little bit: improves performance for threading the static object list.
-
simonpj authored
Do for evalStrictness the same as for evalAbsence
-
simonmar authored
- Move FptoolsHcOpts out of the hslibs section of this file (which was *exactly* the wrong place for it). - Clarify the meaning of FptoolsHcOpts and GhcHcOpts. NOTE: $(FptoolsHcOpts) gets added to every Haskell compilation for Haskell *programs* (not libraries), including GHC itself. By default, it contains only -O. To remove the -O, you need to override FptoolsHcOpts in build.mk, not GhcHcOpts. GhcHcOpts is still there, and contains options to be added when compiling GHC only.
-
simonpj authored
--------------------------------- Another long-standing infelicity! --------------------------------- CoreTidy was throwing away demand info on let-binders. This meant that CorePrep would build a let (thunk) instead of a case, even if the Id is sure to be demanded. Easily fixed by making CoreTidy retain the demand info. This demand-analysis stuff is having the excellent side effect of flushing out performance bugs!
-
simonmar authored
- bugfix (was erroneously ignoring the return value from scavenge_one() and checking failed_to_evac instead, which was always false) - printf format fix (shut gcc up).
-
simonpj authored
Change pretty-print of DmdType slightly
-
simonpj authored
--------------------------- Fix another bad DmdAnal bug --------------------------- The `both` operator wasn't commutative, leading to most strange results. In particular, the fixpoint finder went into an infinite fip/flop loop on Marcin's program.
-
simonpj authored
--------------------------------------- Fix a grevious dict-inlining infelicity --------------------------------------- This commit fixes an infelicity that must have been there for a long time. The problem was that dictionary functions (arising from instance declarations) were treated as GlobalIds, and hence no taken account of when doing free variable and dependency analysis. As a result, the specialiser was messing up dependency order, so the program was considerably more complex than it should be by the time it got to the strictness analyser. Net result: PrelRead.$sreduce :: Integer -> Integer -> (Integer,Integer) didn't get detected as strict. Easily fixed, by making DictFunIds into LocalIds (albeit exported ones).
-
- 24 Jul, 2001 32 commits
-
-
sof authored
Capture the dependency of PrelIO.hsc on PrelHandle_hsc.h (as was, 'make clean; make all' broke)
-
simonpj authored
Print a bit more info in an old strictness analyser assert fail
-
simonpj authored
Print a bit more info in the dmdFix loop
-
simonpj authored
A major demand-analyser fix, which made it say something was absent when it wasn't at all. Here's the comment from the Case equation of dmdAnal. -- Figure out whether the case binder is used, and use -- that to set the keepity of the demand. This is utterly essential. -- Consider f x = case x of y { (a,b) -> k y a } -- If we just take scrut_demand = U(L,A), then we won't pass x to the -- worker, so the worker will rebuild -- x = (a, absent-error) -- and that'll crash.
-
simonmar authored
Bugfixes; take large objects into account in stats output.
-
simonpj authored
wibble
-
simonpj authored
Add errorCString
-
simonpj authored
Make absent-arg errors more descriptive
-
simonmar authored
More tweaks. Getting usable now.
-
simonmar authored
Make compacting GC faster, stage 1. A cunning trick from Simon P.J. to avoid needing to call the potentially expensive LOOKS_LIKE_GHC_INFO() a lot.
-
simonmar authored
remove extra SRC_MKDEPENDC_OPTS, since we shouldn't be doing a mkdependC in this directory at all.
-
simonmar authored
Remove whitespace from the end of lines. The extra whitespace is syntactically meaningful to make(!) and was causing us to do a superfluous mkdependC in directories without any C files.
-
simonmar authored
libm is a dependency of the RTS now, so don't also depend on it for package "std".
-
simonmar authored
back the last change out; a better way to get all the hc files you need is SRC_HC_OPTS += -keep-hc-files in your build.mk.
-
simonpj authored
Two fixes to the demand analyis. 1. Don't look inside Coerces. These wrap recursive newtypes, and we might fail to find a fixpoint if we look inside them. 2. Polymorphic 'seq' is represented by a (Seq _ _ []) demand, so lub/both must be prepared to take a Seq with an empty list of demands without complaint.
-
simonpj authored
Keep the printed stuff for Demand and DmdResult separate, else we can get confused when parsing a strictness signature. For example, previously LX could have been parsed as L -> X or as LX -> T Urk! I've taken the simple path of making DmdResults print in lower case. Thus Lx means L -> x LX means LX -> t
-
simonmar authored
Add Ken Shan to the contributor's list for his heroic work on the Alpha port of GHC. Thanks Ken!
-
simonpj authored
Add missing cases to newDemand
-
ken authored
Innocent changes to resurrect/add 64-bit support.
-
ken authored
Fix typo in StgRun() for the Alpha
-
ken authored
#include <string.h> to get proper prototypes
-
ken authored
Removed debugging (tracing) code.
-
ken authored
Fixed punctuation typo.
-
ken authored
Added -I$(GHC_INCLUDE_DIR) to $(SRC_MKDEPENDC_OPTS), so that mkdependC can find its include files properly.
-
ken authored
Made "nat" 64-bit ("unsigned long") rather than 32-bit ("unsigned int") on 64-bit machines. This fixes some problems caused by code elsewhere assuming that sizeof(nat) == sizeof(void *).
-
ken authored
Added -lm to the extra_libraries list for the rts package. This is because ldexp() is used by StgPrimFloat.c and is in -lm on alpha-osf3.
-
ken authored
Added $(GhcHcOpts) to $(SRC_HC_OPTS), so that by setting --keep-hc-files-too in $(GhcHcOpts) we get .hc files for the Haskell code under this directory, ghc/driver.
-
ken authored
Removed 32-bit dependencies in the generation and handling of liveness mask bitmaps. We now support both 32-bit and 64-bit machines with identical .hc files. Support for >64-bit machines would be easy to add. Note that old .hc files are incompatible with the changes made to ghc/include/InfoMacros.h!
-
ken authored
Made some code #ifdef GHCI, so that it will compile without GHCI enabled.
-
ken authored
Added missing hyphen in frnot of machdepCCOpts for mips and powerpc.
-
ken authored
Added -Xlinker -noprefix_recognition to Alpha-specific machdepCCOpts. We need this flag to disable the following documented behavior of ld(1) on Digital UNIX: All routines that start with __init_ are treated, by default, as initialization routines. These are routines that are called without an argument when the file that contains them is loaded or when the program that contains them is started. Unfortunately, this flag produces the annoying (but harmless) gcc message gcc: -noprefix_recognition: linker input file unused since linking not done (See also mk/bootstrap.mk)
-
ken authored
Added -static, a flag for compiling on the Alpha that is already listed under machdepCCOpts in DriverFlags.hs. Without it, the following assert in GC.c fails: /* make sure the info pointer is into text space */ ASSERT(q && (LOOKS_LIKE_GHC_INFO(GET_INFO(q)) || IS_HUGS_CONSTR_INFO(GET_INFO(q)))); Added -Xlinker -noprefix_recognition, a flag for Alpha compilation that I just added to machdepCCOpts in DriverFlags.hs. We need this flag to disable the following documented behavior of ld(1) on Digital UNIX: All routines that start with __init_ are treated, by default, as initialization routines. These are routines that are called without an argument when the file that contains them is loaded or when the program that contains them is started. Unfortunately, this flag produces the annoying (but harmless) gcc message gcc: -noprefix_recognition: linker input file unused since linking not done (See also ghc/compiler/main/DriverFlags.hs)
-