Rafael Espindola [Fri, 18 Sep 2015 15:17:53 +0000 (15:17 +0000)]
Remove temporary file on signal.
Without this lld leaves temporary files behind when it crashes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247994
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 18 Sep 2015 15:08:24 +0000 (15:08 +0000)]
Simplify SmallBitVector::applyMask by consolidating common code for 32- and 64-bit builds
and assert when mask is too large to apply in the small case,
previously the extra words were silently ignored.
clang-format the entire function to match current code standards.
This is a rewrite of r247972 which was reverted in r247983 due to
warning and possible UB on 32-bits hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247993
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 18 Sep 2015 14:20:54 +0000 (14:20 +0000)]
[mips][microMIPS] Fix an invalid read for lwm32 and reserved reglist values.
Summary:
Some values of 'reglist' are reserved and cause the disassembler to read past
the end of the Regs array. Treat lwm32's containing reserved values as invalid
instructions.
Reviewers: zoran.jovanovic
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12959
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247990
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 18 Sep 2015 14:15:19 +0000 (14:15 +0000)]
[AArch64] Reorder cases to improve readability. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247989
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 18 Sep 2015 14:13:18 +0000 (14:13 +0000)]
[AArch64] Remove some redundant cases. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247988
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Fri, 18 Sep 2015 13:31:42 +0000 (13:31 +0000)]
Silencing a -Wsign-compare warning; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247986
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 18 Sep 2015 13:01:48 +0000 (13:01 +0000)]
[LazyValueInfo] Report nonnull range for nonnull pointers
Currently LazyValueInfo will report only alloca's as having nonnull range.
For loads with !nonnull metadata it will bailout with no additional information.
Same is true for calls returning nonnull pointers.
This change extends LazyValueInfo to handle additional nonnull instructions.
Differential Revision: http://reviews.llvm.org/D12932
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247985
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Fri, 18 Sep 2015 12:33:31 +0000 (12:33 +0000)]
Support align attribute for return values
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D12844
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247984
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Fri, 18 Sep 2015 12:18:41 +0000 (12:18 +0000)]
Reverting r247972 (and subordinate commit r247972) as the 32-bit left-shift is undefined behavior on implementations where uinptr_t is 32-bits. One such platform is Windows, MSVC, x86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247983
91177308-0d34-0410-b5e6-
96231b3b80d8
Artur Pilipenko [Fri, 18 Sep 2015 12:07:10 +0000 (12:07 +0000)]
Nit cleanup in LangRef about dereferenceable metadata
Reviewed By: vsk
Differential Revision: http://reviews.llvm.org/D12847
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247982
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kruse [Fri, 18 Sep 2015 10:56:30 +0000 (10:56 +0000)]
[Support] Reapply r245289 "Always wait for GraphViz before opening the viewer"
The change was accidentally undone by r245290.
Original log message:
When calling DisplayGraph and a PS viewer is chosen, two programs are executed: The GraphViz generator and the PostScript viewer. Always wait for the generator to finish to ensure that the .ps file is written before opening the viewer for that file. DisplayGraph's wait parameter refers to whether to wait until the user closes the viewer.
This happened on Windows and if none of the options to open the .dot file directly applies, also on Linux.
Differential Revision: http://reviews.llvm.org/D11876
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247980
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 18 Sep 2015 10:47:45 +0000 (10:47 +0000)]
[llvm-mc-fuzzer] Document llvm-mc-fuzzer in LibFuzzer.rst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247979
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 18 Sep 2015 08:18:07 +0000 (08:18 +0000)]
[WinEH] Moved funclet pads should be in relative order
We shifted the MachineBasicBlocks to the end of the MachineFunction in
DFS order. This will not ensure that MachineBasicBlocks which fell
through to one another will remain contiguous. Instead, implement
a stable sort algorithm for iplist.
This partially reverts commit r214150.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247978
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 18 Sep 2015 07:24:35 +0000 (07:24 +0000)]
Fix BitVectorTest on 32-bit hosts after r247972.
We can't apply two words of 32-bit mask in the small case
where the internal storage is just one 32-bit word.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247974
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Fri, 18 Sep 2015 06:35:12 +0000 (06:35 +0000)]
Simplify SmallBitVector::applyMask by consolidating common code for 32-bit and 64-bit builds.
Extend mask value to 64 bits before taking its complement and assert when mask is
too large to apply in the small case (previously the extra words were silently ignored).
http://reviews.llvm.org/D11890
Patch by James Touton!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247972
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 18 Sep 2015 06:16:49 +0000 (06:16 +0000)]
Remove trailing whitespace from the old Orc Kaleidoscope examples.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247971
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 18 Sep 2015 05:36:13 +0000 (05:36 +0000)]
Whitespace. Indent with spaces instead of a tab.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247969
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Thu, 17 Sep 2015 23:21:34 +0000 (23:21 +0000)]
[ShrinkWrap] Refactor the handling of infinite loop in the analysis.
- Strenghten the logic to be sure we hoist the restore point out of the current
loop. (The fixes a bug with infinite loop, added as part of the patch.)
- Walk over the exit blocks of the current loop to conver to the desired restore
point in one iteration of the update loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247958
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Thu, 17 Sep 2015 22:29:58 +0000 (22:29 +0000)]
[llvm-readobj] Fix another "time of check to time of use bug".
It seems there's more copy-paste between tools than needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247954
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 17 Sep 2015 22:18:59 +0000 (22:18 +0000)]
[opaque pointer types] Add an explicit pointee type to alias records in the IR
Since aliases actually use and verify their explicit type already, no
further invalid testing is required here. The
invalid.test:ALIAS-TYPE-MISMATCH case catches errors due to emitting a
non-pointee type in the new format or a non-pointer type in the old
format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247952
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexei Starovoitov [Thu, 17 Sep 2015 22:18:08 +0000 (22:18 +0000)]
[bpf] expand indirect branches
BPF instruction set doesn't have indirect branches. Expand them.
Reported by John Fastabend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247951
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 17 Sep 2015 21:12:24 +0000 (21:12 +0000)]
Revert "(HEAD -> master, origin/master, origin/HEAD) RegisterPressure: Move LiveInRegs/LiveOutRegs from RegisterPressure to PressureTracker"
This reverts commit r247943.
Accidental commit, code review was not finished yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247945
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 17 Sep 2015 21:11:12 +0000 (21:11 +0000)]
[WinEH] Fix tests broken by funclet-layout
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247944
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 17 Sep 2015 21:10:06 +0000 (21:10 +0000)]
RegisterPressure: Move LiveInRegs/LiveOutRegs from RegisterPressure to PressureTracker
Differential Revision: http://reviews.llvm.org/D12814
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247943
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 17 Sep 2015 21:09:59 +0000 (21:09 +0000)]
MachineScheduler: Provide an option for node hiding cutoff and disable it by default
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247942
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Thu, 17 Sep 2015 20:54:26 +0000 (20:54 +0000)]
[SPARC] Add mulscc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247940
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 17 Sep 2015 20:51:50 +0000 (20:51 +0000)]
fix typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247938
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 17 Sep 2015 20:45:18 +0000 (20:45 +0000)]
[WinEH] Add a funclet layout pass
Windows EH funclets need to be contiguous. The FuncletLayout pass will
ensure that the funclets are together and begin with a funclet entry MBB.
Differential Revision: http://reviews.llvm.org/D12943
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247937
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 17 Sep 2015 20:43:47 +0000 (20:43 +0000)]
[WinEH] Make funclet return instrs pseudo instrs
This makes catchret look more like a branch, and less like a weird use
of BlockAddress. It also lets us get away from
llvm.x86.seh.restoreframe, which relies on the old parentfpoffset label
arithmetic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247936
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Thu, 17 Sep 2015 20:34:22 +0000 (20:34 +0000)]
gvn small fix
http://reviews.llvm.org/D12928
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247935
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 17 Sep 2015 20:32:45 +0000 (20:32 +0000)]
[InstCombine] Added vector demanded bits support for SSE4A EXTRQ/INSERTQ instructions
The SSE4A instructions EXTRQ/INSERTQ only use the lower 64-bits (or less) for many of their input vector operands and all of them have undefined upper 64-bits results.
Differential Revision: http://reviews.llvm.org/D12680
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247934
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Thu, 17 Sep 2015 20:25:07 +0000 (20:25 +0000)]
Added MD_invariant_group to LLVMContext
http://reviews.llvm.org/D12926
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247931
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 17 Sep 2015 20:12:00 +0000 (20:12 +0000)]
Restore "Function bitcode index in Value Symbol Table and lazy reading support"
This reverts commit r247898 (which reverted r247894).
Patch fixed to address two issues exposed by buildbots:
- unused variable warning in NDEBUG mode
- std::initializer_list lifetime issue causing test failures
Original Summary:
Support for including the function bitcode indices in the Value Symbol
Table. This requires writing the VST after the function blocks, which in
turn requires a new VST forward declaration record encoding the offset of
the full VST (which is backpatched to contain the offset after the VST
is written).
This patch also enables the lazy function reader to use the new function
indices out of the VST. This support will be used by ThinLTO as well, which
will be in a follow on patch. Backwards compatibility with older bitcode
files is maintained.
A new test is also included.
The bitcode format (used for the lazy reader as well as the upcoming
ThinLTO patches) came out of discussions with Duncan and others and is
described here:
https://drive.google.com/file/d/0B036uwnWM6RWdnBLakxmeDdOeXc/view
Reviewers: dexonsmith, davidxl, joker.eph
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12536
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247927
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Thu, 17 Sep 2015 19:05:48 +0000 (19:05 +0000)]
Temporarily fix gcov failures in big-endian hosts.
This test uses a gcov file generated in a little-endian host. The gcov
reader does not allow different endianness, so the test fails on big
endian hosts.
XFAILing for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247920
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 17 Sep 2015 19:04:09 +0000 (19:04 +0000)]
[SCEV] Use auto instead of full iterator type; NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247919
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Thu, 17 Sep 2015 19:04:03 +0000 (19:04 +0000)]
[SCEV] Don't repeat method/field names in comment in header; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247918
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 17 Sep 2015 17:21:45 +0000 (17:21 +0000)]
Fix the test case I just committed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247905
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 17 Sep 2015 17:19:40 +0000 (17:19 +0000)]
[WinEH] Add and use hasEHPadSuccessor instead of getLandingPadSuccessor
getLandingPadSuccessor assumes that each invoke can have at most one EH
pad successor, but WinEH invokes can have more than one. Two out of
three callers of getLandingPadSuccessor don't use the returned
landingpad, so we can make them use this simple predicate instead.
Eventually we'll have to circle back and fix SplitKit.cpp so that
register allocation works. Baby steps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247904
91177308-0d34-0410-b5e6-
96231b3b80d8
Zia Ansari [Thu, 17 Sep 2015 16:51:27 +0000 (16:51 +0000)]
Test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247901
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 17 Sep 2015 16:19:10 +0000 (16:19 +0000)]
Revert "Function bitcode index in Value Symbol Table and lazy reading support"
Temporarily revert to fix some buildbot issues. One is a minor issue
with a variable unused in NDEBUG mode. More concerning are some test
failures on win7 that I need to dig into.
This reverts commit
4e66a74543459832cfd571db42b4543580ae1d1d.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247898
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Thu, 17 Sep 2015 16:08:39 +0000 (16:08 +0000)]
[mips] Add assembler support for the .cprestore directive.
Summary:
This assembler directive is used in O32 PIC to restore the current function's $gp after executing JAL's. The $gp is first stored on the stack at a user-specified offset.
It has the following format: ".cprestore 8" (where 8 is the offset).
This fixes llvm.org/PR20967.
Patch by Toma Tabacu.
Reviewers: seanbruno, tomatabacu
Subscribers: brooks, seanbruno, emaste, llvm-commits
Differential Revision: http://reviews.llvm.org/D6267
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247897
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Thu, 17 Sep 2015 15:59:52 +0000 (15:59 +0000)]
Fix doc build: sublists require a blank line before/after.
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247896
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 17 Sep 2015 15:52:30 +0000 (15:52 +0000)]
Function bitcode index in Value Symbol Table and lazy reading support
Summary:
Support for including the function bitcode indices in the Value Symbol
Table. This requires writing the VST after the function blocks, which in
turn requires a new VST forward declaration record encoding the offset of
the full VST (which is backpatched to contain the offset after the VST
is written).
This patch also enables the lazy function reader to use the new function
indices out of the VST. This support will be used by ThinLTO as well, which
will be in a follow on patch. Backwards compatibility with older bitcode
files is maintained.
A new test is also included.
The bitcode format (used for the lazy reader as well as the upcoming
ThinLTO patches) came out of discussions with Duncan and others and is
described here:
https://drive.google.com/file/d/0B036uwnWM6RWdnBLakxmeDdOeXc/view
Reviewers: dexonsmith, davidxl, joker.eph
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12536
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247894
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Thu, 17 Sep 2015 14:37:35 +0000 (14:37 +0000)]
Refactor string encoding checks in BitcodeWriter (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247891
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Thu, 17 Sep 2015 13:10:27 +0000 (13:10 +0000)]
Typos. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247884
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Thu, 17 Sep 2015 10:14:09 +0000 (10:14 +0000)]
[mips][microMIPS] Implement TEQ, TGE, TGEU, TLT, TLTU and TNE instructions
Differential Revision: http://reviews.llvm.org/D9658
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247880
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Thu, 17 Sep 2015 06:53:12 +0000 (06:53 +0000)]
AVX-512: shufflevector for i1 vectors <2 x i1> .. <64 x i1>
AVX-512 does not provide an instruction that shuffles mask register. So I do the following way:
mask-2-simd , shuffle simd , simd-2-mask
Differential Revision: http://reviews.llvm.org/D12727
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247876
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Thu, 17 Sep 2015 00:17:24 +0000 (00:17 +0000)]
GCC AutoFDO profile reader - Initial support.
This adds enough machinery to support reading simple GCC AutoFDO
profiles. It now supports reading flat profiles (no function calls).
Subsequent patches will add support for:
- Inlined calls (in particular, the inline call stack is not traversed
to accumulate samples).
- Working sets and modules. These are used mostly for GCC's LIPO
optimizations, so they're not needed in LLVM atm. I'm not sure that
we will ever need them. For now, I've if0'd around the calls.
The patch also adds support in GCOV.h for gcov version V704 (generated
by GCC's profile conversion tool).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247874
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Thu, 17 Sep 2015 00:17:21 +0000 (00:17 +0000)]
Check for errors after reading a sample profile in llvm-profdata.
After reading the profile, check if the reader returned any errors
before showing the profile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247873
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 16 Sep 2015 23:59:57 +0000 (23:59 +0000)]
Try to fix WebAssembly build after r247864
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247870
91177308-0d34-0410-b5e6-
96231b3b80d8
Naomi Musgrave [Wed, 16 Sep 2015 23:46:40 +0000 (23:46 +0000)]
ScalarEvolution: added tmp to avoid use-after-dtor in for loop.
Summary:
For loop destroyed current instance before invoking next.
Temporary variable added to prevent use-after-dtor when invoke
destructor on current instance.
Reviewers: eugenis
Subscribers: llvm-commits, sanjoy
Differential Revision: http://reviews.llvm.org/D12912
Rename temp var.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247867
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 16 Sep 2015 23:38:18 +0000 (23:38 +0000)]
Make sure we're negating the assembler predicate - no testcase
because it isn't being used on anything via the assembler right
now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247866
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 16 Sep 2015 23:38:16 +0000 (23:38 +0000)]
Use the cached TargetInstrInfo instead of looking it up again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247865
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 16 Sep 2015 23:38:13 +0000 (23:38 +0000)]
constify the Function parameter to the TTI creation callback and
propagate to all callers/users/etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247864
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 16 Sep 2015 22:14:46 +0000 (22:14 +0000)]
[WinEH] Rip out the landingpad-based C++ EH state numbering code
It never really worked, and the new code is working better every day.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247860
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Wed, 16 Sep 2015 20:49:59 +0000 (20:49 +0000)]
[CMake] More refactoring of symlink creation.
This refactoring is to enable clang to re-use this code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247850
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 16 Sep 2015 20:42:16 +0000 (20:42 +0000)]
[WinEHPrepare] Turn terminatepad into a cleanuppad + call + cleanupret
The MSVC doesn't really support exception specifications so let's just
turn these into cleanuppads. Later, we might use terminatepad to more
efficiently encode the "noexcept"-ness of a function body.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247848
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Wed, 16 Sep 2015 20:41:43 +0000 (20:41 +0000)]
Allow BackpatchWord to be called for non-32-bit aligned words, and
from outside the BitstreamWriter.
Split out of patch D12536 (Function bitcode index in Value Symbol Table
and lazy reading support), which will use it to patch in the VST offset.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247847
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 16 Sep 2015 20:41:29 +0000 (20:41 +0000)]
[InstCombine] Optimize icmp slt signum(x), 1 --> icmp slt x, 1
Summary:
`signum(x)` is sometimes implemented as `(x >> 63) | (-x >>> 63)` (for
an `i64` `x`). This change adds a matcher for that pattern, and an
instcombine rule to optimize `signum(x) s< 1`.
Later, we can also consider optimizing:
icmp slt signum(x), 0 --> icmp slt x, 0
icmp sle signum(x), 1 --> true
etc.
Reviewers: majnemer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D12703
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247846
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 16 Sep 2015 20:16:27 +0000 (20:16 +0000)]
[WinEH] Pull Adjectives and CatchObj out of the catchpad arg list
Clang now passes the adjectives as an argument to catchpad.
Getting the CatchObj working is simply a matter of threading another
static alloca through codegen, first as an alloca, then as a frame
index, and finally as a frame offset.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247844
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 16 Sep 2015 18:40:37 +0000 (18:40 +0000)]
[WinEHPrepare] Provide a cloning mode which doesn't demote
We are experimenting with a new approach to saving and restoring SSA
values used across funclets: let the register allocator do the dirty
work for us.
However, this means that we need to be able to clone commoned blocks
without relying on demotion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247835
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 16 Sep 2015 18:40:24 +0000 (18:40 +0000)]
[WinEHPrepare] Refactor explicit EH preparation
Split the preparation machinery into several functions, we will want to
selectively enable/disable different parts of it for an alternative
mechanism for dealing with cross-funclet uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247834
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Wed, 16 Sep 2015 18:06:45 +0000 (18:06 +0000)]
Disable the second verification run when performing LTO through
gold in NDEBUG mode.
Follow on patch for r247729 - LTO: Disable extra verify runs in release
builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247824
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 16 Sep 2015 17:19:44 +0000 (17:19 +0000)]
[WinEH] Skip state numbering when no EH pads are present
Otherwise we'd try to emit the thunk that passes the LSDA to
__CxxFrameHandler3. We don't emit the LSDA if there were no landingpads,
so we'd end up with an assembler error when trying to write the COFF
object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247820
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 16 Sep 2015 17:03:12 +0000 (17:03 +0000)]
Improve "default_triple" specification: make it at the directory level for test/tools/llvm-mc
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247819
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Wed, 16 Sep 2015 16:51:30 +0000 (16:51 +0000)]
[WebAssembly] Check in an initial CFG Stackifier pass
This pass implements a simple algorithm for conversion from CFG to
wasm's structured control flow. It doesn't yet handle multiple-entry
loops; that will be added in a future patch.
It also adds initial support for switch statements.
Differential Revision: http://reviews.llvm.org/D12735
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247818
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 16 Sep 2015 16:31:21 +0000 (16:31 +0000)]
propagate fast-math-flags on DAG nodes
After D10403, we had FMF in the DAG but disabled by default. Nick reported no crashing errors after some stress testing,
so I enabled them at r243687. However, Escha soon notified us of a bug not covered by any in-tree regression tests:
if we don't propagate the flags, we may fail to CSE DAG nodes because differing FMF causes them to not match. There is
one test case in this patch to prove that point.
This patch hopes to fix or leave a 'TODO' for all of the in-tree places where we create nodes that are FMF-capable. I
did this by putting an assert in SelectionDAG.getNode() to find any FMF-capable node that was being created without FMF
( D11807 ). I then ran all regression tests and test-suite and confirmed that everything passes.
This patch exposes remaining work to get DAG FMF to be fully functional: (1) add the flags to non-binary nodes such as
FCMP, FMA and FNEG; (2) add the flags to intrinsics; (3) use the flags as conditions for transforms rather than the
current global settings.
Differential Revision: http://reviews.llvm.org/D12095
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247815
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 16 Sep 2015 16:26:29 +0000 (16:26 +0000)]
Add assembler fatal error for undefined assembler labels in COFF writer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247814
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 16 Sep 2015 16:21:08 +0000 (16:21 +0000)]
don't repeat function names in comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247813
91177308-0d34-0410-b5e6-
96231b3b80d8
Adhemerval Zanella [Wed, 16 Sep 2015 15:10:27 +0000 (15:10 +0000)]
[sanitizer] Add MSan support for AArch64
This patch adds support for msan on aarch64-linux for both 39 and
42-bit VMA. The support is enabled by defining the
SANITIZER_AARCH64_VMA compiler flag to either 39 or 42 at build time
for both clang/llvm and compiler-rt. The default VMA is 39 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247807
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Wed, 16 Sep 2015 14:41:36 +0000 (14:41 +0000)]
[SPARC] Both GNU and Solaris as support eq as condition code for integer ops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247804
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Wed, 16 Sep 2015 13:30:54 +0000 (13:30 +0000)]
[SPARC] Recognize st/stx operations with %fsr argument too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247794
91177308-0d34-0410-b5e6-
96231b3b80d8
David L Kreitzer [Wed, 16 Sep 2015 13:27:30 +0000 (13:27 +0000)]
Test commit: Fixed a few typos in the comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247793
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 16 Sep 2015 13:11:31 +0000 (13:11 +0000)]
[ARM] Register ARMPreAllocLoadStoreOpt pass with LLVM pass manager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247791
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 16 Sep 2015 11:49:49 +0000 (11:49 +0000)]
llvm-mc-fuzzer: A fuzzing tool for the MC layer.
Summary:
Only the disassembler is supported in this patch but it has already found a few
issues in the Mips disassembler (mostly invalid instructions being successfully
disassembled).
Reviewers: kcc
Subscribers: russell.gallop, silvas, kcc, llvm-commits
Differential Revision: http://reviews.llvm.org/D12723
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247786
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 16 Sep 2015 11:27:20 +0000 (11:27 +0000)]
[X86] Do not generate 64-bit pops of 32-bit GPRs.
When trying emit a stack adjustments using pops, frame lowering selects an
arbitrary free GPR. It should always select one from an appropriate class...
This fixes PR24649.
Patch by: amjad.aboud@intel.com
Differential Revision: http://reviews.llvm.org/D12609
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247785
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 16 Sep 2015 11:18:25 +0000 (11:18 +0000)]
[X86] Fix emitEpilogue() to make less assumptions about pops
This is the mirror image of r242395.
When X86FrameLowering::emitEpilogue() looks for where to insert the %esp addition that
deallocates stack space used for local allocations, it assumes that any sequence of pop
instructions from function exit backwards consists purely of restoring callee-save registers.
This may be false, since from some point backward, the pops may be clean-up of stack space
allocated for arguments to a call.
Patch by: amjad.aboud@intel.com
Differential Revision: http://reviews.llvm.org/D12688
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247784
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Wed, 16 Sep 2015 09:14:35 +0000 (09:14 +0000)]
[mips][microMIPS] Implement PREFX, LHUE, LBE, LBUE, LHE, LWE, SBE, SHE and SWE instructions
Differential Revision: http://reviews.llvm.org/D9189
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247780
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 16 Sep 2015 06:36:03 +0000 (06:36 +0000)]
Whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247779
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 16 Sep 2015 06:22:55 +0000 (06:22 +0000)]
Copy back Inputs/gmlt.ll. Also DebugInfo/X86/gmlt.test uses it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247777
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 16 Sep 2015 06:04:31 +0000 (06:04 +0000)]
Fix test gmlt.test by moving its Inputs where expected.
I couldn't see the failure as the test is XFAIL'ed on Darwin.
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247776
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 16 Sep 2015 05:34:32 +0000 (05:34 +0000)]
Make the default triple optional by allowing an empty string
When building LLVM as a (potentially dynamic) library that can be linked against
by multiple compilers, the default triple is not really meaningful.
We allow to explicitely set it to an empty string when configuring LLVM.
In this case, said "target independent" tests in the test suite that are using
the default triple are disabled by matching the newly available feature
"default_triple".
Reviewers: probinson, echristo
Differential Revision: http://reviews.llvm.org/D12660
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247775
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Wed, 16 Sep 2015 05:27:46 +0000 (05:27 +0000)]
[NaryReassociate] Improve test CHECK
Add `CHECK` directives for the function calls.
Differential Revision: http://reviews.llvm.org/D12885
Patch by: Volkan Keles <vkeles@apple.com>
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247774
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 16 Sep 2015 03:52:35 +0000 (03:52 +0000)]
Use range-based for loops. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247772
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 16 Sep 2015 03:52:32 +0000 (03:52 +0000)]
Fix a spelling error in the description of a statistic. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247771
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Wed, 16 Sep 2015 03:25:09 +0000 (03:25 +0000)]
[Unroll] Fix a bug in UnrolledInstAnalyzer::visitLoad.
We only checked that a global is initialized with constants, which is
incorrect. We should be checking that GlobalVariable *is* a constant,
not just initialized with it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247769
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 16 Sep 2015 00:10:43 +0000 (00:10 +0000)]
llvm/CodeGen/CommandFlags.h: Prune doubleslash in #include.
While packaging 3.7 for Fedora, the debug info splitting
process fell over this, so fix it upstream seems like a good plan.
This should be put in the 3.7 branch as well.
Noticed by Dave Airlie <airlied@redhat.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247757
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 15 Sep 2015 23:45:39 +0000 (23:45 +0000)]
[IndVars] Fix PR24783.
In `IndVarSimplify::ExpandSCEVIfNeeded`,
`SCEVExpander::findExistingExpansion` may return an `llvm::Value` that
differs in type from the SCEV it was asked to find an expansion for (but
computes the same value). In such cases, we fall back on
`expandCodeFor`; and rely on LLVM to CSE the two equivalent
expressions (different only by a no-op cast) into a single computation.
I tried a few other approaches to fixing PR24783, all of which turned
out to be more complex than this current version:
1. Move the `ExpandSCEVIfNeeded` logic into `expandCodeFor`. This got
problematic because currently we do not pass in the `Loop *` into
`expandCodeFor`. Changing the interface to do this is a more
invasive change, and really does not make much semantic sense unless
the SCEV being passed in is an add recurrence.
There is also the problem of `expandCodeFor` being used in places
other than `indvars` -- there may be performance / correctness
issues elsewhere if `expandCodeFor` is moved from always generating
IR from scratch to cache-like model.
2. Have `findExistingExpansion` only return expression with the correct
type. This would make `isHighCostExpansionHelper` and thus
`isHighCostExpansion` more conservative than necessary.
3. Insert casts on the value returned by `findExistingExpansion` if
needed using `InsertNoopCastOfTo`. This is complicated because
`InsertNoopCastOfTo` depends on internal state of its
`SCEVExpander` (specifically `Builder.GetInserPoint()`), and this
may not be set up when `ExpandSCEVIfNeeded` is called.
4. Manually insert casts on the value returned by
`findExistingExpansion` if needed using `InsertNoopCastOfTo` via
`CastInst::Create`. This is probably workable, but figuring out the
location where the cast instruction needs to be inserted has enough
edge cases (arguments, constants, invokes, LCSSA must be preserved)
makes me feel what I have right now is simplest solution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247749
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 15 Sep 2015 23:45:35 +0000 (23:45 +0000)]
[IndVars] Rename variable; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247748
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 15 Sep 2015 23:45:31 +0000 (23:45 +0000)]
[SCEVExpander] Fix comment formatting; NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247747
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 15 Sep 2015 23:35:32 +0000 (23:35 +0000)]
[llvm-cxxdump] Remove duplicate code check.
We already fail with 'No such file or directory' when we try to open
the file -- if that doesn't exist. Also add a test to verify this behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247744
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 15 Sep 2015 23:05:59 +0000 (23:05 +0000)]
Reapply "LTO: Disable extra verify runs in release builds"
This reverts commit r247730, effectively reapplying r247729. This time
I have an lld commit ready to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247735
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Tue, 15 Sep 2015 23:05:48 +0000 (23:05 +0000)]
[ASan] Don't instrument globals in .preinit_array/.init_array/.fini_array
These sections contain pointers to function that should be invoked
during startup/shutdown by __libc_csu_init and __libc_csu_fini.
Instrumenting these globals will append redzone to them, which will be
filled with zeroes. This will cause null pointer dereference at runtime.
Merge ASan regression tests for globals that should be ignored by
instrumentation pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247734
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 15 Sep 2015 22:47:38 +0000 (22:47 +0000)]
Revert "LTO: Disable extra verify runs in release builds"
This temporarily reverts commit r247729, as it caused lld build
failures. I'll recommit once I have an lld patch ready-to-go.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247730
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 15 Sep 2015 22:26:11 +0000 (22:26 +0000)]
LTO: Disable extra verify runs in release builds
The verifier currently runs three times in LTO: (1) after parsing, (2)
at the beginning of the optimization pipeline, and (3) at the end of it.
The first run is important, since we're not sure where the bitcode comes
from and it's nice to validate it, but in release builds the extra runs
aren't appropriate.
This commit:
- Allows these runs to be disabled in LTOCodeGenerator.
- Adds command-line options to llvm-lto.
- Adds command-line options to libLTO.dylib, and disables the verifier
by default in release builds (based on NDEBUG).
This shaves about 3.5% off the runtime of ld64 when linking
verify-uselistorder with -flto -g.
rdar://
22509081
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247729
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 15 Sep 2015 21:13:33 +0000 (21:13 +0000)]
test: Add "REQUIRES: native" so this test passes with no default triple configured
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247719
91177308-0d34-0410-b5e6-
96231b3b80d8
Larisse Voufo [Tue, 15 Sep 2015 19:14:05 +0000 (19:14 +0000)]
Revert "Clean up: Refactoring the hardcoded value of 6 for FindAvailableLoadedValue()'s parameter MaxInstsToScan." for preliminary community discussion (See. D12886)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247716
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 15 Sep 2015 18:51:43 +0000 (18:51 +0000)]
[ShrinkWrapping] Add a test case for r247710.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247713
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Tue, 15 Sep 2015 18:32:14 +0000 (18:32 +0000)]
Introducing llvm.invariant.group.barrier intrinsic
For more info for what reason it was invented, goto:
http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html
invariant.group.barrier:
http://reviews.llvm.org/D12310
docs:
http://reviews.llvm.org/D11399
CodeGenPrepare:
http://reviews.llvm.org/D12875
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247711
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 15 Sep 2015 18:19:39 +0000 (18:19 +0000)]
[ShrinkWrapping] Fix an infinite loop while looking for restore point.
This may happen when the input program itself contains an infinite loop with no
exit block. In that case, we would fail to find a block post-dominating the loop
such that this block is outside of the loop.
This fixes PR24823.
Working on reducing the test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247710
91177308-0d34-0410-b5e6-
96231b3b80d8