- 27 Jun, 2013 8 commits
-
-
Peter Wortmann authored
This combined patch reworks the LLVM backend in a number of ways: 1. Most prominently, we introduce a LlvmM monad carrying the contents of the old LlvmEnv around. This patch completely removes LlvmEnv and refactors towards standard library monad combinators wherever possible. 2. Support for streaming - we can now generate chunks of Llvm for Cmm as it comes in. This might improve our speed. 3. To allow streaming, we need a more flexible way to handle forward references. The solution (getGlobalPtr) unifies LlvmCodeGen.Data and getHsFunc as well. 4. Skip alloca-allocation for registers that are actually never written. LLVM will automatically eliminate these, but output is smaller and friendlier to human eyes this way. 5. We use LlvmM to collect references for llvm.used. This allows places other than cmmProcLlvmGens to generate entries.
-
Peter Wortmann authored
I am not quite sure at what point it makes sense to look at arrays as pointers, but I ran into at least one use case that strongly suggested doing it this way (calculating the actual size of structures, to be exact).
-
Peter Wortmann authored
-
Peter Wortmann authored
Also give them a proper constructor - getGlobalVar and getGlobalValue map directly to the accessors.
-
Peter Wortmann authored
This patch reworks some parts of the LLVM pretty-printing code that were still using Show and String. Now we should be using SDoc and Outputable throughout. Note that many get*Name functions become pp*Name here as a side-effect.
-
Peter Wortmann authored
- MetaArgs is not needed, as variables are already meta data - Same goes for MetaVal - its only reason for existing seems to be to support LLVM's strange pretty-printing for meta-data annotations, and I feel that is better to keep the data structure clean and handle it in the pretty-printing instead. - Rename "MetaData" to "MetaAnnot". Meta-data is still meta-data when it is not associated with an expression or statement - for example compile unit data for debugging. I feel the old name was a bit misleading. - Make the renamed MetaAnnot a proper data type instead of a type alias for a pair. - Rename "MetaExpr" constructor to "MetaStruct". As the data is much more like a LLVM structure (not array, as it can contain values). - Fix a warning
-
dterei authored
backend.
-
dterei authored
-
- 25 Jun, 2013 6 commits
-
-
Simon Peyton Jones authored
-
aljee@hyper.cx authored
-
Gabor Greif authored
-
Simon Peyton Jones authored
See Note [GC recovery]. To come: clean-up of StgCmmBind.cgRhs.
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
You ought to be able to say module M( C( T, foo ) where class C a where type T a foo :: a -> T a i.e. with T in C's sub-item list. This makes it so.
-
- 24 Jun, 2013 6 commits
-
-
gmainlan@microsoft.com authored
I was seeing many "WARNING: cache is out of date" errors during validation claiming that my package cache was out of date. This patch eliminates those errors by ensuring that when we rebuild the package cache, the modification time of the directory containing the package database is set to be the same as the modification time of the cache.
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
so that RULE text/str gets a chance to fire (Trac #7995). And make sure that Outputable.text is inlined, so that the underlying Pretty.text rule can fire. The thing is that literal strings only turn into unpackCString# in phase 1.
-
Simon Peyton Jones authored
When we changed 'rec' to *not* do segmentation of any kind, I did it by meddling with the inner loop of grab in glomSegments. But that is really hard to understand! This patch lifts the test out to the top where is is clear.
-
Simon Peyton Jones authored
-
- 23 Jun, 2013 2 commits
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
They now go through log_action. The existing severities all used printDoc, which always adds a trailing newline, which we don't want for the GHCi messages. I therefore added a new severity SevInteractive, which doesn't add a newline.
-
- 22 Jun, 2013 14 commits
-
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
Part of #7833
-
gmainlan@microsoft.com authored
This patch fixes profiling at the cost of losing cost centre accounting in a very small number of cases. I am working on a better fix.
-
ian@well-typed.com authored
This fixes a bug with how configure re-execs itself.
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
ian@well-typed.com authored
We were using a mixture of "––" and "--". We now consistently use "--", which has the advantage that copy/pasting flags will work.
-
ian@well-typed.com authored
-
Erik de Castro Lopo authored
Add definitions for stg_C_FINALIZER_LIST and n_capabilities.
-
ian@well-typed.com authored
-
- 21 Jun, 2013 4 commits
-
-
eir@cis.upenn.edu authored
This commit changes the syntax and story around overlapping type family instances. Before, we had "unbranched" instances and "branched" instances. Now, we have closed type families and open ones. The behavior of open families is completely unchanged. In particular, coincident overlap of open type family instances still works, despite emails to the contrary. A closed type family is declared like this: > type family F a where > F Int = Bool > F a = Char The equations are tried in order, from top to bottom, subject to certain constraints, as described in the user manual. It is not allowed to declare an instance of a closed family.
-
Gabor Greif authored
-
thoughtpolice authored
Again, the range of gc_type is actually 1-3, which is technically outside the range of rtsBool. Signed-off-by:
Austin Seipp <aseipp@pobox.com>
-
thoughtpolice authored
rtsBool is defined to only have two inhabitants, which are true (1) and false (0) But the wakeup flag is set to 4 possible values, outside the range of rtsBool. This leads Clang to warn about tautological comparisons. Signed-off-by:
Austin Seipp <aseipp@pobox.com>
-