Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Branch: rust-llvm-2016…
Commits on Mar 29, 2017
  1. Merge pull request #68 from luqmana/cherrypick-D27114

    alexcrichton committed Mar 29, 2017
    Preserve nonnull metadata on Loads through SROA & mem2reg.
Commits on Mar 28, 2017
  1. Preserve nonnull metadata on Loads through SROA & mem2reg.

    luqmana committed Mar 22, 2017
    Summary:
    https://llvm.org/bugs/show_bug.cgi?id=31142 :
    
    SROA was dropping the nonnull metadata on loads from allocas that got optimized out. This patch simply preserves nonnull metadata on loads through SROA and mem2reg.
    
    Reviewers: chandlerc, efriedma
    
    Reviewed By: efriedma
    
    Subscribers: hfinkel, spatel, efriedma, arielb1, davide, llvm-commits
    
    Differential Revision: https://reviews.llvm.org/D27114
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298540 91177308-0d34-0410-b5e6-96231b3b80d8
  2. [Profile] refactor meta data copying/swapping code

    Xinliang David Li authored and luqmana committed Aug 23, 2016
    Differential Revision: http://reviews.llvm.org/D23619
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279523 91177308-0d34-0410-b5e6-96231b3b80d8
Commits on Mar 23, 2017
  1. Merge pull request #67 from arielb1/cmov-bits

    alexcrichton committed Mar 23, 2017
    Fix computeKnownBits for ARMISD::CMOV
  2. Fix computeKnownBits for ARMISD::CMOV

    pirama-arumuga-nainar authored and arielb1 committed Mar 23, 2017
    Summary:
    The true and false operands for the CMOV are operands 0 and 1.
    ARMISelLowering.cpp::computeKnownBits was looking at operands 1 and 2
    instead.  This can cause CMOV instructions to be incorrectly folded into
    BFI if value set by the CMOV is another CMOV, whose known bits are
    computed incorrectly.
    
    This patch fixes the issue and adds a test case.
    
    Reviewers: kristof.beyls, jmolloy
    
    Subscribers: llvm-commits, aemerson, srhines, rengolin
    
    Differential Revision: https://reviews.llvm.org/D31265
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298624 91177308-0d34-0410-b5e6-96231b3b80d8
Commits on Mar 19, 2017
  1. Merge pull request #66 from arielb1/shimmir-pr29151

    alexcrichton committed Mar 19, 2017
    Fix inliner funclet unwind memoization
  2. Fix inliner funclet unwind memoization

    JosephTremoulet authored and Ariel Ben-Yehuda committed Sep 4, 2016
    Summary:
    The inliner may need to determine where a given funclet unwinds to,
    and this determination may depend on other funclets throughout the
    funclet tree.  The code that performs this walk in getUnwindDestToken
    memoizes results to avoid redundant computations.  In the case that
    a funclet's unwind destination is derived from its ancestor, there's
    code to walk back down the tree from the ancestor updating the memo
    map of its descendants to record the unwind destination.  This change
    fixes that code to account for the case that some descendant has a
    different unwind destination, which can happen if that unwind dest
    is a descendant of the EHPad being queried and thus didn't determine
    its unwind destination.
    
    Also update test inline-funclets.ll, which is supposed to cover such
    scenarios, to include a case that fails an assertion without this fix
    but passes with it.
    
    Fixes PR29151.
    
    Reviewers: majnemer
    
    Subscribers: llvm-commits
    
    Differential Revision: https://reviews.llvm.org/D24117
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280610 91177308-0d34-0410-b5e6-96231b3b80d8
Commits on Mar 14, 2017
  1. Merge pull request #65 from dhduvall/rust-llvm-2016-10-29

    alexcrichton committed Mar 14, 2017
    Archives require a symbol table on Solaris, even if empty.
  2. Archives require a symbol table on Solaris, even if empty.

    Danek Duvall
    Danek Duvall committed Mar 14, 2017
    On Solaris ld (and some other tools that use the underlying utility
    libraries, such as elfdump) chokes on an archive library that has no
    symbol table. The Solaris tools always create one, even if it's empty.
    
    That bug has been fixed in the latest development line, and can
    probably be backported to a supported release, but it would be nice if
    LLVM's archiver could emit the empty symbol table, too.
    
    Fixed in upstream LLVM in revision 297773.
Commits on Mar 3, 2017
  1. Merge pull request #64 from pftbest/sret

    alexcrichton committed Mar 3, 2017
    [MSP430] Add SRet support to MSP430 target
  2. [MSP430] Add SRet support to MSP430 target

    pftbest committed Mar 2, 2017
    This patch adds support for struct return values to the MSP430
    target backend. It also reverses the order of argument and return
    registers in the calling convention to bring it into closer
    alignment with the published EABI from TI.
    
    Patch by Andrew Wygle (awygle).
    
    Differential Revision: https://reviews.llvm.org/D29069
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296807 91177308-0d34-0410-b5e6-96231b3b80d8
Commits on Feb 25, 2017
  1. Merge pull request #63 from phil-opp/x86-intrcc-nosse-fix

    alexcrichton committed Feb 25, 2017
    x86 interrupt calling convention: only save xmm registers if the target supports SSE
