OSDN Git Service
Simon Pilgrim [Wed, 29 Aug 2018 10:10:58 +0000 (10:10 +0000)]
Remove debug code accidently committed in rL340837. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340908
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Wed, 29 Aug 2018 09:04:52 +0000 (09:04 +0000)]
Revert r340904 "[llvm-mc] - Allow to set custom flags for debug sections."
It broke PPC64 BB:
http://lab.llvm.org:8011/builders/clang-ppc64be-linux/builds/23252
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340906
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Wed, 29 Aug 2018 08:59:36 +0000 (08:59 +0000)]
[benchmark] NFC: Turn benchmark ON on all non-Windows buildbots
The problems with benchmark build should be fixed now, but Windows
buildbots still run into errors seemingly because of the bug in
clang-cl. Because of that, benchmark shouldn't be built on Windows at
this point.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340905
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Wed, 29 Aug 2018 08:42:02 +0000 (08:42 +0000)]
[llvm-mc] - Allow to set custom flags for debug sections.
I am experimenting with a single split dwarf (.dwo sections in .o files).
I want to make linker to ignore .dwo sections in .o, for that I am trying to add
SHF_EXCLUDE flag ("E") for them in my asm sample.
I found that currently, it is impossible to add any flag for debug sections using llvm-mc.
That happens because we have a set of predefined unique sections created early with default flags:
https://github.com/llvm-mirror/llvm/blob/master/lib/MC/MCObjectFileInfo.cpp#L391
This patch allows a user to add any flags he wants.
I had to edit TargetLoweringObjectFileImpl.cpp to set MetaData type for debug sections.
Their kind was Data by default (so they were allocatable) and so after changes introduced by
this patch the SHF_ALLOC flag was applied for them, what does not make sense for debug sections.
One of OrcJITTests tests failed because of that.
Differential revision: https://reviews.llvm.org/D51361
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340904
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Wed, 29 Aug 2018 07:46:09 +0000 (07:46 +0000)]
AMDGPU: Fix getInstSizeInBytes
Summary:
Add some optional code to validate getInstSizeInBytes for emitted
instructions. This flushed out some issues which are fixed by this
patch:
- Streamline getInstSizeInBytes
- Properly define the VI readlane/writelane instruction as VOP3
- Fix the inline constant determination. Specifically, this change
fixes an issue where a 32-bit value of 0xffffffff was recorded
as unsigned. This is equal to -1 when restricting to a 32-bit
comparison, and an inline constant can be used.
Reviewers: arsenm, rampitec
Subscribers: kzhuravl, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D50629
Change-Id: Id87c3b7975839da0de8156a124b0ce98c5fb47f2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340903
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 29 Aug 2018 06:55:27 +0000 (06:55 +0000)]
LoopSink: Don't sink into blocks without an insertion point (PR38462)
In the PR, LoopSink was trying to sink into a catchswitch block, which
doesn't have a valid insertion point.
Differential Revision: https://reviews.llvm.org/D51307
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340900
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 29 Aug 2018 04:45:33 +0000 (04:45 +0000)]
[SelectionDAG] Remove masked_gather/scatter from TargetSelectionDAG.td.
These aren't used in tree and the number of operands in the type profile is wrong. X86 uses its own ISD opcode and type profile after op legalization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340899
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 29 Aug 2018 04:45:32 +0000 (04:45 +0000)]
[SelectionDAG] Add some comments to ISDOpcodes.h about the operands of MLOAD, MSTORE, MGATHER, MSCATTER. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340898
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 29 Aug 2018 04:12:44 +0000 (04:12 +0000)]
Add support for various C++14 demanglings.
Mostly this includes <auto> and <decltype-auto> return values.
Additionally, this fixes a fairly obscure back-referencing bug
that was encountered in one of the C++14 tests, which is that
if you have something like Foo<&bar, &bar> then the `bar`
forms a backreference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340896
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 29 Aug 2018 03:59:17 +0000 (03:59 +0000)]
[MS Demangler] Add output flags to all function calls.
Previously we had a FunctionSigFlags, but it's more flexible
to just have one set of output flags that apply to the entire
process and just pipe the entire set of flags through the
output process.
This will be useful when we start allowing the user to customize
the outputting behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340894
91177308-0d34-0410-b5e6-
96231b3b80d8
Fedor Sergeev [Wed, 29 Aug 2018 03:53:30 +0000 (03:53 +0000)]
NFC. fixing time-passes test failure on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340893
91177308-0d34-0410-b5e6-
96231b3b80d8
Aditya Nandakumar [Wed, 29 Aug 2018 03:17:08 +0000 (03:17 +0000)]
[GISel]: Add legalization support for Widening UADDO/USUBO
https://reviews.llvm.org/D51384
Added code in LegalizerHelper to widen UADDO/USUBO along with unit
tests.
Reviewed by volkan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340892
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 29 Aug 2018 02:12:49 +0000 (02:12 +0000)]
[X86] Support v2i32 gather/scatter indices with -x86-experimental-vector-widening-legalization
Summary: This is split out from D41062 to cover the code in LegalVectorTypes.cpp
Reviewers: RKSimon, spatel, efriedma
Reviewed By: efriedma
Subscribers: sdardis, jvesely, nhaehnle, jrtc27, atanasyan, llvm-commits
Differential Revision: https://reviews.llvm.org/D51337
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340891
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 29 Aug 2018 01:38:47 +0000 (01:38 +0000)]
Start reserving x18 by default on Android targets.
Differential Revision: https://reviews.llvm.org/D45588
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340889
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Davis [Wed, 29 Aug 2018 00:41:04 +0000 (00:41 +0000)]
[llvm-mca] Remove unused formal. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340888
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Davis [Wed, 29 Aug 2018 00:34:32 +0000 (00:34 +0000)]
[llvm-mca] Move the initialization of Pipeline. NFC.
Code cleanup to make the pipeline creation routine easier to read.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340887
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 28 Aug 2018 23:25:59 +0000 (23:25 +0000)]
[codeview] Clean up machinery for deferring .cv_loc emission
Now that we create the label at the point of the directive, we don't
need to set the "current CV location", and then later when we emit the
next instruction, create a label for it and emit it.
DWARF still defers the labels used in .debug_loc until the next
instruction or value, for reasons unknown.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340883
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhaoshi Zheng [Tue, 28 Aug 2018 23:00:59 +0000 (23:00 +0000)]
[QTOOL-37352] Consider isLegalAddressingImm in Constant Hoisting
In Thumb1, legal imm range is [0, 255] for ADD/SUB instructions. However, the
legal imm range for LD/ST in (R+Imm) addressing mode is [0, 127]. Imms in
[128, 255] are materialized by mov R, #imm, and LD/STs use them in (R+R)
addressing mode.
This patch checks if a constant is used as offset in (R+Imm), if so, it checks
isLegalAddressingMode passing the constant value as BaseOffset.
Differential Revision: https://reviews.llvm.org/D50931
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340882
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 28 Aug 2018 22:50:59 +0000 (22:50 +0000)]
[ORC] Add a testcase for r338975.
Tests that bad object files generate a predictable error from the JIT APIs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340881
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 28 Aug 2018 22:29:12 +0000 (22:29 +0000)]
[codeview] Emit labels for .cv_loc immediately
Previously we followed the DWARF implementation, which waits until the
next instruction or data to emit the label to use in the .debug_loc
section. We might want to consider re-evaluating that design choice as
well, since it means the .loc skips alignment padding, for better or
worse.
This was the most minimal fix I could come up with, but we should be
able to do a lot of cleanups now that we don't need to save a pending CV
location on the CodeViewContext. I plan to do those next, but this
immediately fixes an assertion for some of our users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340878
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 22:05:55 +0000 (22:05 +0000)]
[X86] Remove GCCBuiltin from kadd intrinsics.
We need to custom handle it in clang so we can bit cast to the mask type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340875
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 28 Aug 2018 21:18:05 +0000 (21:18 +0000)]
[ORC] Replace lookupFlags in JITSymbolResolver with getResponsibilitySet.
The new method name/behavior more closely models the way it was being used.
It also fixes an assertion that can occur when using the new ORC Core APIs,
where flags alone don't necessarily provide enough context to decide whether
the caller is responsible for materializing a given symbol (which was always
the reason this API existed).
The default implementation of getResponsibilitySet uses lookupFlags to determine
responsibility as before, so existing JITSymbolResolvers should continue to
work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340874
91177308-0d34-0410-b5e6-
96231b3b80d8
Fedor Sergeev [Tue, 28 Aug 2018 21:06:51 +0000 (21:06 +0000)]
[NFC][PassTiming] factor out generic PassTimingInfo
Moving PassTimingInfo from legacy pass manager code into a separate header.
Making it suitable for both legacy and new pass manager.
Adding a test on -time-passes main functionality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340872
91177308-0d34-0410-b5e6-
96231b3b80d8
Alina Sbirlea [Tue, 28 Aug 2018 20:41:05 +0000 (20:41 +0000)]
[SimpleLoopUnswitch] Form dedicated exits after trivial unswitches.
Summary:
Form dedicated exits after trivial unswitches.
Fixes PR38737, PR38283.
Reviewers: chandlerc, fedor.sergeev
Subscribers: sanjoy, jlebar, uabelho, llvm-commits
Differential Revision: https://reviews.llvm.org/D51375
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340871
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 28 Aug 2018 20:20:31 +0000 (20:20 +0000)]
[ORC] Add an addObjectFile method to LLJIT.
The addObjectFile method adds the given object file to the JIT session, making
its code available for execution.
Support for the -extra-object flag is added to lli when operating in
-jit-kind=orc-lazy mode to support testing of this feature.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340870
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 19:22:55 +0000 (19:22 +0000)]
[X86] Add intrinsics for KADD instructions
These are intrinsics for supporting kadd builtins in clang. These builtins are already in gcc to implement intrinsics from icc. Though they are missing from the Intel Intrinsics Guide.
This instruction adds two mask registers together as if they were scalar rather than a vXi1. We might be able to get away with a bitcast to scalar and a normal add instruction, but that would require DAG combine smarts in the backend to recoqnize add+bitcast. For now I'd prefer to go with the easiest implementation so we can get these builtins in to clang with good codegen.
Differential Revision: https://reviews.llvm.org/D51370
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340869
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Tue, 28 Aug 2018 19:19:03 +0000 (19:19 +0000)]
[AMDGPU] Fix -Wunused-variable when -DLLVM_ENABLE_ASSERTIONS=off
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340868
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Morehouse [Tue, 28 Aug 2018 19:07:24 +0000 (19:07 +0000)]
Revert "[libFuzzer] Port to Windows"
This reverts commit r340860 due to failing tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340867
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 28 Aug 2018 18:55:55 +0000 (18:55 +0000)]
AMDGPU: Don't delete instructions if S_ENDPGM has implicit uses
This can leave behind the uses with the defs removed.
Since this should only really happen in tests, it's not worth the
effort of trying to handle this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340866
91177308-0d34-0410-b5e6-
96231b3b80d8
Aditya Nandakumar [Tue, 28 Aug 2018 18:54:10 +0000 (18:54 +0000)]
[GISel]: Add missing opcodes for overflow intrinsics
https://reviews.llvm.org/D51197
Currently, IRTranslator (and GISel) seems to be arbitrarily picking
which overflow intrinsics get mapped into opcodes which either have a
carry as an input or not.
For intrinsics such as Intrinsic::uadd_with_overflow, translate it to an
opcode (G_UADDO) which doesn't have any carry inputs (similar to LLVM
IR).
This patch adds 4 missing opcodes for completeness - G_UADDO, G_USUBO,
G_SSUBE and G_SADDE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340865
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Tue, 28 Aug 2018 18:49:47 +0000 (18:49 +0000)]
[WebAssembly][NFC] Document stackifier tablegen backend
Summary:
Add comments to help readers avoid having to read tablegen backends to
understand the code. Also remove unecessary breaks from the output.
Reviewers: dschuff, aheejin
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51371
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340864
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 28 Aug 2018 18:49:04 +0000 (18:49 +0000)]
[llvm-mca] use llvm::any_of instead of std::any_of. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340863
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 28 Aug 2018 18:44:16 +0000 (18:44 +0000)]
AMDGPU: Force shrinking of add/sub even if the carry is used
The original motivating example uses a 64-bit add, so the carry
is used. Insert a copy from VCC. This may allow shrinking of
the used carry instruction. At worst, we are replacing a
mov to materialize the constant with a copy of vcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340862
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Tue, 28 Aug 2018 18:34:33 +0000 (18:34 +0000)]
[WebAssembly][NFC] Fix formatting from rL340781
Reviewers: aheejin
Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51367
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340861
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Morehouse [Tue, 28 Aug 2018 18:34:32 +0000 (18:34 +0000)]
[libFuzzer] Port to Windows
Summary:
Port libFuzzer to windows-msvc.
This patch allows libFuzzer targets to be built and run on Windows, using -fsanitize=fuzzer and/or fsanitize=fuzzer-no-link. It allows these forms of coverage instrumentation to work on Windows as well.
It does not fix all issues, such as those with -fsanitize-coverage=stack-depth, which is not usable on Windows as of this patch.
It also does not fix any libFuzzer integration tests. Nearly all of them fail to compile, fixing them will come in a later patch, so libFuzzer tests are disabled on Windows until them.
Patch By: metzman
Reviewers: morehouse, rnk
Reviewed By: morehouse, rnk
Subscribers: morehouse, kcc, eraman
Differential Revision: https://reviews.llvm.org/D51022
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340860
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 28 Aug 2018 18:34:24 +0000 (18:34 +0000)]
AMDGPU: Shrink insts to fold immediates
This needs to be done in the SSA fold operands
pass to be effective, so there is a bit of overlap
with SIShrinkInstructions but I don't think this
is practically avoidable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340859
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Tue, 28 Aug 2018 18:33:31 +0000 (18:33 +0000)]
[WebAssembly][NFC] Fix up SIMD bitwise tests
Summary:
The updated tests were previously infallible because the SIMD bitwise
operations do not contain vector types in their names.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51369
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340858
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Tue, 28 Aug 2018 18:31:15 +0000 (18:31 +0000)]
[WebAssembly] v128.not
Implementation and tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340857
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 28 Aug 2018 18:22:34 +0000 (18:22 +0000)]
AMDGPU: Move canShrink into TII
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340855
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 28 Aug 2018 18:13:26 +0000 (18:13 +0000)]
[DAGCombine] Rework MERGE_VALUES to inline in single pass. NFCI.
Avoid hyperlinear cost of inlining MERGE_VALUE node by constructing
temporary vector and doing a single replacement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340853
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 28 Aug 2018 18:13:00 +0000 (18:13 +0000)]
[DAG] Avoid recomputing Divergence checks. NFCI.
When making multiple updates to the same SDNode, recompute node
divergence only once after all changes have been made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340852
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 28 Aug 2018 18:12:35 +0000 (18:12 +0000)]
[DAG] Fix updateDivergence calculation
Check correct SDNode when deciding if we should update the divergence
property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340851
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 28 Aug 2018 18:10:02 +0000 (18:10 +0000)]
AMDGPU: Remove nan tests in class if src is nnan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340850
91177308-0d34-0410-b5e6-
96231b3b80d8
Heejin Ahn [Tue, 28 Aug 2018 17:49:39 +0000 (17:49 +0000)]
[WebAssembly] Use getCalleeOpNo utility function (NFC)
Reviewers: tlively
Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51366
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340848
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Tue, 28 Aug 2018 17:36:30 +0000 (17:36 +0000)]
[XRay][docs] Chrome Trace Viewer Instructions
This patch adds an example on how to generate a Chrome Trace Viewer
loadable trace from an XRay trace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340847
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 28 Aug 2018 17:23:20 +0000 (17:23 +0000)]
[InstCombine] fix baseline assertions
rL340842 contained the wrong version of the check lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340846
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 17:17:13 +0000 (17:17 +0000)]
[X86] Mark the FUCOMI instructions as requiring CMOV to be enabled. NFCI
These instructions were added on the PentiumPro along with CMOV.
This was already comprehended by the lowering process which should emit an alternate sequence using FCOM and FNSTW. This just makes it an explicit error if that doesn't work for some reason.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340844
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Tue, 28 Aug 2018 16:46:27 +0000 (16:46 +0000)]
[XRay][docs] Update instructions
Add `xray_mode=xray-basic` to the list of options in the "further
exploration" section of the doc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340843
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 28 Aug 2018 16:45:00 +0000 (16:45 +0000)]
[InstCombine] add tests for select narrowing (PR38691); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340842
91177308-0d34-0410-b5e6-
96231b3b80d8
Stella Stamenova [Tue, 28 Aug 2018 16:24:55 +0000 (16:24 +0000)]
[lit, shtest-timeout] Always use an internal shell for the shtest-timeout to diagnose buildbot failures
Summary:
Right now this test is failing on the builtbots on Windows but we have a very similar setup where the test passes. The test is meant to test that specifying a timeout works correctly by running an infnite loop and having it timeout - on the buildbot, the infinite loop doesn't actually execute. This change runs all of the tests in the set using an internal shell rather than an external shell. I expect this will make the test pass which means that either the way the external shell is invoked or the external shell setup on the buildbots is not correct. Regardless of whether the test passes with this change, we'll need to undo this change and have a real fix.
@gkistanova was able to get logs from the buildbot to rule out a number of theories as to why this test is failing, but they didn't have enough information to confirm exactly what the issue is. The purpose of this change is to narrow it down, but if someone has a local repro and can aid in debugging, that would make it much speedier (and less prone to making the bots fail).
Reviewers: gkistanova, asmith, zturner, modocache, rnk, delcypher
Reviewed By: rnk
Subscribers: delcypher, llvm-commits, gkistanova
Differential Revision: https://reviews.llvm.org/D51326
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340840
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Cain [Tue, 28 Aug 2018 16:23:39 +0000 (16:23 +0000)]
[debuginfo] generate debug info with asm+.file
Summary:
For assembly input files, generate debug info even when the .file
directive is present, provided it does not include a file-number
argument. Fixes PR38695.
Reviewers: probinson, sidneym
Subscribers: aprantl, hiraditya, JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D51315
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340839
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 28 Aug 2018 15:42:08 +0000 (15:42 +0000)]
[TableGen] CodeGenDAGPatterns::GenerateVariants - basic caching of matching predicates
CodeGenDAGPatterns::GenerateVariants is a costly function in many tblgen commands (33.87% of the total runtime of x86 -gen-dag-isel), and due to the O(N^2) nature of the function, there are a high number of repeated comparisons of the pattern's vector<Predicate>.
This initial patch at least avoids repeating these comparisons for every Variant in a pattern. I began investigating caching all the matches before entering the loop but hit issues with how best to store the data and how to update the cache as patterns were added.
Saves around 15secs in debug builds of x86 -gen-dag-isel.
Differential Revision: https://reviews.llvm.org/D51035
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340837
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Tue, 28 Aug 2018 15:36:50 +0000 (15:36 +0000)]
[benchmark] Stop building benchmarks by default
Although the benchmark regex-related build issue seems to be
fixed, it appears that benchmark library triggers some stage 2 clang-cl
bugs:
http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/13495/steps/build%20stage%202/logs/stdio
The only sensible option now is to prevent benchmark library from
building in the default configuration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340836
91177308-0d34-0410-b5e6-
96231b3b80d8
David Bolvansky [Tue, 28 Aug 2018 15:27:25 +0000 (15:27 +0000)]
[Inliner] Attribute callsites with inline remarks
Summary:
Sometimes reading an output *.ll file it is not easy to understand why some callsites are not inlined. We can read output of inline remarks (option --pass-remarks-missed=inline) and try correlating its messages with the callsites.
An easier way proposed by this patch is to add to every callsite processed by Inliner an attribute with the latest message that describes the cause of not inlining this callsite. The attribute is called //inline-remark//. By default this feature is off. It can be switched on by the option //-inline-remark-attribute//.
For example in the provided test the result method //@test1// has two callsites //@bar// and inline remarks report different inlining missed reasons:
remark: <unknown>:0:0: bar not inlined into test1 because too costly to inline (cost=-5, threshold=-6)
remark: <unknown>:0:0: bar not inlined into test1 because it should never be inlined (cost=never): recursive
It is not clear which remark correspond to which callsite. With the inline remark attribute enabled we get the reasons attached to their callsites:
define void @test1() {
call void @bar(i1 true) #0
call void @bar(i1 false) #2
ret void
}
attributes #0 = { "inline-remark"="(cost=-5, threshold=-6)" }
..
attributes #2 = { "inline-remark"="(cost=never): recursive" }
Patch by: yrouban (Yevgeny Rouban)
Reviewers: xbolva00, tejohnson, apilipenko
Reviewed By: xbolva00, tejohnson
Subscribers: eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D50435
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340834
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 15:24:12 +0000 (15:24 +0000)]
[X86] Fix copy paste mistake in vector-idiv-v2i32.ll. Add missing test case.
Some of the test cases contained the same load twice instead of a different load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340833
91177308-0d34-0410-b5e6-
96231b3b80d8
Ryan Taylor [Tue, 28 Aug 2018 15:07:30 +0000 (15:07 +0000)]
[AMDGPU] Add support for a16 modifiear for gfx9
Summary:
Adding support for a16 for gfx9. A16 bit replaces r128 bit for gfx9.
Change-Id: Ie8b881e4e6d2f023fb5e0150420893513e5f4841
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D50575
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340831
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 28 Aug 2018 15:07:11 +0000 (15:07 +0000)]
[llvm-mca] Initialize each element in vector TimelineView::UsedBuffers to a default invalid buffer descriptor. NFCI
Also change the default buffer size for UsedBuffer entries to -1 (i.e. "unknown
size"). No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340830
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Tue, 28 Aug 2018 14:51:09 +0000 (14:51 +0000)]
[benchmark] Fix buildbots failing to identify regex support
This is cleanup after newly introduced google/benchmark library
(rL340809). Many buildbots fail to identify regex engine support, so
this should presumably fix the issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340827
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Tue, 28 Aug 2018 14:46:29 +0000 (14:46 +0000)]
Clarify comment in the string-offsets-table-order.ll test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340826
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 28 Aug 2018 14:27:01 +0000 (14:27 +0000)]
[llvm-mca][TimelineView] Force the same number of executions for every entry in the 'wait-times' table.
This patch also uses colors to highlight problematic wait-time entries.
A problematic entry is an entry with an high wait time that tends to match (or
exceed) the size of the scheduler's buffer.
Color RED is used if an instruction had to wait an average number of cycles
which is bigger than (or equal to) the size of the underlying scheduler's
buffer.
Color YELLOW is used if the time (in cycles) spend waiting for the
operands or pipeline resources is bigger than half the size of the underlying
scheduler's buffer.
Color MAGENTA is used if an instruction does not consume buffer resources
according to the scheduling model.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340825
91177308-0d34-0410-b5e6-
96231b3b80d8
Kristof Umann [Tue, 28 Aug 2018 14:17:51 +0000 (14:17 +0000)]
[ADT] ImmutableList no longer requires elements to be copy constructible
ImmutableList used to require elements to have a copy constructor for no
good reason, this patch aims to fix this.
It also required but did not enforce its elements to be trivially
destructible, so a new static_assert is added to guard against misuse.
Differential Revision: https://reviews.llvm.org/D49985
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340824
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 28 Aug 2018 13:14:42 +0000 (13:14 +0000)]
[llvm-mca] Pass an instruction reference when notifying event listeners about reserved/released buffer resources. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340821
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikael Holmen [Tue, 28 Aug 2018 12:40:11 +0000 (12:40 +0000)]
[CloneFunction] Constant fold terminators before checking single predecessor
Summary:
This fixes PR31105.
There is code trying to delete dead code that does so by e.g. checking if
the single predecessor of a block is the block itself.
That check fails on a block like this
bb:
br i1 undef, label %bb, label %bb
since that has two (identical) predecessors.
However, after the check for dead blocks there is a call to
ConstantFoldTerminator on the basic block, and that call simplifies the
block to
bb:
br label %bb
Therefore we now do the call to ConstantFoldTerminator before the check if
the block is dead, so it can realize that it really is.
The original behavior lead to the block not being removed, but it was
simplified as above, and then we did a call to
Dest->replaceAllUsesWith(&*I);
with old and new being equal, and an assertion triggered.
Reviewers: chandlerc, fhahn
Reviewed By: fhahn
Subscribers: eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D51280
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340820
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 28 Aug 2018 11:10:27 +0000 (11:10 +0000)]
[TableGen] Use std::move where possible in InstructionMemo constructor. NFCI.
Requested in post-commit review for rL339670
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340819
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexandros Lamprineas [Tue, 28 Aug 2018 11:07:54 +0000 (11:07 +0000)]
[GVNHoist] Prune out useless CHI insertions
Fix for the out-of-memory error when compiling SemaChecking.cpp
with GVNHoist and ubsan enabled. I've used a cache for inserted
CHIs to avoid excessive memory usage.
Differential Revision: https://reviews.llvm.org/D50323
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340818
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Tue, 28 Aug 2018 11:05:09 +0000 (11:05 +0000)]
[NFC] Apply another commit to comply with old CMake
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340817
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 28 Aug 2018 10:37:29 +0000 (10:37 +0000)]
[X86][SSE] Improve variable scalar shift of vXi8 vectors (PR34694)
This patch creates the shift mask and actual shift using the vXi16 vector shift ops.
Differential Revision: https://reviews.llvm.org/D51263
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340813
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Tue, 28 Aug 2018 10:27:49 +0000 (10:27 +0000)]
[benchmark] Silence warning by applying upstream patch
ompiling benchmark library (introduced in D50894) with the latest
bootstrapped Clang produces a lot of warnings, this issue was addressed
in the upstream patch I pushed earlier.
Upstream patch:
https://github.com/google/benchmark/commit/
f85304e4e3a0e4e1bf15b91720df4a19e90b589f
`README.LLVM` notes were updated to reflect the latest changes.
Reviewed by: lebedev.ri
Differential Revision: https://reviews.llvm.org/D51342
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340811
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 28 Aug 2018 10:14:09 +0000 (10:14 +0000)]
[X86][SSE] Avoid vector extraction/insertion for non-constant uniform shifts
As discussed on D51263, we're better off using byte shifts to clear the upper bits on pre-SSE41 hardware.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340810
91177308-0d34-0410-b5e6-
96231b3b80d8
Kirill Bobyrev [Tue, 28 Aug 2018 09:42:41 +0000 (09:42 +0000)]
Pull google/benchmark library to the LLVM tree
This patch pulls google/benchmark v1.4.1 into the LLVM tree so that any
project could use it for benchmark generation. A dummy benchmark is
added to `llvm/benchmarks/DummyYAML.cpp` to validate the correctness of
the build process.
The current version does not utilize LLVM LNT and LLVM CMake
infrastructure, but that might be sufficient for most users. Two
introduced CMake variables:
* `LLVM_INCLUDE_BENCHMARKS` (`ON` by default) generates benchmark
targets
* `LLVM_BUILD_BENCHMARKS` (`OFF` by default) adds generated
benchmark targets to the list of default LLVM targets (i.e. if `ON`
benchmarks will be built upon standard build invocation, e.g. `ninja` or
`make` with no specific targets)
List of modifications:
* `BENCHMARK_ENABLE_TESTING` is disabled
* `BENCHMARK_ENABLE_EXCEPTIONS` is disabled
* `BENCHMARK_ENABLE_INSTALL` is disabled
* `BENCHMARK_ENABLE_GTEST_TESTS` is disabled
* `BENCHMARK_DOWNLOAD_DEPENDENCIES` is disabled
Original discussion can be found here:
http://lists.llvm.org/pipermail/llvm-dev/2018-August/125023.html
Reviewed by: dberris, lebedev.ri
Subscribers: ilya-biryukov, ioeric, EricWF, lebedev.ri, srhines,
dschuff, mgorny, krytarowski, fedor.sergeev, mgrang, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D50894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340809
91177308-0d34-0410-b5e6-
96231b3b80d8
Max Kazantsev [Tue, 28 Aug 2018 09:26:28 +0000 (09:26 +0000)]
[NFC] A loop can never contain Ret instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340808
91177308-0d34-0410-b5e6-
96231b3b80d8
David Chisnall [Tue, 28 Aug 2018 08:59:06 +0000 (08:59 +0000)]
Fix in getAllocationDataForFunction
Summary:
Correct to use set like behaviour of AllocType. Should check for
subset, not precise value.
Reviewers: theraven
Reviewed By: theraven
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D50959
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340807
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 06:39:35 +0000 (06:39 +0000)]
[X86] Fix some comments to refer to KORTEST not KTEST. NFC
KTEST is a different instruction. All of this code uses KORTEST.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340799
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 03:47:20 +0000 (03:47 +0000)]
[DAGCombiner][AMDGPU][Mips] Fold bitcast with volatile loads if the resulting load is legal for the target.
Summary:
I'm not sure if this patch is correct or if it needs more qualifying somehow. Bitcast shouldn't change the size of the load so it should be ok? We already do something similar for stores. We'll change the type of a volatile store if the resulting store is Legal or Custom. I'm not sure we should be allowing Custom there...
I was playing around with converting X86 atomic loads/stores(except seq_cst) into regular volatile loads and stores during lowering. This would allow some special RMW isel patterns in X86InstrCompiler.td to be removed. But there's some floating point patterns in there that didn't work because we don't fold (f64 (bitconvert (i64 volatile load))) or (f32 (bitconvert (i32 volatile load))).
Reviewers: efriedma, atanasyan, arsenm
Reviewed By: efriedma
Subscribers: jvesely, arsenm, sdardis, kzhuravl, wdng, yaxunl, dstuttard, tpr, t-tye, arichardson, jrtc27, atanasyan, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D50491
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340797
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 28 Aug 2018 02:02:29 +0000 (02:02 +0000)]
[InstCombine] Extend (add (sext x), cst) --> (sext (add x, cst')) and (add (zext x), cst) --> (zext (add x, cst')) to work for vectors
Differential Revision: https://reviews.llvm.org/D51236
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340796
91177308-0d34-0410-b5e6-
96231b3b80d8
Kit Barton [Tue, 28 Aug 2018 01:18:29 +0000 (01:18 +0000)]
[PPC] Remove Darwin support from POWER backend.
This patch issues an error message if Darwin ABI is attempted with the PPC
backend. It also cleans up existing test cases, either converting the test to
use an alternative triple or removing the test if the coverage is no longer
needed.
Updated Tests
-------------
The majority of test cases were updated to use a different triple that does not
include the Darwin ABI. Many tests were also updated to use FileCheck, in place
of grep.
Deleted Tests
-------------
llvm/test/tools/dsymutil/PowerPC/sibling.test was originally added to test
specific functionality of dsymutil using an object file created with an old
version of llvm-gcc for a Powerbook G4. After a discussion with @JDevlieghere he
suggested removing the test.
llvm/test/CodeGen/PowerPC/combine_loads_from_build_pair.ll was converted from a
PPC test to a SystemZ test, as the behavior is also reproducible there.
All other tests that were deleted were specific to the darwin/ppc ABI and no
longer necessary.
Phabricator Review: https://reviews.llvm.org/D50988
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340795
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 28 Aug 2018 00:55:19 +0000 (00:55 +0000)]
Revert "[CodeGenPrepare] Scan past debug intrinsics to find select candidates (NFC)"
This causes crashes due to the interleaved dbg.value intrinsics being
left at the end of basic blocks, causing the actual terminators (br,
etc) to be not where they should be (not at the end of the block),
leading to later crashes.
Further discussion on the original commit thread.
This reverts commit r340368.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340794
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Tue, 28 Aug 2018 00:32:32 +0000 (00:32 +0000)]
[MemorySSA] Add NDEBUG checks to verifiers; NFC
verify*() methods are intended to have no side-effects (unless we detect
broken MSSA, in which case they assert()), and all of the other verify
methods are wrapped by `#ifndef NDEBUG`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340793
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 27 Aug 2018 23:01:10 +0000 (23:01 +0000)]
[InstCombine] fix formatting; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340790
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 27 Aug 2018 22:55:49 +0000 (22:55 +0000)]
[InstCombine] Add test cases for D51236. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340789
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 27 Aug 2018 22:48:01 +0000 (22:48 +0000)]
[RuntimeDyld] Add test case that was accidentally left out of r340125.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340788
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 27 Aug 2018 22:41:44 +0000 (22:41 +0000)]
[InstCombine] allow shuffle+binop canonicalization with widening shuffles
This lines up with the behavior of an existing transform where if both
operands of the binop are shuffled, we allow moving the binop before the
shuffle regardless of whether the shuffle changes the size of the vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340787
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 27 Aug 2018 22:30:57 +0000 (22:30 +0000)]
[ORC] Add unit tests for the new RTDyldObjectLinkingLayer2 class.
The new unit tests match the old ones, which will remain in tree until the
old RTDyldObjectLinkingLayer is removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340786
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 27 Aug 2018 22:29:06 +0000 (22:29 +0000)]
[x86] add AVX runs to show more potential scalar->vector mov opportunities; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340785
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Mon, 27 Aug 2018 22:11:15 +0000 (22:11 +0000)]
[PATCH] [InstCombine] Fix issue in the simplification of pow() with nested exp{,2}()
Fix the issue of duplicating the call to `exp{,2}()` when it's nested in
`pow()`, as exposed by rL340462.
Differential revision: https://reviews.llvm.org/D51194
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340784
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Mon, 27 Aug 2018 22:10:59 +0000 (22:10 +0000)]
s/std::set/DenseSet/; NFC
We only use this set for `insert` and `count`, so a hashing container
seems better here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340783
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Mon, 27 Aug 2018 22:04:50 +0000 (22:04 +0000)]
[Pipeliner] Fix incorrect phi values in the epilog and kernel
The code that generates the loop definition operand for phis
in the epilog and kernel is incorrect in some cases.
In the kernel, when a phi refers to another phi, the code that
updates PhiOp2 needs to include the stage difference between
the two phis.
In the epilog, the check for using the loop definition instead
of the phi definition uses the StageDiffAdj value (the difference
between the phi stage and the loop definition stage), but the
adjustment is not needed to determine if the current stage
contains an iteration with the loop definition.
Differential Revision: https://reviews.llvm.org/D51167
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340782
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Lively [Mon, 27 Aug 2018 22:02:09 +0000 (22:02 +0000)]
[WebAssembly] TableGen backend for stackifying instructions
Summary:
The new stackification backend generates the giant switch statement
used to translate instructions to their stackified forms. I did this
because it was more interesting than adding all the different vector
versions of the various SIMD instructions to the switch statment
manually.
Reviewers: aardappel, aheejin, dschuff
Subscribers: mgorny, sbc100, jgravelle-google, sunfish, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D51318
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340781
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 27 Aug 2018 21:53:36 +0000 (21:53 +0000)]
Update the Visual Studio Integration from user feedback.
This patch removes the MSBuild warnings about options that
clang-cl ignores. It also adds several additional fields to
the LLVM Configuration options page. The first is that it
adds support for LLD! To give the user flexibility though,
we don't want to force LLD to always-on, and if we're not
forcing LLD then we might as well not force clang-cl either.
So we add options that can enable or disable lld, clang-cl,
or any combination of the two. Whenever one is disabled,
it falls back to the Microsoft equivalent.
Additionally, for each of clang-cl and lld-link, we add a new
configuration setting that allows Additional Options to be
passed for that specific tool only. This is similar to the
C/C++ > Command Line > Additional Options entry box, but
it serves the use case where a user switches back and forth
between the toolsets in their vcxproj, but where cl.exe
won't accept some options that clang-cl will. In this case
you can pass those options in the clang-cl additional options
and whenever clang-cl is disabled (or the other toolset is
selected entirely), those options won't get passed at all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340780
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Tereshin [Mon, 27 Aug 2018 21:41:37 +0000 (21:41 +0000)]
Revert "[SCEV][NFC] Check NoWrap flags before lexicographical comparison of SCEVs"
This reverts r319889.
Unfortunately, wrapping flags are not a part of SCEV's identity (they
do not participate in computing a hash value or in equality
comparisons) and in fact they could be assigned after the fact w/o
rebuilding a SCEV.
Grep for const_cast's to see quite a few of examples, apparently all
for AddRec's at the moment.
So, if 2 expressions get built in 2 slightly different ways: one with
flags set in the beginning, the other with the flags attached later
on, we may end up with 2 expressions which are exactly the same but
have their operands swapped in one of the commutative N-ary
expressions, and at least one of them will have "sorted by complexity"
invariant broken.
2 identical SCEV's won't compare equal by pointer comparison as they
are supposed to.
A real-world reproducer is added as a regression test: the issue
described causes 2 identical SCEV expressions to have different order
of operands and therefore compare not equal, which in its turn
prevents LoadStoreVectorizer from vectorizing a pair of consecutive
loads.
On a larger example (the source of the test attached, which is a
bugpoint) I have seen even weirder behavior: adding a constant to an
existing SCEV changes the order of the existing terms, for instance,
getAddExpr(1, ((A * B) + (C * D))) returns (1 + (C * D) + (A * B)).
Differential Revision: https://reviews.llvm.org/D40645
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340777
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 27 Aug 2018 21:35:58 +0000 (21:35 +0000)]
Set line endings to Windows on MSBuild files.
Normally we force Unix line endings in the repository, but since these are Windows files which are consumed by Microsoft tools that we don't have the source of, we should probably err on the side of caution and force CRLF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340776
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 27 Aug 2018 21:34:37 +0000 (21:34 +0000)]
[X86] Reverse the check prefixes in the test added in r340774.
The 32-bit and 64-bit checks were reversed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340775
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 27 Aug 2018 21:13:07 +0000 (21:13 +0000)]
[X86] Add test cases to show current codegen of v2i32 div/rem in 32-bit and 64-bit modes
In particular this shows that we end up using libcalls in 32-bit mode even for division by constant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340774
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 27 Aug 2018 20:21:33 +0000 (20:21 +0000)]
[x86] add tests for possibly avoiding scalar->vector move; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340773
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Mon, 27 Aug 2018 19:14:35 +0000 (19:14 +0000)]
[llvm-mca] Remove unused include. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340768
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 27 Aug 2018 18:11:31 +0000 (18:11 +0000)]
DAG: Check transformed type for forming fminnum/fmaxnum from vselect
Follow up to r340655 to fix vector types which are split.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340766
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 27 Aug 2018 17:40:09 +0000 (17:40 +0000)]
MachineVerifier: Fix assert on implicit virtreg use
If the liveness of a physical register was invalid, this
was attempting to iterate the subregisters of all register
uses of the instruction, which would assert when it
encountered an implicit virtual register operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340763
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 27 Aug 2018 17:40:07 +0000 (17:40 +0000)]
LangRef: Clarify expected sNaN behavior for minnum/maxnum
This matches the de-facto behavior based on constant folding
and the default lowering to fmin/fmax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340762
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Fertile [Mon, 27 Aug 2018 17:37:43 +0000 (17:37 +0000)]
[PowerPC][MC] Support expressions in getMemRIX16Encoding.
Loosens an assert in getMemRIX16Encoding that restricts DQ-form instructions to
using an immediate, so that we can assemble instructions like lxv/stxv where the
offset is an expression.
Differential Revision: https://reviews.llvm.org/D51122
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340761
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 27 Aug 2018 17:29:43 +0000 (17:29 +0000)]
[NVPTX] Implement isLegalToVectorizeLoadChain
This lets LSV nicely split up underaligned chains.
Differential Revision: https://reviews.llvm.org/D51306
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340760
91177308-0d34-0410-b5e6-
96231b3b80d8