Branch: rust-llvm-2017…
-
Merge pull request #88 from alexcrichton/tmp
alexcrichton committedJun 26, 2017 Add knowledge of __rust_{alloc,realloc,dealloc} -
Add knowledge of __rust_{alloc,realloc,dealloc}
alexcrichton committedJun 17, 2017
-
Merge pull request #87 from pftbest/msp430_layout
alexcrichton committedJun 25, 2017 [MSP430] Merge bug fixes from llvm upstream.
-
[MSP430] Fix data layout string.
pftbest committedJun 23, 2017 Summary: Without this patch some types have incorrect size and/or alignment according to the MSP430 EABI. Reviewers: asl, awygle Reviewed By: asl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D34561 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306159 91177308-0d34-0410-b5e6-96231b3b80d8
-
[MSP430] Fix PR33050: Don't use ADD16ri to lower FrameIndex.
pftbest committedMay 24, 2017 Use ADDframe pseudo instruction instead. This will fix machine verifier error, and will help to fix PR32146. Differential Revision: https://reviews.llvm.org/D33452 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303758 91177308-0d34-0410-b5e6-96231b3b80d8
-
[MSP430] Add subtarget features for hardware multiplier.
pftbest committedMay 23, 2017 Also add more processors to make -mcpu option behave similar to gcc. Differential Revision: https://reviews.llvm.org/D33335 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303695 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #86 from alexcrichton/probestack
alexcrichton committedJun 22, 2017 Add x86 probestack support
-
[X86] Add support for "probe-stack" attribute
This commit adds prologue code emission for stack probe function calls. Reviewed By: majnemer Differential Revision: https://reviews.llvm.org/D34387 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306010 91177308-0d34-0410-b5e6-96231b3b80d8
-
This attribute is used to ensure the guard page is triggered on stack overflow. Stack frames larger than the guard page size will generate a call to __probestack to touch each page so the guard page won't be skipped. Reviewed By: majnemer Differential Revision: https://reviews.llvm.org/D34386 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305939 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #85 from parched/umlo
alexcrichton committedJun 20, 2017 DAG: correctly legalize UMULO.
-
DAG: correctly legalize UMULO.
We were incorrectly sign extending into the high word (as you would for SMULO) when legalizing UMULO in terms of a wider full multiplication. Patch by James Duley. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305800 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #84 from arielb1/unwind-stack
alexcrichton committedJun 19, 2017 StackColoring: smarter check for slot overlap
-
StackColoring: smarter check for slot overlap
Summary: The old check for slot overlap treated 2 slots `S` and `T` as overlapping if there existed a CFG node in which both of the slots could possibly be active. That is overly conservative and caused stack blowups in Rust programs. Instead, check whether there is a single CFG node in which both of the slots are possibly active *together*. Fixes PR32488. Patch by Ariel Ben-Yehuda <ariel.byd@gmail.com> Reviewers: thanm, nagisa, llvm-commits, efriedma, rnk Reviewed By: thanm Subscribers: dotdash Differential Revision: https://reviews.llvm.org/D31583 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305193 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #83 from arielb1/bad-arm-2
alexcrichton committedJun 18, 2017 backport fixes to LLVM 4.0 ARM codegen bugs
-
Add missing check in IfConversion/canFallThroughTo
Summary: When trying to figure out if MBB could fallthrough to ToMBB (possibly by falling through a bunch of other MBBs) we didn't actually check if there was fallthrough between the last two blocks in the chain. Reviewers: kparzysz, iteratee, MatzeB Reviewed By: kparzysz, iteratee Subscribers: javed.absar, llvm-commits Differential Revision: https://reviews.llvm.org/D32996 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302650 91177308-0d34-0410-b5e6-96231b3b80d8
-
Fix corner cases for compressed jump tables
Summary: When synthesized TBB/TBH is expanded, we need to avoid the case of: BaseReg is redefined after the load of branching target. E.g.: %R2 = tLEApcrelJT <jt#1> %R1 = tLDRr %R1, %R2 ==> %R2 = tLEApcrelJT <jt#1> %R2 = tLDRspi %SP, 12 %R2 = tLDRspi %SP, 12 tBR_JTr %R1 tTBB_JT %R2, %R1 ` Reviewers: jmolloy Reviewed By: jmolloy Subscribers: llvm-commits, rengolin Differential Revision: https://reviews.llvm.org/D32250 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300870 91177308-0d34-0410-b5e6-96231b3b80d8 -
The pass tries to fix a spill of LR that turns out to be unnecessary. So it removes the tPOP but forgets to remove tPUSH. This causes the stack be misaligned upon returning the function. Thus, remove the tPUSH as well in this case. Differential Revision: https://reviews.llvm.org/D30207 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295816 91177308-0d34-0410-b5e6-96231b3b80d8
-
TBB generation: spot redefinitions of index register
We match a sequence of 3-4 instructions into a tTBB pseudo. One of our checks is that a particular register in that sequence is killed (so it can be clobbered by the pseudo). We weren't noticing if an errant MOV or other instruction had infiltrated the sequence we were walking. If it had, and it defined the register we've already identified as killed, it makes it live across the tBR_JT and thus unclobberable. Notice this case and bail out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294949 91177308-0d34-0410-b5e6-96231b3b80d8
-
ARM: avoid clobbering register in v6 jump-table expansion.
If we got unlucky with register allocation and actual constpool placement, we could end up producing a tTBB_JT with an index that's already been clobbered. Technically, we might be able to fix this situation up with a MOV, but I think the constant islands pass is complex enough without having to deal with more weird edge-cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297871 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #82 from nagisa/remove-zeroed-alloc-too
alexcrichton committedJun 14, 2017 Remove alloc_zeroed optimisation
-
Remove alloc_zeroed optimisation
nagisa committedJun 14, 2017 It causes some weird UB-ey interaction in rustc_data_structures
-
Merge pull request #81 from nagisa/unteach-realloc-inplace
alexcrichton committedJun 8, 2017 Remove reallocate_inplace from memory analysis
-
Remove reallocate_inplace from memory analysis
nagisa committedJun 8, 2017 It does not return a "new" pointer and therefore it is unclear if it is not entirely clear whether it is ReallocLike enough. Removing for now just to be safe.
-
Merge pull request #80 from nagisa/builtins
alexcrichton committedJun 3, 2017 Remind LLVM about alloc function names in Rust
-
Remind LLVM about alloc function names in Rust
nagisa committedJun 3, 2017 Port and expansion of 4daef48
-
Merge pull request #79 from parched/rust-smulo
alexcrichton committedMay 19, 2017 Fix signed multiplication with overflow
-
Fix signed multiplication with overflow fallback.
For targets that don't have ISD::MULHS or ISD::SMUL_LOHI for the type and the double width type is illegal, then the two operands are sign extended to twice their size then multiplied to check for overflow. The extended upper halves were mismatched causing an incorrect result. This fixes the mismatch. A test was added for ARM V6-M where the bug was detected. Patch by James Duley. Differential Revision: https://reviews.llvm.org/D31807 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301404 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #78 from pftbest/msp430_libcalls
alexcrichton committedMay 13, 2017 [MSP430] Generate EABI-compliant libcalls
-
[MSP430] Generate EABI-compliant libcalls
pftbest committedMay 11, 2017 Updates the MSP430 target to generate EABI-compatible libcall names. As a byproduct, adjusts the hardware multiplier options available in the MSP430 target, adds support for promotion of the ISD::MUL operation for 8-bit integers, and correctly marks R11 as used by call instructions. Patch by Andrew Wygle. Differential Revision: https://reviews.llvm.org/D32676 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302820 91177308-0d34-0410-b5e6-96231b3b80d8 # Conflicts: # include/llvm/IR/CallingConv.h
-
Merge pull request #77 from TimNN/win64-backports
alexcrichton committedMay 4, 2017 Backport two Win64 fixes
-
Mark functions as not having CFI once we finalize an x86 stack frame
We'll set it back to true in emitPrologue if it gets called. It doesn't get called for naked functions. Fixes PR32912 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302092 91177308-0d34-0410-b5e6-96231b3b80d8
-
[WinEH] Adjust decision to emit SEH moves for leaf functions
Move the check for "MF->hasWinCFI()" up into the calculation of the shouldEmitMoves boolean, rather than putting it in the early returning if. This ensures that endFunction doesn't try to emit .seh_* directives for leaf functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298276 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #76 from whitequark/constant-island-crash
alexcrichton committedMay 2, 2017 Cherry-pick r295964 and closely related part of r282387
-
Fix assertion failure in ARMConstantIslandPass.
The ARMConstantIslandPass didn't have support for handling accesses to constant island objects through ARM::t2LDRBpci instructions. This adds support for that. This fixes PR31997. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295964 91177308-0d34-0410-b5e6-96231b3b80d8
-
Merge pull request #75 from pftbest/fix_msp430
alexcrichton committedApr 26, 2017 [MSP430] Fix PR32769: Select8 and Select16 need to have SR in Uses.