Commits on Feb 24, 2017
  1. x86 interrupt calling convention: only save xmm registers if the targ…

    Andrea Di Biagio authored and phil-opp committed Feb 16, 2017
    …et supports SSE
    
    The existing code always saves the xmm registers for 64-bit targets even if the
    target doesn't support SSE (which is common for kernels). Thus, the compiler
    inserts movaps instructions which lead to CPU exceptions when an interrupt
    handler is invoked.
    
    This commit fixes this bug by returning a register set without xmm registers
    from getCalleeSavedRegs and getCallPreservedMask for such targets.
    
    Patch by Philipp Oppermann.
    
    Differential Revision: https://reviews.llvm.org/D29959
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295347 91177308-0d34-0410-b5e6-96231b3b80d8
Commits on Feb 22, 2017
  1. Merge pull request #62 from binarycrusader/llvm-sparc

    alexcrichton committed Feb 22, 2017
    use -O3 with some optimizations disabled on sparc w/ gcc
  2. use -O3 with some optimizations disabled on sparc w/ gcc

    binarycrusader committed Feb 22, 2017
    A previous commit changed it so that rust's private copy of llvm was
    always built with -O0 on sparc, as initially that was the only option
    that produced a working compiler.  After further investigation, it was
    discovered that applying -fno-delayed-branch and -fno-omit-frame-pointer
    was sufficient to avoid all of the code generation issues initially
    encountered while retaining -O3.  Investigation with gcc upstream
    continues.
Commits on Feb 21, 2017
  1. Merge pull request #61 from binarycrusader/rust-llvm-2016-10-29

    alexcrichton committed Feb 21, 2017
    use -O0 when building release LLVM on sparc
  2. use -O0 when building release LLVM on sparc

    binarycrusader committed Feb 21, 2017
    The bits produced by gcc above -O0 when building rust's private copy of llvm on
    sparc result in either versions of llvm-tblgen that consistently segfault or
    produce otherwise unuseable code.  This does not affect cross-compiles for some
    reason.  Investigation with gcc upstream is in progress.
Commits on Dec 16, 2016
  1. Merge pull request #60 from japaric/gh38406

    alexcrichton committed Dec 16, 2016
    Add relocations for fixups fixup_arm_thumb_{br,bcc}
  2. Add relocations for fixups fixup_arm_thumb_{br,bcc}

    James Molloy authored and japaric committed Sep 5, 2016
    These need to be mapped through to R_ARM_THM_JUMP{11,8} respectively.
    
    Fixes PR30279.
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280651 91177308-0d34-0410-b5e6-96231b3b80d8
Commits on Dec 8, 2016
  1. Merge pull request #59 from pftbest/msp430_backport

    alexcrichton committed Dec 8, 2016
    Backport patches for MSP430 codegen.
  2. Backport rL288857 [CodeGen]

    pftbest committed Dec 8, 2016
    [CodeGen] Fix result type for SMULO/UMULO legalization
    
    On some platforms (like MSP430) the second element of the result
    structure for SMULO/UMULO may have a shorter type than the one
    returned by SetCC. We need to truncate it to the right type, or
    else some incorrect code may be generated later on.
    
    This fixes issue rust-lang/rust#37829
    
    Patch by Vadzim Dambrouski!
    
    Differential Revision: https://reviews.llvm.org/D27154
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288857 91177308-0d34-0410-b5e6-96231b3b80d8
  3. Backport rL286252 [MSP430]

    pftbest committed Dec 8, 2016
    Fix PR27500: on MSP430 the branch destination offset is measured in words, not bytes.
    
    Summary: In addition, the branch instructions will have proper BB destinations, not offsets, like before.
    
    Reviewers: asl
    
    Subscribers: llvm-commits
    
    Differential Revision: https://reviews.llvm.org/D23718
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286252 91177308-0d34-0410-b5e6-96231b3b80d8
    
    # Conflicts:
    #	lib/Target/MSP430/MSP430BranchSelector.cpp
Commits on Dec 1, 2016
  1. Merge pull request #58 from tromey/rust-main-subprogram

    alexcrichton committed Dec 1, 2016
    Add support for DW_AT_main_subprogram
Commits on Nov 29, 2016
  1. Add support for DW_AT_main_subprogram

    tromey committed Nov 28, 2016
    I'd like the Rust compiler to emit DW_AT_main_subprogram in its DWARF
    output, so that debuggers can find the user-provided main entry point.
    See rust-lang/rust#32620
    
    This patch adds support for DW_AT_main_subprogram to LLVM to support
    this effort.
    
    A variant of this patch was accepted by upstream LLVM; there,
    DebugInfoFlags.def already has a flag with value 1<<20, which is why
    this patch uses 1<<21 -- this will avoid the need to change the Rust
    compiler when a new LLVM is imported.
