ghc-hetmet.git
13 years agoLLVM: Add in new LLVM mangler for implementing TNTC on OSX
David Terei [Tue, 13 Jul 2010 18:32:43 +0000 (18:32 +0000)]
LLVM: Add in new LLVM mangler for implementing TNTC on OSX

13 years agoRefactor where an error message is generated
simonpj@microsoft.com [Tue, 13 Jul 2010 11:57:33 +0000 (11:57 +0000)]
Refactor where an error message is generated

13 years agoComments only
simonpj@microsoft.com [Tue, 13 Jul 2010 11:57:03 +0000 (11:57 +0000)]
Comments only

13 years agoComments on data type families
simonpj@microsoft.com [Tue, 13 Jul 2010 11:56:40 +0000 (11:56 +0000)]
Comments on data type families

13 years agoFix Trac #T4136: take care with nullary symbol constructors
simonpj@microsoft.com [Wed, 7 Jul 2010 13:59:45 +0000 (13:59 +0000)]
Fix Trac #T4136: take care with nullary symbol constructors

When a nullary constructor is a symbol eg (:=:) we need
to take care.  Annoying.

13 years agoFix Trac #4127 (and hence #4173)
simonpj@microsoft.com [Wed, 7 Jul 2010 12:31:25 +0000 (12:31 +0000)]
Fix Trac #4127 (and hence #4173)

The change involves a little refactoring, so that the default
method Ids are brought into scope earlier, before the value
declarations are compiled.  (Since a value decl may contain
an instance decl in a quote.)

See Note [Default method Ids and Template Haskell] in
TcTyClsDcls.

13 years agoFix second bug in Trac #4127
simonpj@microsoft.com [Thu, 1 Jul 2010 14:01:24 +0000 (14:01 +0000)]
Fix second bug in Trac #4127

This bug concerned the awkward shadowing we do for
Template Haskell declaration brackets.  Lots of
comments in

  Note [Top-level Names in Template Haskell decl quotes]

13 years agoia64: switch handling of 'foreign import wrapper' (FIW) to libffi
Sergei Trofimovich [Fri, 9 Jul 2010 21:39:22 +0000 (21:39 +0000)]
ia64: switch handling of 'foreign import wrapper' (FIW) to libffi

I tried to build darcs-2.4.4 with ghc-6.12.3 and got coredumps when darcs is used
in interactive mode. I tried test from ticket #3516 and found out FIW code is broken.
Instead of fixing it I just switched to libffi. Result built successfully, passed
'foreign import wrapper' test from ticket #3516 and builds working darcs.

13 years ago* storage manager: preserve upper address bits on 64bit machines (thanks to zygoloid)
Sergei Trofimovich [Fri, 9 Jul 2010 11:59:17 +0000 (11:59 +0000)]
* storage manager: preserve upper address bits on 64bit machines (thanks to zygoloid)

Patch does not touch amd64 as it's address lengts is 48 bits at most, so amd64 is unaffected.

the issue: during ia64 ghc bootstrap (both 6.10.4 and 6.12.3) I
got the failure on stage2 phase:
    "inplace/bin/ghc-stage2"   -H32m -O -H64m -O0 -w ...
    ghc-stage2: internal error: evacuate: strange closure type 15
        (GHC version 6.12.3 for ia64_unknown_linux)
        Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
    make[1]: *** [libraries/dph/dph-base/dist-install/build/Data/Array/Parallel/Base/Hyperstrict.o] Aborted

gdb backtrace (break on 'barf'):
Breakpoint 1 at 0x400000000469ec31: file rts/RtsMessages.c, line 39.
(gdb) run -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info
Starting program: /var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/lib/ghc-stage2 -B/var/tmp/portage/dev-lang/ghc-6.12.3/work/ghc-6.12.3/inplace/bin --info
[Thread debugging using libthread_db enabled]

