Permalink
Commits on Jul 5, 2011
  1. Changed gct access to use inline asm for clang

    dmpots committed Jul 5, 2011
    The change improves the performance of gc-intense
    benchmarks. The average increase in exectuion time vs. a
    straight register variable is about 9%.
    
    NoFib Results
    -----------------------------------------------------------------------
            Program           Size    Allocs   Runtime   Elapsed  TotalMem
    -----------------------------------------------------------------------
            circsim          +0.1%     +0.0%     +8.2%     +7.5%     -0.1%
        constraints          +0.1%     +0.0%    +13.4%    +13.0%     +0.0%
           fibheaps          +0.1%  (stdout)  (stdout)  (stdout)  (stdout)
             fulsom          +0.1%     +0.0%     +9.5%    +10.0%     +0.0%
           gc_bench          +0.1%     -0.0%    +15.7%    +15.5%     +0.0%
              happy          +0.1%     +0.0%     +6.2%     +6.1%     +0.0%
               lcss          +0.1%     +0.0%    +11.0%    +10.0%     +0.0%
          mutstore1          +0.1%     -0.0%    +14.6%    +13.3%     +0.0%
          mutstore2          +0.1%     -0.0%     +4.1%     +3.9%     +0.0%
              power          +0.1%     +0.0%     +8.4%     +7.8%     +0.0%
         spellcheck          +0.1%     +0.0%     +2.0%     +1.9%     +0.0%
    -----------------------------------------------------------------------
                Min          +0.1%     -0.0%     +2.0%     +1.9%     -0.1%
                Max          +0.1%     +0.0%    +15.7%    +15.5%     +0.0%
     Geometric Mean          +0.1%     +0.0%     +9.2%     +8.8%     -0.0%
