OSDN Git Service
Keno Fischer [Wed, 1 Jun 2016 20:31:07 +0000 (20:31 +0000)]
[PPC64] Fix SUBFC8 Defs list
Fix PR27943 "Bad machine code: Using an undefined physical register".
SUBFC8 implicitly defines the CR0 register, but this was omitted in
the instruction definition.
Patch by Jameson Nash <jameson@juliacomputing.com>
Reviewers: hfinkel
Differential Revision: http://reviews.llvm.org/D20802
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271425
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Wed, 1 Jun 2016 20:03:09 +0000 (20:03 +0000)]
[SCEV] Keep SCEVExpander insert points consistent.
Summary:
Make sure that the SCEVExpander Builder insert point and any
saved/restored insert points are kept consistent (i.e. their Instruction
and BasicBlock match) when moving instructions in SCEVExpander.
This fixes an issue triggered by
http://reviews.llvm.org/D18001 [LSR] Create fewer redundant instructions.
Test case will be added in reapply commit of above change:
http://reviews.llvm.org/D18480 Reapply [LSR] Create fewer redundant instructions.
Reviewers: sanjoy
Subscribers: mzolotukhin, sanjoy, qcolombet, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D20703
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271424
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Wed, 1 Jun 2016 18:55:32 +0000 (18:55 +0000)]
Revert "Claim NoAlias if two GEPs index different fields of the same struct"
This reverts commit
2d5d6493f43eb68493a3852b8c226ac9fafdc7eb.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271422
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Wed, 1 Jun 2016 18:39:54 +0000 (18:39 +0000)]
[CFLAA] Recognize builtin allocation functions.
This patch extends CFLAA to recognize allocation functions such as
malloc, free, etc, so we can treat them more aggressively.
Patch by Jia Chen.
Differential Revision: http://reviews.llvm.org/D20776
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271421
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 1 Jun 2016 18:18:55 +0000 (18:18 +0000)]
[pdb] silence warnings about moving from a temporary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271420
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 1 Jun 2016 18:13:08 +0000 (18:13 +0000)]
[CodeView] Simplify StreamArray operator++
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271419
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 1 Jun 2016 18:13:06 +0000 (18:13 +0000)]
[CodeView] Make sure StreamRef::readBytes doesn't read too much
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271418
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 1 Jun 2016 18:13:04 +0000 (18:13 +0000)]
[PDB] Make ModStream::symbols report errors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271417
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 1 Jun 2016 18:13:02 +0000 (18:13 +0000)]
[PDB] Silence sign comparison warnings in MappedBlockStreamTest
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271416
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Wed, 1 Jun 2016 18:12:01 +0000 (18:12 +0000)]
Claim NoAlias if two GEPs index different fields of the same struct
Patch by Taewook Oh
Summary: Patch for Bug 27478. Make BasicAliasAnalysis claims NoAlias if two GEPs index different fields of the same structure.
Reviewers: hfinkel, dberlin
Subscribers: dberlin, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D20665
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271415
91177308-0d34-0410-b5e6-
96231b3b80d8
Than McIntosh [Wed, 1 Jun 2016 17:55:10 +0000 (17:55 +0000)]
Better fix for PR27903.
Summary:
Re-enable lifetime-start-on-first-use for stack coloring,
but explicitly disable it for slots with more than one start
or end lifetime marker.
Bug: 27903
Reviewers: wmi, tejohnson, qcolombet, gbiv
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20739
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271412
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 1 Jun 2016 17:31:24 +0000 (17:31 +0000)]
Fix the NDEBUG build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271411
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 1 Jun 2016 17:16:46 +0000 (17:16 +0000)]
[LV] For some IVs, use vector phis instead of widening in the loop body
Previously, whenever we needed a vector IV, we would create it on the fly,
by splatting the scalar IV and adding a step vector. Instead, we can create a
real vector IV. This tends to save a couple of instructions per iteration.
This only changes the behavior for the most basic case - integer primary
IVs with a constant step.
Differential Revision: http://reviews.llvm.org/D20315
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271410
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 1 Jun 2016 17:05:51 +0000 (17:05 +0000)]
[codeview] Translate basic DITypes to CV type records
Summary:
This is meant to be the tiniest step towards DIType to CV type index
translation that I could come up with. Whenever translation fails, we use type
index zero, which is the unknown type.
Reviewers: aaboud, zturner
Subscribers: llvm-commits, amccarth
Differential Revision: http://reviews.llvm.org/D20840
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271408
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 1 Jun 2016 16:47:45 +0000 (16:47 +0000)]
Reduce dependence on pointee types when deducing dereferenceability
Summary:
Change some of the internal interfaces in Loads.cpp to keep track of the
number of bytes we're trying to prove dereferenceable using an explicit
`Size` parameter.
Before this, the `Size` parameter was implicitly inferred from the
pointee type of the pointer whose dereferenceability we were trying to
prove, causing us to be conservative around bitcasts. This was
unfortunate since bitcast instructions are no-ops and should never
break optimizations. With an explicit `Size` parameter, we're more
precise (as shown in the test cases), and the code is simpler.
We should eventually move towards a `DerefQuery` struct that groups
together a base pointer, an offset, a size and an alignment; but this
patch is a first step.
Reviewers: apilipenko, dblaikie, hfinkel, reames
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D20764
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271406
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 1 Jun 2016 16:41:12 +0000 (16:41 +0000)]
[libFuzzer] when an invalid flag is given, warn, but don't crash
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271404
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 1 Jun 2016 16:13:10 +0000 (16:13 +0000)]
[IR] Disallow loading and storing unsized types
Summary:
It isn't clear what is the operational meaning of loading or storing an
unsized types, since it cannot be lowered into something meaningful.
Since there does not seem to be any practical need for it either, make
such loads and stores illegal IR.
Reviewers: majnemer, chandlerc
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D20846
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271402
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 1 Jun 2016 14:26:54 +0000 (14:26 +0000)]
MappedBlockStreamTest.cpp: Appease msc18 to avoid initializer for std::vector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271397
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Wed, 1 Jun 2016 14:16:00 +0000 (14:16 +0000)]
Update usage(), make sure srcdir is really empty.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271396
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 1 Jun 2016 13:58:00 +0000 (13:58 +0000)]
[X86][SSE] Added non-temporal store tests for all 512-bit vector types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271393
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 1 Jun 2016 13:20:25 +0000 (13:20 +0000)]
[X86][SSE] Added non-temporal store tests for all 256-bit vector types
Also added KNL AVX-512 checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271391
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 1 Jun 2016 13:05:00 +0000 (13:05 +0000)]
[X86][SSE] Added non-temporal store tests for all 128-bit integer vector types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271389
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 1 Jun 2016 12:02:37 +0000 (12:02 +0000)]
Adding back-end support to two bit scanning intrinsics
Adding LLVM back-end support to two intrinsics dealing with bit scan: _bit_scan_forward and _bit_scan_reverse.
Their functionality is as described in Intel intrinsics guide:
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_bit_scan_forward&expand=371,370
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_bit_scan_reverse&expand=371,370
Commit on behalf of Omer Paparo Bivas
Differential Revision: http://reviews.llvm.org/D19915
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271386
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Wed, 1 Jun 2016 12:01:01 +0000 (12:01 +0000)]
[ARM] Add additional matching for UBFX instructions
This adds an additional matcher to select UBFX(..) from SRL(AND(..)) in
ARMISelDAGToDAG to help with code size.
Patch by David Green.
Differential Revision: http://reviews.llvm.org/D20667
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271384
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 1 Jun 2016 11:15:25 +0000 (11:15 +0000)]
Fix off-by-one error in max integer functions
I recently added these functions, but implemented them poorly. This
fixes that.
Sorry for the spam.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271380
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 1 Jun 2016 09:39:42 +0000 (09:39 +0000)]
Revert "Fix up the definition of the integer max function"
This reverts commit
eadf45dafe4597589f0f07f665bb4d1faf7a63fe.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271376
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 1 Jun 2016 09:21:42 +0000 (09:21 +0000)]
Fix up the definition of the integer max function
Technically they were returning MAXIMUM+1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271375
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Dewhurst [Wed, 1 Jun 2016 08:48:56 +0000 (08:48 +0000)]
[Sparc] Allow passing of empty structs.
Passing an empty struct as a function call argument is now supported.
unit tests for various scenarios added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271374
91177308-0d34-0410-b5e6-
96231b3b80d8
Dylan McKay [Wed, 1 Jun 2016 07:58:15 +0000 (07:58 +0000)]
Add max/min functions to MathExtras.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271371
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 1 Jun 2016 05:57:55 +0000 (05:57 +0000)]
Revert r271362 "[AVX512] Remove masked load intrinsics. Clang now emits generic masked load intrinsics instead."
Looks like something isn't quite right still. Also forgot to move the test cases to an autoupgrade test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271363
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 1 Jun 2016 05:35:16 +0000 (05:35 +0000)]
[AVX512] Remove masked load intrinsics. Clang now emits generic masked load intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271362
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 1 Jun 2016 02:58:40 +0000 (02:58 +0000)]
DwarfDebug: Simplify. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271360
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Wed, 1 Jun 2016 01:59:58 +0000 (01:59 +0000)]
[MC] Rename EmitFill to emitFill
This is to match the overloaded variants as well as the new style.
Differential Revision: http://reviews.llvm.org/D20690
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271359
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 1 Jun 2016 01:17:57 +0000 (01:17 +0000)]
IR: Allow multiple global metadata attachments with the same type.
This will be necessary to allow the global merge pass to attach
multiple debug info metadata nodes to global variables once we reverse
the edge from DIGlobalVariable to GlobalVariable.
Differential Revision: http://reviews.llvm.org/D20414
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271358
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 1 Jun 2016 01:02:32 +0000 (01:02 +0000)]
Reference gdb python type printer scripts from SmallString, SmallVector, ArrayRef, and StringRef
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271357
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 1 Jun 2016 01:00:36 +0000 (01:00 +0000)]
DAGCombiner: Fix broken size check in isAlias
This should have been converting the size to bytes, but wasn't really.
These should probably all be using getStoreSize instead.
I haven't been able to come up with a meaningful testcase for this.
I can trigger it using combinations of struct loads and stores,
but can't observe a difference in non-broken testcases.
isAlias is only really used during store merging, so I'm not sure how
to get into the vector splitting situation the comment describes
since store merging is only done before type legalization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271356
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 1 Jun 2016 00:30:15 +0000 (00:30 +0000)]
DebugInfoPDBTests: Update libdeps for r271346.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271355
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Wed, 1 Jun 2016 00:10:19 +0000 (00:10 +0000)]
[obj2yaml] One more attempt at fixing msan
Bot URL:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/11834/steps/check-llvm%20msan/logs/stdio
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271353
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 31 May 2016 23:39:31 +0000 (23:39 +0000)]
llvm-pdbdump-fuzzer: fix the build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271352
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 31 May 2016 23:14:26 +0000 (23:14 +0000)]
[Orc] Add conversion to/from RuntimeDyld::SymbolInfo for JITSymbol.
This tidies up some code that was manually constructing RuntimeDyld::SymbolInfo
instances from JITSymbols. It will save more mess in the future when
JITSymbol::getAddress is extended to return an Expected<TargetAddress> rather
than just a TargetAddress, since we'll be able to embed the error checking in
the conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271350
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Tue, 31 May 2016 23:01:54 +0000 (23:01 +0000)]
Add support for metadata attachments for global variables.
This patch adds an IR, assembly and bitcode representation for metadata
attachments for globals. Future patches will port existing features to use
these new attachments.
Differential Revision: http://reviews.llvm.org/D20074
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271348
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 31 May 2016 22:41:52 +0000 (22:41 +0000)]
[pdb] Add unit tests for PDB MappedBlockStream and zero copy
Differential Revision: http://reviews.llvm.org/D20837
Reviewed By: ruiu
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271346
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 31 May 2016 22:38:06 +0000 (22:38 +0000)]
CodeGen: Refactor renameDisconnectedComponents() as a pass
Refactor LiveIntervals::renameDisconnectedComponents() to be a pass.
Also change the name to "RenameIndependentSubregs":
- renameDisconnectedComponents() worked on a MachineFunction at a time
so it is a natural candidate for a machine function pass.
- The algorithm is testable with a .mir test now.
- This also fixes a problem where the lazy renaming as part of the
MachineScheduler introduced IMPLICIT_DEF instructions after the number
of a nodes in a region were counted leading to a mismatch.
Differential Revision: http://reviews.llvm.org/D20507
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271345
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 31 May 2016 22:32:54 +0000 (22:32 +0000)]
Speculative build fix for codeview type dumper API change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271344
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin B. Smith [Tue, 31 May 2016 22:00:12 +0000 (22:00 +0000)]
[X86]: Add a pattern that uses GR16_ABCD rather than GR32_ABCD to avoid falsely marking whole 32 bit register as live.
Differential Revision: http://reviews.llvm.org/D20649
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271341
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 31 May 2016 21:59:59 +0000 (21:59 +0000)]
ARM: Improve/fix comment in recently added test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271340
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 31 May 2016 21:39:12 +0000 (21:39 +0000)]
ARM: Do not attempt to modify register class of physregs.
Physregs have no associated register class, do not attempt to modify it
in Thumb2InstrInfo::storeRegToStackSlot()/loadFromStackSlot().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271339
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 31 May 2016 21:00:08 +0000 (21:00 +0000)]
[obj2yaml] Trying to make msan happy
Failing bot:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/13302/steps/check-llvm%20msan/logs/stdio
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271334
91177308-0d34-0410-b5e6-
96231b3b80d8
Guozhi Wei [Tue, 31 May 2016 20:41:19 +0000 (20:41 +0000)]
[SLP] Pass in correct alignment when query memory access cost
This patch fixes bug https://llvm.org/bugs/show_bug.cgi?id=27897.
When query memory access cost, current SLP always passes in alignment value of 1 (unaligned), so it gets a very high cost of scalar memory access, and wrongly vectorize memory loads in the test case.
It can be fixed by simply giving correct alignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271333
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Tue, 31 May 2016 20:35:34 +0000 (20:35 +0000)]
Change llvm-objdump, llvm-nm and llvm-size when reporting an object file error
when the object is from a slice of a Mach-O Universal Binary use something like
"foo.o (for architecture i386)" as part of the error message when expected.
Also fixed places in these tools that were ignoring object file errors from
MachOUniversalBinary::getAsObjectFile() when the code moved on to see if
the slice was an archive.
To do this MachOUniversalBinary::getAsObjectFile() and
MachOUniversalBinary::getObjectForArch() were changed from returning
ErrorOr<...> to Expected<...> then that was threaded up to its users.
Converting these interfaces to Expected<> from ErrorOr<> does involve
touching a number of places. To contain the changes for now the use of
errorToErrorCode() is still used in two places yet to be fully converted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271332
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 31 May 2016 20:21:32 +0000 (20:21 +0000)]
[CMake] Update to requiring CMake 3.4.3
Summary:
This is as per the discussions on developer lists:
http://lists.llvm.org/pipermail/llvm-dev/2016-April/098780.html
http://lists.llvm.org/pipermail/llvm-dev/2016-May/100058.html
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271325
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Tue, 31 May 2016 19:55:05 +0000 (19:55 +0000)]
[CFLAA] Don't link GEP pointers to GEP indices.
Code like the following is considered broken, and doesn't need to be
supported by our AA magicks:
void getFoo(int *P) {
int *PAlias = (int *)((char *)NULL + (uintptr_t)P);
}
This patch makes CFLAA drop support for code like this.
Patch by Jia Chen.
Differential Revision: http://reviews.llvm.org/D20775
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271322
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Tue, 31 May 2016 18:50:25 +0000 (18:50 +0000)]
[CodeGen] Promote FMINNAN/FMAXNAN like other binops.
We think it's OK to generate half fminnan because it's legal for the
transform-to type (f32; r245196). However, PromoteFloatRes was missing
the case; simply promote like the other binops, including minnum.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271317
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Tue, 31 May 2016 18:50:21 +0000 (18:50 +0000)]
[CodeGen] Don't mark FMINNUM/FMAXNUM Expand twice. NFC.
They're already in the all_valuetypes() loop above.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271316
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Tue, 31 May 2016 18:50:05 +0000 (18:50 +0000)]
[Docs] CodeGen has supported vector icmp/fcmp for a long time.
The IR support is already well-documented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271315
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 31 May 2016 18:45:36 +0000 (18:45 +0000)]
[codeview] Improve readability of type record assembly
Adds the method MCStreamer::EmitBinaryData, which is usually an alias
for EmitBytes. In the MCAsmStreamer case, it is overridden to emit hex
dump output like this:
.byte 0x0e, 0x00, 0x08, 0x10
.byte 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x10, 0x00, 0x00
Also, when verbose asm comments are enabled, this patch prints the dump
output for each comment before its record, like this:
# ArgList (0x1000) {
# TypeLeafKind: LF_ARGLIST (0x1201)
# NumArgs: 0
# Arguments [
# ]
# }
.byte 0x06, 0x00, 0x01, 0x12
.byte 0x00, 0x00, 0x00, 0x00
This should make debugging easier and testing more convenient.
Reviewers: aaboud
Subscribers: majnemer, zturner, amccarth, aaboud, llvm-commits
Differential Revision: http://reviews.llvm.org/D20711
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271313
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 31 May 2016 18:31:14 +0000 (18:31 +0000)]
Delete AArch64II::MO_CONSTPOOL.
A constant pool holding the address of a variable in equivalent to
a got entry. It produces exactly the same instruction sequence as a
got use and unlike a got use this is not uniqued by the linker.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271311
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 31 May 2016 18:15:23 +0000 (18:15 +0000)]
[codeview] Add a CVTypeDumper::dump(ArrayRef<uint8_t>) overload
This is a convenient wrapper when the type record is already laid out as
bytes in memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271309
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 31 May 2016 17:53:22 +0000 (17:53 +0000)]
[PM] BDCE: Fix caching of analyses.
Another chapter in the story. GlobalsAA should be preserved, as
well as the CFG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271307
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Tue, 31 May 2016 17:52:29 +0000 (17:52 +0000)]
[mips] Remove tests which should have been deleted.
The two xfail tests for mis32r6 & mips64r6 were supposed
to be removed in r271301.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271306
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 31 May 2016 17:39:39 +0000 (17:39 +0000)]
[PM] ADCE: Fix caching of analyses.
When this pass was originally ported, AA wasn't available for the
new PM. Now it is, so we can cache properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271303
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Tue, 31 May 2016 17:34:42 +0000 (17:34 +0000)]
[mips] Enforce compact branch register restrictions
Enforce compact branch register restrictions such as the use of the zero
register, both operands being the same register. Emit clear error in such
cases as the issue is subtle.
For bovc and bnvc, silently fixup such cases when emitting objects directly,
like LLVM started doing in rL269899.
Reviewers: vkalintiris, dsanders
Differential Review: http://reviews.llvm.org/D20475
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271301
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 31 May 2016 17:26:36 +0000 (17:26 +0000)]
[obj2yaml][yaml2obj] Support for reading and dumping the MachO export trie
The MachO export trie is a serially encoded trie keyed by symbol name. This code parses the trie and preserves the structure so that it can be dumped again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271300
91177308-0d34-0410-b5e6-
96231b3b80d8
Erik Eckstein [Tue, 31 May 2016 17:20:23 +0000 (17:20 +0000)]
Fix a crash in MergeFunctions related to ordering of weak/strong functions
The assumption, made in insert() that weak functions are always inserted after strong functions,
is only true in the first round of adding functions.
In subsequent rounds this is no longer guaranteed , because we might remove a strong function from the tree (because it's modified) and add it later,
where an equivalent weak function already exists in the tree.
This change removes the assert in insert() and explicitly enforces a weak->strong order.
This also removes the need of two separate loops in runOnModule().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271299
91177308-0d34-0410-b5e6-
96231b3b80d8
Qin Zhao [Tue, 31 May 2016 17:14:02 +0000 (17:14 +0000)]
[esan|cfrag] Create the skeleton of cfrag variable for the runtime
Summary:
Creates a global variable containing preliminary information
for the cache-fragmentation tool runtime.
Passes a pointer to the variable (null if no variable is created) to the
compilation unit init and exit routines in the runtime.
Reviewers: aizatsky, bruening
Subscribers: filcab, kubabrecka, bruening, kcc, vitalybuka, eugenis, llvm-commits, zhaoqin
Differential Revision: http://reviews.llvm.org/D20541
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271298
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 31 May 2016 16:57:45 +0000 (16:57 +0000)]
AMDGPU: Remove unused address space
Also return a single StringRef instead of building a string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271296
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 31 May 2016 15:31:55 +0000 (15:31 +0000)]
Add a use of shouldAssumeDSOLocal to ARM.
Now this code path knows about position independent executables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271290
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 31 May 2016 14:27:10 +0000 (14:27 +0000)]
[Hexagon] Disable expanding MUX instructions that define a subregister
The code in HexagonExpandCondsets.cpp does not handle those cases at the
moment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271281
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Tue, 31 May 2016 13:45:05 +0000 (13:45 +0000)]
Do not modify a std::vector while looping it.
Introduced in r271244, this is probably undefined behaviour and asserts when
compiled with Visual C++ debug mode.
On further note, the loop is quadratic with regard to the number of successors
since removeSuccessor is linear and could probably be modified to linear time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271278
91177308-0d34-0410-b5e6-
96231b3b80d8
Ranjeet Singh [Tue, 31 May 2016 12:39:30 +0000 (12:39 +0000)]
[ARM] Add backend support for load/store intrinsics.
Added support to map intrinsics
__builtin_arm_{ldc,ldcl,ldc2,ldc2l,stc,stcl,stc2,stc2l}
to their ARM instructions.
Differential Revision: http://reviews.llvm.org/D20564
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271271
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 31 May 2016 12:04:35 +0000 (12:04 +0000)]
[X86][SSE] Add load-folding patterns for (V)CVTDQ2PD (PR27291)
Added patterns for (V)CVTDQ2PD -> 2f64 loading from a 64-bit source.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271269
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Dardis [Tue, 31 May 2016 09:54:55 +0000 (09:54 +0000)]
[mips] bnec/beqc register constraint fix
beqc and bnec cannot have $rs == $rt. Inhibit compact branch creation
if that would occur.
Reviewers: vkalintiris, dsanders
Differential Revision: http://reviews.llvm.org/D20624
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271260
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Tue, 31 May 2016 08:04:21 +0000 (08:04 +0000)]
[AVX512] Fix intrinsic vcvtps2ph lowering.
Differential Revision: http://reviews.llvm.org/D20788
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271255
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Tue, 31 May 2016 07:43:39 +0000 (07:43 +0000)]
Fix intrinsic vbroadcast{i32|f32}x2 lowering.
Differential Revision: http://reviews.llvm.org/D20780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271254
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 May 2016 06:42:51 +0000 (06:42 +0000)]
[AVX512] Remove gcc builtin name from masked load intrinsics so they can be custom handled by clang to create generic masked load intrinsics instead of using the x86 specific ones.
The intrinsics will be removed in a future commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271252
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 31 May 2016 01:50:02 +0000 (01:50 +0000)]
[AVX512] Remove masked store intrinsics. Clang now emits generic masked store intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271245
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Tue, 31 May 2016 01:48:07 +0000 (01:48 +0000)]
X86: permit using SjLj EH on x86 targets as an option
This adds support to the backed to actually support SjLj EH as an exception
model. This is *NOT* the default model, and requires explicitly opting into it
from the frontend. GCC supports this model and for MinGW can still be enabled
via the `--using-sjlj-exceptions` options.
Addresses PR27749!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271244
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 31 May 2016 01:24:40 +0000 (01:24 +0000)]
[llvm-pdbdump-fuzzer] Add a fuzzer for llvm-pdbdump
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271243
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 31 May 2016 01:24:33 +0000 (01:24 +0000)]
[llvm-dwarfdump-fuzzer] Get this compiling again
Looks like the dwarfdump fuzzer has bitrotted, update it to take into
account updates to the libobject API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271242
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 30 May 2016 23:15:56 +0000 (23:15 +0000)]
[X86] Remove SSE/AVX unaligned store intrinsics as clang no longer uses them. Auto upgrade to native unaligned store instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271236
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 30 May 2016 22:54:14 +0000 (22:54 +0000)]
[X86] Use update_llc_test_checks.py to re-generate a test in preparation for an upcoming commit. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271234
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 30 May 2016 22:54:12 +0000 (22:54 +0000)]
[X86] Simplify and remove some unnecessary auto-upgrade code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271233
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 30 May 2016 22:54:05 +0000 (22:54 +0000)]
[X86] Reduce the number of string compares in the autoupgrade logic by checking more prefixes instead of complete matches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271232
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 30 May 2016 20:18:53 +0000 (20:18 +0000)]
Fix a crash when producing COFF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271229
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 May 2016 19:50:56 +0000 (19:50 +0000)]
[X86][XOP] Split off auto-upgraded xop intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271228
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 May 2016 19:14:37 +0000 (19:14 +0000)]
[X86][SSE] Renamed pmovxrm tests
These aren't intrinsics anymore - as discussed on D20686
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271226
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 30 May 2016 19:03:26 +0000 (19:03 +0000)]
[Kaleidoscope][BuildingAJIT] Finish off Chapter 1.
* Various tidy-up and streamlining of existing discussion.
* Describes findSymbol and removeModule.
Chapter 1 is now rough but essentially complete in terms of content.
Feedback, patches etc. very welcome.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271225
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 May 2016 18:49:57 +0000 (18:49 +0000)]
[X86][AVX2] Regenerated AVX2 extension tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271224
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 May 2016 18:42:51 +0000 (18:42 +0000)]
[X86][SSE] Updated storeu fast-isel tests to match clang builtin tests
Since rL271214 the headers have no longer used the storeu intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271222
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 30 May 2016 18:18:44 +0000 (18:18 +0000)]
[X86][SSE2] Updated _mm_store_pd1/_mm_store1_pd fast-isel tests to match D20617
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271220
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 30 May 2016 16:53:19 +0000 (16:53 +0000)]
[Kaleidoscope][BuildingAJIT] Add stub Chapter 5 text.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271213
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Mon, 30 May 2016 08:28:34 +0000 (08:28 +0000)]
[BPF] Remove exit-on-error from tests (PR27768, PR27769)
The exit-on-error flag is necessary to avoid some assertions/unreachables. We
can get past them by creating a few dummy nodes.
Fixes PR27768, PR27769.
Differential Revision: http://reviews.llvm.org/D20726
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271200
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 30 May 2016 01:37:39 +0000 (01:37 +0000)]
[IndVars] Assert that the incoming IR is in LCSSA
Since we already assert that the outgoing IR is in LCSSA, it is easy to
get misled into thinking that -indvars broke LCSSA if the incoming IR is
non-LCSSA. Checking this pre-condition will make such cases break in
more obvious ways.
Inspired by (but does _not_ fix) PR26682.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271196
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 30 May 2016 01:18:32 +0000 (01:18 +0000)]
[Kaleidoscope][BuildingAJIT] Don't build Chapter 5 on Windows for now.
The TCP setup code is currently *nix based and does not build on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271194
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 30 May 2016 00:09:26 +0000 (00:09 +0000)]
[Kaleidoscope][BuildingAJIT] Add code for Chapter 5 - remote JITing.
This chapter demonstrates lazily JITing from ASTs with the expressions being
executed on a remote machine via a TCP connection. It needs some polish, but is
substantially complete.
Currently x86-64 SysV ABI (Darwin and Linux) only, but other architectures
can be supported by changing the server code to use alternative ABI support
classes from llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271193
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Sun, 29 May 2016 22:09:54 +0000 (22:09 +0000)]
Make it easier to process merges in a normal buildable directory tree by
allowing the user to specify the base directory of the checkout.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271192
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sun, 29 May 2016 21:42:00 +0000 (21:42 +0000)]
[IndVarSimplify] Extract the logic of `-indvars` out into a class; NFC
This will be used later to port IndVarSimplify to the new pass manager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271190
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 29 May 2016 21:17:13 +0000 (21:17 +0000)]
[Orc] Fix a type in the OrcRemoteClientUtility.
This function failed to type-check as it was. No test case yet (we only have
regression tests for the remote-JIT code, and LLI don't use this function), but
an upcoming chapter of the Kaleidoscope Building A JIT tutorials will use
this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271189
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Sun, 29 May 2016 15:58:57 +0000 (15:58 +0000)]
[libFuzzer] fix a use-after-free (!) in libFuzzer caused by r270905: that CL caused a push_back in the main corpus invalidating the vector<> iterators in rare cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271186
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 29 May 2016 10:46:35 +0000 (10:46 +0000)]
Remove some 'const' specifiers that do nothing but prevent moving the argument.
Found by clang-tidy's misc-move-const-arg. While there drop some
obsolete c_str() calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@271181
91177308-0d34-0410-b5e6-
96231b3b80d8