Commits on Nov 27, 2016
  1. Merge pull request #57 from nox/backport-fixup-value

    alexcrichton committed Nov 27, 2016
    Backport rL277331
  2. Backport rL277331

    nox committed Nov 27, 2016
Commits on Oct 28, 2016
  1. Backport r285278 [ARM] Predicate UMAAL selection on hasDSP.

    pftbest committed Oct 28, 2016
    UMAAL is a DSP instruction and it is not available on thumbv7m
    (Cortex-M3) and thumbv6m (Cortex-M0+1) targets. Also fix wrong
    CHECK prefix in longMAC.ll test.
    
    Patch by Vadzim Dambrouski.
    
    Differential Revision: https://reviews.llvm.org/D25890
    
    # Conflicts:
    #	lib/Target/ARM/ARMISelLowering.cpp
    #	test/CodeGen/ARM/longMAC.ll
  2. Add triple for Fuchsia

    petrhosek authored and pftbest committed Jun 30, 2016
    Fuchsia is a new operating system.
    
    Change-Id: Id2cd63b5a98c71be555d64e4c4228b0d273610af
  3. [InstCombine] Transform !range metadata to !nonnull when combining loads

    majnemer authored and pftbest committed Oct 11, 2016
    When combining an integer load with !range metadata that does not include 0 to a pointer load, make sure emit !nonnull metadata on the newly-created pointer load. This prevents the !nonnull metadata from being dropped during a ptrtoint/inttoptr pair.
    
    This fixes PR30597.
    
    Patch by Ariel Ben-Yehuda!
    
    Differential Revision: https://reviews.llvm.org/D25215
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283836 91177308-0d34-0410-b5e6-96231b3b80d8
  4. Teach LiveDebugValues about lexical scopes.

    adrian-prantl authored and pftbest committed Sep 28, 2016
    This addresses PR26055 LiveDebugValues is very slow.
    
    Contrary to the old LiveDebugVariables pass LiveDebugValues currently
    doesn't look at the lexical scopes before inserting a DBG_VALUE
    intrinsic. This means that we often propagate DBG_VALUEs much further
    down than necessary. This is especially noticeable in large C++
    functions with many inlined method calls that all use the same
    "this"-pointer.
    
    For example, in the following code it makes no sense to propagate the
    inlined variable a from the first inlined call to f() into any of the
    subsequent basic blocks, because the variable will always be out of
    scope:
    
    void sink(int a);
    void __attribute((always_inline)) f(int a) { sink(a); }
    void foo(int i) {
       f(i);
       if (i)
         f(i);
       f(i);
    }
    
    This patch reuses the LexicalScopes infrastructure we have for
    LiveDebugVariables to take this into account.
    
    The effect on compile time and memory consumption is quite noticeable:
    I tested a benchmark that is a large C++ source with an enormous
    amount of inlined "this"-pointers that would previously eat >24GiB
    (most of them for DBG_VALUE intrinsics) and whose compile time was
    dominated by LiveDebugValues. With this patch applied the memory
    consumption is 1GiB and 1.7% of the time is spent in LiveDebugValues.
    
    https://reviews.llvm.org/D24994
    Thanks to Daniel Berlin and Keith Walker for reviewing!
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282611 91177308-0d34-0410-b5e6-96231b3b80d8
  5. Propagate DBG_VALUE entries when there are unvisited predecessors

    Keith Walker authored and pftbest committed Sep 27, 2016
    Variables are sometimes missing their debug location information in
    blocks in which the variables should be available. This would occur
    when one or more predecessor blocks had not yet been visited by the
    routine which propagated the information from predecessor blocks.
    
    This is addressed by only considering predecessor blocks which have
    already been visited.
    
    The solution to this problem was suggested by Daniel Berlin on the
    LLVM developer mailing list.
    
    Differential Revision: https://reviews.llvm.org/D24927
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282506 91177308-0d34-0410-b5e6-96231b3b80d8
  6. [SimplifyCFG] Correctly test for unconditional branches in GetCaseRes…

    majnemer authored and pftbest committed Oct 7, 2016
    …ults
    
    GetCaseResults assumed that a terminator with one successor was an
    unconditional branch.  This is not necessarily the case, it could be a
    cleanupret.
    
    Strengthen the check by querying whether or not the terminator is
    exceptional.
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283517 91177308-0d34-0410-b5e6-96231b3b80d8
  7. Import of fastcomp commit 4105790

    brson authored and pftbest committed Aug 31, 2016
    This is a minimal import of the emscripten "fastcomp" LLVM patchset.
    All it contains is the target definitions necessary to create a
    TargetMachine with the correct data layout. With this rustc can
    emit LLVM IR that emcc will run through the PNaCl lagalizer and
    the JS backend to generate asm.js.
  8. Backport rL281650

    nagisa authored and pftbest committed Sep 15, 2016
  9. Run GVN again after InstCombine.

    eddyb authored and pftbest committed Aug 29, 2016
Older
You can’t perform that action at this time.