Commits on Jun 29, 2011
  1. Add autoconf support to detect an LLVM-based C compiler

    dmpots committed Jun 28, 2011
    This patch adds support to the autoconf scripts to detect
    when we are using a C compiler that uses an LLVM back end.
    An LLVM back end does not support all of the extensions use
    by GCC, so we need to perform some conditional compilation
    in the runtime, particularly for handling thread local
    storage and global register variables.
    
    The changes here will set the CC_LLVM_BACKEND in the
    autoconf scripts if we detect an llvm-based compiler. We use
    this variable to define the llvm_CC_FLAVOR variable that we
    can use in the runtime code to conditionally compile for
    LLVM.
  2. Enable pthread_getspecific() tls for LLVM compiler

    dmpots committed Jun 28, 2011
    LLVM does not support the __thread attribute for thread
    local storage and may generate incorrect code for global
    register variables. We want to allow building the runtime with
    LLVM-based compilers such as llvm-gcc and clang,
    particularly for MacOS.
    
    This patch changes the gct variable used by the garbage
    collector to use pthread_getspecific() for thread local
    storage when an llvm based compiler is used to build the
    runtime.
  3. Use the x86/Darwin implementation of Adjustors on all x86 platforms,

    simonmar committed Jun 29, 2011
    as it maintains 16-byte alignment of the stack pointer (see #5250)
  4. Warn if LLVM tools aren't installed (#5169)

    David Terei committed Jun 29, 2011
Commits on Jun 28, 2011
  1. comment updates

    simonmar committed Jun 28, 2011
  2. Add a builtin rule for seq# when its argument is a manifest

    simonmar committed Jun 28, 2011
    head-normal-form, and similarly for spark#.
  3. Add two new primops:

    simonmar committed Jun 27, 2011
      seq#   :: a -> State# s -> (# State# s, a #)
      spark# :: a -> State# s -> (# State# s, a #)
    
    seq# is a version of seq that can be used in a State#-passing
    context.  We will use it to implement Control.Exception.evaluate and
    thus fix #5129.  Also we have plans to use it to fix #5262.
    
    spark# is to seq# as par is to pseq.  That is, it creates a spark in a
    State#-passing context.  We will use spark# and seq# to implement rpar
    and rseq respectively in an improved implementation of the Eval monad.
  4. Fix bug introduced in b2bd63f

    simonmar committed Jun 28, 2011
    HPC expects the end column of a span to be one less than the
    convention used by SrcSpan, and we had lost the "-1", causing various
    HPC tests to fail.
  5. Fix LLVM backend in unregisterised build to use C

    David Terei committed Jun 28, 2011
    calling convention.
    
    Patch based on one by Karel Gardas.
Commits on Jun 27, 2011
  1. oops, fix the x86 version of the code in here. I validated on the

    simonmar committed Jun 27, 2011
    wrong platform by mistake.
  2. Keep the C stack pointer 16-byte aligned on all x86 platforms, not ju…

    simonmar committed Jun 17, 2011
    …st Mac OS X (#5250).
    
    The OS X ABI requires the C stack pointer to be 16-byte aligned at a
    function call.  As far as I know this is not a requirement on other
    x86 ABIs, but it seems that gcc is now generating SSE2 code that
    assumes stack alignment (-mincoming-stack-boundary defaults to 4), so
    we have to respect 16-byte alignment.
  3. add missing cases for ArchARM

    simonmar committed Jun 27, 2011
  4. Fix to use %note instead of @note as an ELF section note on ARM archi…

    kgardas committed with simonmar Jun 13, 2011
    …tecture
    
    It looks like where x86 assembly is using '@' character,
    ARM assembly requires '%' character. This makes a problem in the patch
    814edf4 'Force re-linking if
    the options have changed (#4451)' which makes linking assembly
    file uncompilable on ARM. This patch fixes this.
  5. Fix strftime string in fingerprint script

    dmpots committed with simonmar May 29, 2011
    There was an extra % in the strftime string used in the fingerprint
    script to name the output files. It worked fine in python 2.6 on mac
    os, but was producing bad file names in python 2.7 on linux.
Commits on Jun 26, 2011
  1. The patch fixes recognition of 'softfloat' targets as valid:

    trofi committed with igfoo Jun 26, 2011
        ghc $ ./configure --build=armv5tel-softfloat-linux-gnueabi \
                          --host=armv5tel-softfloat-linux-gnueabi \
                          --target=armv5tel-softfloat-linux-gnueabi
        checking for gfind... no
        checking for find... /usr/bin/find
        checking for sort... /usr/bin/sort
        checking for GHC version date... inferred 7.1.20110626
        checking for ghc... /usr/bin/ghc
        checking version of ghc... 7.0.4
        checking build system type... armv5tel-softfloat-linux-gnueabi
        checking host system type... armv5tel-softfloat-linux-gnueabi
        checking target system type... armv5tel-softfloat-linux-gnueabi
        Unknown vendor softfloat
    
    Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
  2. lndir: Ignore .git directories

    igfoo committed Jun 26, 2011
Commits on Jun 25, 2011
  1. Rename STAGE0_PACKAGES to PACKAGES_STAGE0

    igfoo committed Jun 25, 2011
    It now matches PACKAGES_STAGE2
  2. Fix silly mistake in last commit

    David Terei committed Jun 25, 2011
  3. Speed improvement to LLVM Mangler for large sections.

    David Terei committed Jun 25, 2011
    Patch by Peter Wortmann!
  4. Fix gcc 4.6 warnings; fixes #5176

    igfoo committed Jun 24, 2011
    Based on a patch from David Terei.
    
    Some parts are a little ugly (e.g. defining things that only ASSERTs
    use only when DEBUG is defined), so we might want to tweak things a
    little.
    
    I've also turned off -Werror for didn't-inline warnings, as we now
    get a few such warnings.
  5. Fix a typo in a comment

    igfoo committed Jun 24, 2011
Commits on Jun 24, 2011
  1. Remove unused variable

    igfoo committed Jun 24, 2011
  2. Remove unused variable

    igfoo committed Jun 24, 2011