Breakpoint 1, barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39
39        va_start(ap,s);
(gdb) bt
#0  barf (s=0x40000000047915b0 "evacuate: strange closure type %d") at rts/RtsMessages.c:39
#1  0x400000000474a1e0 in evacuate (p=0x6000000000147958) at rts/sm/Evac.c:756
#2  0x40000000046d68c0 in scavenge_srt (srt=0x6000000000147958, srt_bitmap=7) at rts/sm/Scav.c:348
...

> 16:52:53 < zygoloid> slyfox: i'm no ghc expert but it looks like HEAP_ALLOCED_GC(q)
>                      is returning true for a FUN_STATIC closure
> 17:18:43 < zygoloid> try: p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p)
> 17:19:12 < slyfox> (gdb) p HEAP_ALLOCED_miss((unsigned long)(*p) >> 20, *p)
> 17:19:12 < slyfox> $1 = 0
> 17:19:40 < zygoloid> i /think/ that means the mblock_cache is broken
> 17:22:45 < zygoloid> i can't help further. however i am suspicious that you seem to have pointers with similar-looking low 33
>                      bits and different high 4 bits, and it looks like such pointers get put into the same bucket in
>                      mblock_cache.
...
> 17:36:16 < zygoloid> slyfox: try changing the definition of MbcCacheLine to StgWord64, see if that helps
> 17:36:31 < zygoloid> that's in includes/rts/storage/MBlock.h
And it helped!

13 years agoFixing link failure of compiler on ia64 ('-Wl,' prefixed value passed directly to ld)
Sergei Trofimovich [Thu, 8 Jul 2010 18:09:43 +0000 (18:09 +0000)]
Fixing link failure of compiler on ia64 ('-Wl,' prefixed value passed directly to ld)

    /usr/bin/ld -Wl,--relax -r -o dist-stage1/build/HSghc-6.10.4.o \
                                  dist-stage1/build/BasicTypes.o dist-stage1/build/DataCon.o ...
    /usr/bin/ld: unrecognized option '-Wl,--relax'

If we just drop '-Wl,' part it will not help as '-r' and '--relax' are incompatible.

Looks like '-Wl,--relax' was skipped by earlier binutils' ld as unknown option.
Removing ia64 specific path.

13 years agoLLVM: Allow getelementptr to use LlvmVar for indexes.
David Terei [Mon, 12 Jul 2010 15:25:29 +0000 (15:25 +0000)]
LLVM: Allow getelementptr to use LlvmVar for indexes.

13 years agoMove all the warning workarounds to one place
Ian Lynagh [Sat, 10 Jul 2010 16:17:23 +0000 (16:17 +0000)]
Move all the warning workarounds to one place

13 years agoxhtml is now warning-free
Ian Lynagh [Sat, 10 Jul 2010 14:46:35 +0000 (14:46 +0000)]
xhtml is now warning-free

13 years agoMove a bit of build system code
Ian Lynagh [Fri, 9 Jul 2010 22:45:34 +0000 (22:45 +0000)]
Move a bit of build system code

13 years agoadapt to the new async exceptions API
Simon Marlow [Fri, 9 Jul 2010 12:52:38 +0000 (12:52 +0000)]
adapt to the new async exceptions API

13 years agoquiet some new spewage
Simon Marlow [Fri, 9 Jul 2010 09:15:21 +0000 (09:15 +0000)]
quiet some new spewage

13 years agoNew asynchronous exception control API (ghc parts)
Simon Marlow [Thu, 8 Jul 2010 14:48:51 +0000 (14:48 +0000)]
New asynchronous exception control API (ghc parts)

As discussed on the libraries/haskell-cafe mailing lists
  http://www.haskell.org/pipermail/libraries/2010-April/013420.html

This is a replacement for block/unblock in the asychronous exceptions
API to fix a problem whereby a function could unblock asynchronous
exceptions even if called within a blocked context.

The new terminology is "mask" rather than "block" (to avoid confusion
due to overloaded meanings of the latter).

In GHC, we changed the names of some primops:

  blockAsyncExceptions#   -> maskAsyncExceptions#
  unblockAsyncExceptions# -> unmaskAsyncExceptions#
  asyncExceptionsBlocked# -> getMaskingState#

and added one new primop:

  maskUninterruptible#

See the accompanying patch to libraries/base for the API changes.

13 years agoremove outdated comment
Simon Marlow [Thu, 8 Jul 2010 10:08:40 +0000 (10:08 +0000)]
remove outdated comment

13 years agoremove 'mode: xml' emacs settings (#2208)
Simon Marlow [Thu, 8 Jul 2010 10:08:17 +0000 (10:08 +0000)]
remove 'mode: xml' emacs settings (#2208)

13 years agotypo in comment
Simon Marlow [Wed, 16 Jun 2010 11:13:59 +0000 (11:13 +0000)]
typo in comment

13 years agoWin32 getProcessElapsedTime: use a higher-resolution time source
Simon Marlow [Thu, 8 Jul 2010 09:32:23 +0000 (09:32 +0000)]
Win32 getProcessElapsedTime: use a higher-resolution time source
QueryPerformanceCounter() on Windows gives much better resolution than
GetSystemTimeAsFileTime().

13 years agoalpha: switch handling of 'foreign import wrapper' (FIW) to libffi
Sergei Trofimovich [Thu, 8 Jul 2010 06:53:18 +0000 (06:53 +0000)]
alpha: switch handling of 'foreign import wrapper' (FIW) to libffi

I tried to build ghc-6.12.3 and found out FIW part of code
does not compile anymore. It uses absent functions under #ifdef.
Instead of fixing it I just switched to libffi. Result built successfully
and passed 'foreign import wrapper' test I wrote for trac ticket #3516.

I didn't try to build -HEAD yet, but this patch only removes code, so
it should not make -HEAD worse.

13 years agoReorder the CPP flags so -optP can override the platform defines
Ian Lynagh [Thu, 8 Jul 2010 20:35:23 +0000 (20:35 +0000)]
Reorder the CPP flags so -optP can override the platform defines

13 years agoAdd docs for DatatypeContexts extension
Ian Lynagh [Wed, 7 Jul 2010 23:09:07 +0000 (23:09 +0000)]
Add docs for DatatypeContexts extension

13 years agoMake datatype contexts an extension (on by default) (DatatypeContexts)
Ian Lynagh [Wed, 7 Jul 2010 21:25:29 +0000 (21:25 +0000)]
Make datatype contexts an extension (on by default) (DatatypeContexts)

13 years agoLLVM: Fix various typos in comments
David Terei [Wed, 7 Jul 2010 22:04:48 +0000 (22:04 +0000)]
LLVM: Fix various typos in comments

13 years agoHandle haddock headers when looking for LANGUAGE/OPTIONS_GHC pragmas
Ian Lynagh [Wed, 7 Jul 2010 12:04:23 +0000 (12:04 +0000)]
Handle haddock headers when looking for LANGUAGE/OPTIONS_GHC pragmas

13 years agoMake pragState call mkPState, rather than duplicating everything
Ian Lynagh [Tue, 6 Jul 2010 17:30:07 +0000 (17:30 +0000)]
Make pragState call mkPState, rather than duplicating everything
This also means that extsBitmap gets set, whereas is was just being set
to 0 before.

13 years agoLLVM: Add alias type defenitions to LlvmModule.
David Terei [Wed, 7 Jul 2010 14:20:53 +0000 (14:20 +0000)]
LLVM: Add alias type defenitions to LlvmModule.

13 years agoLLVM: Use packed structure type instead of structure type
David Terei [Wed, 7 Jul 2010 12:03:20 +0000 (12:03 +0000)]
LLVM: Use packed structure type instead of structure type

The regular structure type adds padding to conform to the platform ABI,
which causes problems with structures storing doubles under windows since
we don't conform to the platform ABI there. So we use packed structures
instead now that don't do any padding.

13 years agoMake mkPState and pragState take their arguments in the same order
Ian Lynagh [Tue, 6 Jul 2010 17:26:11 +0000 (17:26 +0000)]
Make mkPState and pragState take their arguments in the same order

13 years agoRemove an out-of-date comment
Ian Lynagh [Tue, 6 Jul 2010 17:22:17 +0000 (17:22 +0000)]
Remove an out-of-date comment

13 years agoLLVM: Stop llvm saving stg caller-save regs across C calls
David Terei [Mon, 5 Jul 2010 16:26:29 +0000 (16:26 +0000)]
LLVM: Stop llvm saving stg caller-save regs across C calls

This is already handled by the Cmm code generator so LLVM is simply
duplicating work. LLVM also doesn't know which ones are actually live
so saves them all which causes a fair performance overhead for C calls
on x64. We stop llvm saving them across the call by storing undef to
them just before the call.

13 years agoLLVM: Add in literal undefined value to binding
David Terei [Mon, 5 Jul 2010 16:15:44 +0000 (16:15 +0000)]
LLVM: Add in literal undefined value to binding

13 years agoLLVM: Add a literal NULL value to binding
David Terei [Mon, 5 Jul 2010 16:13:08 +0000 (16:13 +0000)]
LLVM: Add a literal NULL value to binding

Patch from Erik de Castro Lopo <erikd@mega-nerd.com>.

13 years agorefactor import declaration support (#2362)
Simon Marlow [Mon, 5 Jul 2010 10:45:57 +0000 (10:45 +0000)]
refactor import declaration support (#2362)

13 years agoDisable dynamic linking optimisations on OS X
Simon Marlow [Mon, 5 Jul 2010 10:30:14 +0000 (10:30 +0000)]
Disable dynamic linking optimisations on OS X
To improve performance of the RTS when dynamically linked on x86, I
previously disabled -fPIC for certain critical modules (the GC, and a
few others).  However, build reports suggest that the dynamic linker
on OS X doesn't like this, so I'm disabling this optimsation on that
platform.

13 years agotrac #2362 (full import syntax in ghci)
amsay@amsay.net [Fri, 25 Jun 2010 03:26:32 +0000 (03:26 +0000)]
trac #2362 (full import syntax in ghci)
'import' syntax is seperate from ':module' syntax

13 years agoSimplify ghc-pkg's Cabal dependencies
Ian Lynagh [Sun, 4 Jul 2010 18:41:55 +0000 (18:41 +0000)]
Simplify ghc-pkg's Cabal dependencies
We no longer support building with a compiler that doesn't come with
base 4.

13 years agoUse Cabal to configure the dist-install ghc-pkg; fixes trac #4156
Ian Lynagh [Sun, 4 Jul 2010 13:26:12 +0000 (13:26 +0000)]
Use Cabal to configure the dist-install ghc-pkg; fixes trac #4156

13 years agoRemove dead code (standalone deriving flag no longer used in parser)
Ian Lynagh [Thu, 1 Jul 2010 16:20:58 +0000 (16:20 +0000)]
Remove dead code (standalone deriving flag no longer used in parser)

13 years agoLLVM: Use the inbounds keyword for getelementptr instructions.
David Terei [Fri, 2 Jul 2010 16:05:11 +0000 (16:05 +0000)]
LLVM: Use the inbounds keyword for getelementptr instructions.

13 years agothreadPaused: fix pointer arithmetic
Simon Marlow [Thu, 1 Jul 2010 08:50:46 +0000 (08:50 +0000)]
threadPaused: fix pointer arithmetic
Noticed by Henrique Ferreiro <hferreiro@udc.es>, thanks!

13 years agoLLVM: Change more operations to use getelementptr
David Terei [Thu, 1 Jul 2010 16:18:56 +0000 (16:18 +0000)]
LLVM: Change more operations to use getelementptr

13 years agoAdd the haskell2010 package
Simon Marlow [Wed, 30 Jun 2010 12:55:32 +0000 (12:55 +0000)]
Add the haskell2010 package

13 years agoLLVM: Use getelementptr instruction for a lot of situations
David Terei [Wed, 30 Jun 2010 18:11:57 +0000 (18:11 +0000)]
LLVM: Use getelementptr instruction for a lot of situations

LLVM supports creating pointers in two ways, firstly through
pointer arithmetic (by casting between pointers and ints)
and secondly using the getelementptr instruction. The second way
is preferable as it gives LLVM more information to work with.

This patch changes a lot of pointer related code from the first
method to the getelementptr method.

13 years agoremove out of date comments; point to the wiki
Simon Marlow [Fri, 25 Jun 2010 10:03:13 +0000 (10:03 +0000)]
remove out of date comments; point to the wiki

13 years agoNCG: allocatableRegs is only giving us 8 SSE regs to allocate to
benl@ouroborus.net [Tue, 29 Jun 2010 05:43:21 +0000 (05:43 +0000)]
NCG: allocatableRegs is only giving us 8 SSE regs to allocate to

13 years agoLLVM: Use intrinsic functions for pow, sqrt, sin, cos
David Terei [Mon, 28 Jun 2010 18:29:49 +0000 (18:29 +0000)]
LLVM: Use intrinsic functions for pow, sqrt, sin, cos

Instead of calling the C library for these Cmm functions
we use intrinsic functions provided by llvm. LLVM will
then either create a compile time constant if possible, or
use a cpu instruction or as a last resort call the C
library.

13 years agoLLVM: Fix test '2047' under linux-x64
David Terei [Mon, 28 Jun 2010 16:52:56 +0000 (16:52 +0000)]
LLVM: Fix test '2047' under linux-x64

13 years agoLLVM: Fix test 'ffi005' under linux-x64
David Terei [Mon, 28 Jun 2010 15:53:55 +0000 (15:53 +0000)]
LLVM: Fix test 'ffi005' under linux-x64

13 years agoLLVM: Update to use new fp ops introduced in 2.7
David Terei [Mon, 28 Jun 2010 14:40:37 +0000 (14:40 +0000)]
LLVM: Update to use new fp ops introduced in 2.7

13 years agoAdd noalias and nocapture attributes to pointer stg registers
David Terei [Mon, 28 Jun 2010 11:51:20 +0000 (11:51 +0000)]
Add noalias and nocapture attributes to pointer stg registers

At the moment this gives a very slight performance boost of around 1 - 2%.
Future changes to the generated code though so that pointers are kept as
pointers more often instead of being cast to integer types straight away
should hopefully improve the benefit this brings.

13 years agoduring shutdown, only free the heap if we waited for foreign calls to exit
Simon Marlow [Mon, 28 Jun 2010 09:05:36 +0000 (09:05 +0000)]
during shutdown, only free the heap if we waited for foreign calls to exit

13 years agoFix typo in -ddump-pass's document.
shelarcy [Sun, 20 Jun 2010 07:07:59 +0000 (07:07 +0000)]
Fix typo in -ddump-pass's document.

13 years agoAdd #undefs for posix source symbols when including papi.h
dmp@rice.edu [Thu, 24 Jun 2010 16:35:14 +0000 (16:35 +0000)]
Add #undefs for posix source symbols when including papi.h

Validation fails when validating with PAPI support (i.e. GhcRtsWithPapi  = YES
in validate.mk).  The problem is that the posix symbols are defined by a header
included from papi.h. Compilation then fails because these symbols are
redefined in PosixSource.h.

This patch adds an undefine for the posix symbols after including papi.h and
before including PosixSource.h. The #undefines are localized to Papi.c since
that is the only case where they are getting defined twice.

13 years agoUse machdepCCOpts in runPhase_MoveBinary; fixes trac #3952
Ian Lynagh [Fri, 25 Jun 2010 22:09:53 +0000 (22:09 +0000)]
Use machdepCCOpts in runPhase_MoveBinary; fixes trac #3952

13 years agoLLVM: Fix bug with calling tail with empty list
David Terei [Fri, 25 Jun 2010 11:57:29 +0000 (11:57 +0000)]
LLVM: Fix bug with calling tail with empty list

13 years agoFix warnings
benl@ouroborus.net [Thu, 24 Jun 2010 09:13:39 +0000 (09:13 +0000)]
Fix warnings

13 years agoNCG: Comments and formatting only
benl@ouroborus.net [Thu, 24 Jun 2010 08:31:21 +0000 (08:31 +0000)]
NCG: Comments and formatting only

13 years agoNCG: Do the actual reversing of SCCs
benl@ouroborus.net [Thu, 24 Jun 2010 08:27:17 +0000 (08:27 +0000)]
NCG: Do the actual reversing of SCCs

13 years agoNCG: Fix dumping of graphs in regalloc stats for graph allocator
benl@ouroborus.net [Thu, 24 Jun 2010 08:26:25 +0000 (08:26 +0000)]
NCG: Fix dumping of graphs in regalloc stats for graph allocator

13 years agoNCG: Reverse SCCs after each round in the graph allocator
benl@ouroborus.net [Thu, 24 Jun 2010 08:24:37 +0000 (08:24 +0000)]
NCG: Reverse SCCs after each round in the graph allocator

13 years agoNCG: Don't actually complain on unreachable code blocks
benl@ouroborus.net [Thu, 24 Jun 2010 08:14:45 +0000 (08:14 +0000)]
NCG: Don't actually complain on unreachable code blocks

13 years agoNCG: Do explicit check for precondition of computeLiveness
benl@ouroborus.net [Thu, 24 Jun 2010 08:07:47 +0000 (08:07 +0000)]
NCG: Do explicit check for precondition of computeLiveness

 computeLiveness requires the SCCs of blocks to be in reverse dependent
 order, and if they're not it was silently giving bad liveness info,
 yielding a bad allocation.

 Now it complains, loudly.

13 years agoNCG: Fix off-by-one error in realRegSqueeze
benl@ouroborus.net [Wed, 23 Jun 2010 09:58:13 +0000 (09:58 +0000)]
NCG: Fix off-by-one error in realRegSqueeze

13 years agoNCG: Handle stripping of liveness info from procs with no blocks (like stg_split_marker)
benl@ouroborus.net [Wed, 23 Jun 2010 09:12:09 +0000 (09:12 +0000)]
NCG: Handle stripping of liveness info from procs with no blocks (like stg_split_marker)

13 years agoNCG: Emit a warning on unreachable code block instead of panicing
benl@ouroborus.net [Wed, 23 Jun 2010 08:50:02 +0000 (08:50 +0000)]
NCG: Emit a warning on unreachable code block instead of panicing

14 years agoNCG: Remember to keep the entry block first when erasing liveness info
Ben.Lippmeier@anu.edu.au [Thu, 17 Sep 2009 10:44:29 +0000 (10:44 +0000)]
NCG: Remember to keep the entry block first when erasing liveness info

14 years agoNCG: Refactor representation of code with liveness info
Ben.Lippmeier@anu.edu.au [Thu, 17 Sep 2009 09:07:30 +0000 (09:07 +0000)]
NCG: Refactor representation of code with liveness info

 * I've pushed the SPILL and RELOAD instrs down into the
   LiveInstr type to make them easier to work with.

 * When the graph allocator does a spill cycle it now just
   re-annotates the LiveCmmTops instead of converting them
   to NatCmmTops and back.

 * This saves working out the SCCS again, and avoids rewriting
   the SPILL and RELOAD meta instructions into real machine
   instructions.

14 years agoNCG: Add sanity checking to linear allocator
Ben.Lippmeier@anu.edu.au [Thu, 17 Sep 2009 09:03:35 +0000 (09:03 +0000)]
NCG: Add sanity checking to linear allocator
If there are are unreachable basic blocks in the native code then the
linear allocator might loop. Detect this case and panic instead.

14 years agoNCG: Refactor LiveCmmTop to hold a list of SCCs instead of abusing ListGraph
Ben.Lippmeier@anu.edu.au [Thu, 17 Sep 2009 06:03:32 +0000 (06:03 +0000)]
NCG: Refactor LiveCmmTop to hold a list of SCCs instead of abusing ListGraph

14 years agoNCG: Allow the liveness map in a LiveInfo to be Nothing
Ben.Lippmeier@anu.edu.au [Thu, 17 Sep 2009 04:39:37 +0000 (04:39 +0000)]
NCG: Allow the liveness map in a LiveInfo to be Nothing

14 years agoNCG: Also show the result of applying coalesings with -ddump-asm-regalloc-stages
Ben.Lippmeier.anu.edu.au [Thu, 17 Sep 2009 03:44:27 +0000 (03:44 +0000)]
NCG: Also show the result of applying coalesings with -ddump-asm-regalloc-stages

13 years agoFix panic when running "ghc -H"; trac #3364
Ian Lynagh [Thu, 24 Jun 2010 23:40:11 +0000 (23:40 +0000)]
Fix panic when running "ghc -H"; trac #3364
The problem is that showing SDoc's looks at the static flags global
variables, but those are panics while we are parsing the static flags.
We work around this by explicitly using a fixed prettyprinter style.

13 years agoAllow for stg registers to have pointer type in llvm BE.
David Terei [Mon, 21 Jun 2010 17:58:39 +0000 (17:58 +0000)]
Allow for stg registers to have pointer type in llvm BE.

Before all the stg registers were simply a bit type or
floating point type but now they can be declared to have
a pointer type to one of these. This will allow various
optimisations in the future in llvm since the type is
more accurate.

13 years agoAdd support for parameter attributes to the llvm BE binding
David Terei [Thu, 24 Jun 2010 11:17:44 +0000 (11:17 +0000)]
Add support for parameter attributes to the llvm BE binding

These allow annotations of the code produced by the backend
which should bring some perforamnce gains. At the moment
the attributes aren't being used though.

13 years agoCast some more nats to StgWord to be on the safe side
Simon Marlow [Thu, 24 Jun 2010 10:57:00 +0000 (10:57 +0000)]
Cast some more nats to StgWord to be on the safe side
And add a comment about the dangers of int overflow

13 years agocomments only
Simon Marlow [Thu, 24 Jun 2010 10:51:05 +0000 (10:51 +0000)]
comments only

13 years agoFix an arithmetic overflow bug causing crashes with multi-GB heaps
Simon Marlow [Thu, 24 Jun 2010 10:46:54 +0000 (10:46 +0000)]
Fix an arithmetic overflow bug causing crashes with multi-GB heaps

13 years agoAdd support for collecting PAPI native events
dmp@rice.edu [Tue, 22 Jun 2010 19:59:53 +0000 (19:59 +0000)]
Add support for collecting PAPI native events

This patch extends the PAPI support in the RTS to allow collection of native
events. PAPI can collect data for native events that are exposed by the
hardware beyond the PAPI present events. The native events supported on your
hardware can found by using the papi_native_avail tool.

The RTS already allows users to specify PAPI preset events from the command
line. This patch extends that support to allow users to specify native events.
The changes needed are:

1) New option (#) for the RTS PAPI flag for native events. For example, to
   collect the native event 0x40000000, use ./a.out +RTS -a#0x40000000 -sstderr

2) Update the PAPI_FLAGS struct to store whether the user specified event is a
   papi preset or a native event

3) Update init_countable_events function to add the native events after parsing
   the event code and decoding the name using PAPI_event_code_to_name

13 years agoDon't warn about unused bindings with parents in .hs-boot files; trac #3449
Ian Lynagh [Thu, 24 Jun 2010 11:03:51 +0000 (11:03 +0000)]
Don't warn about unused bindings with parents in .hs-boot files; trac #3449

13 years agofix the home_imps filter to allow for 'import "this" <module>'
Simon Marlow [Mon, 21 Jun 2010 12:55:35 +0000 (12:55 +0000)]
fix the home_imps filter to allow for 'import "this" <module>'
In the PackageImports extension, import "this" means "import from the
current package".

13 years agoUse the standard C wrapper code for the ghc-$version.exe wrapper
Ian Lynagh [Tue, 22 Jun 2010 20:28:59 +0000 (20:28 +0000)]
Use the standard C wrapper code for the ghc-$version.exe wrapper

13 years agoDon't rely on "-packagefoo" working; use "-package foo" instead
Ian Lynagh [Tue, 22 Jun 2010 20:25:47 +0000 (20:25 +0000)]
Don't rely on "-packagefoo" working; use "-package foo" instead

13 years agoRemove unnecessary C #includes
Ian Lynagh [Tue, 22 Jun 2010 17:29:19 +0000 (17:29 +0000)]
Remove unnecessary C #includes

13 years agoMake the ghci.exe wrapper call the right ghc.exe
Ian Lynagh [Tue, 22 Jun 2010 17:22:47 +0000 (17:22 +0000)]
Make the ghci.exe wrapper call the right ghc.exe

13 years agoMore updates to datalayout description in llvm BE
David Terei [Tue, 22 Jun 2010 16:53:39 +0000 (16:53 +0000)]
More updates to datalayout description in llvm BE

13 years agoRemove LlvmAs phase as the llvm opt tool now handles this phase
David Terei [Tue, 22 Jun 2010 14:40:44 +0000 (14:40 +0000)]
Remove LlvmAs phase as the llvm opt tool now handles this phase

This phase originally invoked the llvm-as tool that turns a textual
llvm assembly file into a bit code file for the rest of llvm to deal
with. Now the llvm opt tool can do this itself, so we don't need to
use llvm-as anymore.

13 years agoUpdate datalayout info in llvm BE
David Terei [Tue, 22 Jun 2010 12:34:57 +0000 (12:34 +0000)]
Update datalayout info in llvm BE

13 years agoFix handling of float literals in llvm BE
David Terei [Tue, 22 Jun 2010 12:16:42 +0000 (12:16 +0000)]
Fix handling of float literals in llvm BE

13 years agoDeclare some top level globals to be constant when appropriate
David Terei [Mon, 21 Jun 2010 17:49:54 +0000 (17:49 +0000)]
Declare some top level globals to be constant when appropriate

This involved removing the old constant handling mechanism
which was fairly hard to use. Now being constant or not is
simply a property of a global variable instead of a separate
type.

13 years agoReduce the number of passes over the cmm in llvm BE
David Terei [Mon, 21 Jun 2010 12:52:20 +0000 (12:52 +0000)]
Reduce the number of passes over the cmm in llvm BE

13 years agoFix negate op not working for -0 in llvm backend
David Terei [Mon, 21 Jun 2010 12:36:06 +0000 (12:36 +0000)]
Fix negate op not working for -0 in llvm backend

13 years agoROLLBACK: picCCOpts: -dynamic should not entail -optc-fPIC
Simon Marlow [Mon, 21 Jun 2010 10:04:09 +0000 (10:04 +0000)]
ROLLBACK: picCCOpts: -dynamic should not entail -optc-fPIC
and add a comment to explain why it was wrong.  This fixes the dyn
test failures that sprang up recently.

13 years agoCheck files are really created in libffi
Ian Lynagh [Sun, 20 Jun 2010 16:37:24 +0000 (16:37 +0000)]
Check files are really created in libffi
when we think that the libffi build creates them, so they just depend
on the libffi build stamp.

13 years agoImprove the missing-import-list warning
Ian Lynagh [Sun, 20 Jun 2010 12:43:20 +0000 (12:43 +0000)]
Improve the missing-import-list warning

13 years agoTweak missing-import-list warning
Ian Lynagh [Sun, 20 Jun 2010 12:26:22 +0000 (12:26 +0000)]
Tweak missing-import-list warning

13 years agotrac #1789 (warnings for missing import lists)
amsay@amsay.net [Fri, 18 Jun 2010 15:06:49 +0000 (15:06 +0000)]
trac #1789 (warnings for missing import lists)

13 years agoRefix docs for sizeofByteArray#/sizeofMutableByteArray# (#3800)
Ian Lynagh [Sun, 20 Jun 2010 10:37:49 +0000 (10:37 +0000)]
Refix docs for sizeofByteArray#/sizeofMutableByteArray# (#3800)