platform/upstream/llvm.git
5 years ago[SymbolFile] Rename ParseFunctionBlocks to ParseBlocksRecursive.
Zachary Turner [Mon, 14 Jan 2019 22:40:41 +0000 (22:40 +0000)]
[SymbolFile] Rename ParseFunctionBlocks to ParseBlocksRecursive.

This method took a SymbolContext but only actually cared about the
case where the m_function member was set.  Furthermore, it was
intended to be implemented to parse blocks recursively despite not
documenting this in its name.  So we change the name to indicate
that it should be recursive, while also limiting the function
parameter to be a Function&.  This lets the caller know what is
required to use it, as well as letting new implementers know what
kind of inputs they need to be prepared to handle.

llvm-svn: 351131

5 years agoUpdate GettingStarted guide to recommend that people use the new
James Y Knight [Mon, 14 Jan 2019 22:27:32 +0000 (22:27 +0000)]
Update GettingStarted guide to recommend that people use the new
official Git repository.

Remove the directions for using git-svn, and demote the prominence of
the svn instructions.

Also, fix a few other issues while I'm in there:

* Mention LLVM_ENABLE_PROJECTS more.
* Getting started doesn't need to mention test-suite, but should
  mention clang and the other projects.
* Remove mentions of "configure", since that's long gone.

I've also adjusted a few other mentions of svn to point to github, but
have not done so comprehensively.

Differential Revision: https://reviews.llvm.org/D56654

llvm-svn: 351130

5 years agoRevert "[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors"
Nikita Popov [Mon, 14 Jan 2019 22:18:39 +0000 (22:18 +0000)]
Revert "[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors"

This reverts commit r351125.

I missed test changes in an SLPVectorizer test, due to the cost model
changes. Reverting for now.

llvm-svn: 351129

5 years ago[Object] Return a symbol_iterator, rather than a basic_symbol_iterator, from
Lang Hames [Mon, 14 Jan 2019 22:05:12 +0000 (22:05 +0000)]
[Object] Return a symbol_iterator, rather than a basic_symbol_iterator, from
MachOObjectFile::getSymbolByIndex.

ObjectFile derivatives should prefer symbol_iterator/SymbolRef over
basic_symbol_iterator/BasicSymbolRef where possible, as the former
retain their link to the ObjectFile (rather than a SymbolicFile) and provide
more functionality.

No test for this: Existing code is working, and we don't have (m)any libObject
unit tests. I'll think about how we can test more systematically going forward.

llvm-svn: 351128

5 years ago[WebAssembly][FastISel] Do not assume naive CmpInst lowering
Thomas Lively [Mon, 14 Jan 2019 22:03:43 +0000 (22:03 +0000)]
[WebAssembly][FastISel] Do not assume naive CmpInst lowering

Summary:
Fixes https://bugs.llvm.org/show_bug.cgi?id=40172. See
test/CodeGen/WebAssembly/PR40172.ll for an explanation.

Reviewers: dschuff, aheejin

Subscribers: nikic, llvm-commits, sunfish, jgravelle-google, sbc100

Differential Revision: https://reviews.llvm.org/D56457

llvm-svn: 351127

5 years ago[llvm-ar] Temporarily remove failing test which is breaking buildbots
Jordan Rupprecht [Mon, 14 Jan 2019 21:58:15 +0000 (21:58 +0000)]
[llvm-ar] Temporarily remove failing test which is breaking buildbots

llvm-svn: 351126

5 years ago[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors
Nikita Popov [Mon, 14 Jan 2019 21:43:30 +0000 (21:43 +0000)]
[CodeGen][X86] Expand USUBSAT to UMAX+SUB, also for vectors

Related to https://bugs.llvm.org/show_bug.cgi?id=40123.

Rather than scalarizing, expand a vector USUBSAT into UMAX+SUB,
which produces much better code for X86.

Differential Revision: https://reviews.llvm.org/D56636

llvm-svn: 351125

5 years ago[opaque pointer types] Update GetElementPtr creation APIs to
James Y Knight [Mon, 14 Jan 2019 21:39:35 +0000 (21:39 +0000)]
[opaque pointer types] Update GetElementPtr creation APIs to
consistently accept a pointee-type argument.

Note: this also adds a new C API and soft-deprecates the old C API.

Differential Revision: https://reviews.llvm.org/D56559

llvm-svn: 351124

5 years ago[opaque pointer types] Update LoadInst creation APIs to consistently
James Y Knight [Mon, 14 Jan 2019 21:37:53 +0000 (21:37 +0000)]
[opaque pointer types] Update LoadInst creation APIs to consistently
accept a return-type argument.

Note: this also adds a new C API and soft-deprecates the old C API.

Differential Revision: https://reviews.llvm.org/D56558

llvm-svn: 351123

5 years ago[opaque pointer types] Update InvokeInst creation APIs to consistently
James Y Knight [Mon, 14 Jan 2019 21:37:48 +0000 (21:37 +0000)]
[opaque pointer types] Update InvokeInst creation APIs to consistently
accept a callee-type argument.

Note: this also adds a new C API and soft-deprecates the old C API.

Differential Revision: https://reviews.llvm.org/D56557

llvm-svn: 351122

5 years ago[opaque pointer types] Update CallInst creation APIs to consistently
James Y Knight [Mon, 14 Jan 2019 21:37:42 +0000 (21:37 +0000)]
[opaque pointer types] Update CallInst creation APIs to consistently
accept a callee-type argument.

Note: this also adds a new C API and soft-deprecates the old C API.

Differential Revision: https://reviews.llvm.org/D56556

llvm-svn: 351121

5 years ago[llvm-ar] Flatten thin archives.
Jordan Rupprecht [Mon, 14 Jan 2019 21:11:46 +0000 (21:11 +0000)]
[llvm-ar] Flatten thin archives.

Summary:
Normal behavior for GNU ar is to flatten thin archives when adding them to another thin archive, i.e. add the members directly instead of nesting the archive.

Some refactoring done as part of this patch to ease things:
 - Consolidate `addMember`/`addLibMember` methods
 - Rename `addMember` to `addChildMember` to make it more visibly different at the call site that an archive child is passed instead of a regular member
 - Pass in a separate vector and splice it back into position instead of passing a vector + optional Pos (which makes expanding libs tricky)

This fixes PR37530 as raised by https://github.com/ClangBuiltLinux/linux/issues/279.

Reviewers: mstorsjo, pcc, ruiu

Reviewed By: mstorsjo

Subscribers: llvm-commits, tpimh, nickdesaulniers

Differential Revision: https://reviews.llvm.org/D56508

llvm-svn: 351120

5 years ago[compiler-rt] UBSan: Disable 3 of the new alignment assumption tests on android.
Roman Lebedev [Mon, 14 Jan 2019 21:02:25 +0000 (21:02 +0000)]
[compiler-rt] UBSan: Disable 3 of the new alignment assumption tests on android.

Once again, just like with r338296, these tests seem to only have
failed sanitizer-x86_64-linux-android, so let's just disable them,
since that seems like the pre-established practice here..

To be noted, they failed on some configs there, but not all,
so it is not XFAIL.

llvm-svn: 351119

5 years ago[SanitizerCoverage][NFC] Use appendToUsed instead of include
Jonathan Metzman [Mon, 14 Jan 2019 21:02:02 +0000 (21:02 +0000)]
[SanitizerCoverage][NFC] Use appendToUsed instead of include

Summary:
Use appendToUsed instead of include to ensure that
SanitizerCoverage's constructors are not stripped.

Also, use isOSBinFormatCOFF() to determine if target
binary format is COFF.

Reviewers: pcc

Reviewed By: pcc

Subscribers: hiraditya

Differential Revision: https://reviews.llvm.org/D56369

llvm-svn: 351118

5 years ago[compiler-rt] Add option to disable libc++ build
Shoaib Meenai [Mon, 14 Jan 2019 20:33:30 +0000 (20:33 +0000)]
[compiler-rt] Add option to disable libc++ build

Having libc++ checked out doesn't necessarily mean it should be built;
for example, the same source tree might be used for multiple build
configurations, and libc++ might not build in some of those
configurations. Add an option to compiler-rt's build to disable building
libc++. This defaults to ON, so it shouldn't change any existing build
configurations.

Differential Revision: https://reviews.llvm.org/D56479

llvm-svn: 351117

5 years ago[ASTDump] NFC: Move dumping of QualType node to TextNodeDumper
Stephen Kelly [Mon, 14 Jan 2019 20:15:29 +0000 (20:15 +0000)]
[ASTDump] NFC: Move dumping of QualType node to TextNodeDumper

Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D56641

llvm-svn: 351116

5 years ago[ASTDump] NFC: Canonicalize handling of TypeLocInfo
Stephen Kelly [Mon, 14 Jan 2019 20:13:09 +0000 (20:13 +0000)]
[ASTDump] NFC: Canonicalize handling of TypeLocInfo

Summary: No need to avoid the Visit method.

Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D56640

llvm-svn: 351115

5 years ago[ASTDump] NFC: Move Type Visit implementation to TextNodeDumper
Stephen Kelly [Mon, 14 Jan 2019 20:11:02 +0000 (20:11 +0000)]
[ASTDump] NFC: Move Type Visit implementation to TextNodeDumper

Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D56639

llvm-svn: 351114

5 years ago[lit] llvm-lit.in: specify file encoding to UTF-8
George Karpenkov [Mon, 14 Jan 2019 20:02:11 +0000 (20:02 +0000)]
[lit] llvm-lit.in: specify file encoding to UTF-8

This is needed because otherwise if source dir is at location whose path
contains non-ASCII character then python will complain about
SyntaxError.

SyntaxError: Non-ASCII character '\xc4' in file
/home/D?vis/libc++/src/build/bin/llvm-lit on line 16, but no encoding
declared; see http://python.org/dev/peps/pep-0263/ for details

Patch by davispuh

Differential Revision: https://reviews.llvm.org/D50201

llvm-svn: 351113

5 years agoNFC: Fix nits I missed before
Stephen Kelly [Mon, 14 Jan 2019 19:50:34 +0000 (19:50 +0000)]
NFC: Fix nits I missed before

llvm-svn: 351112

5 years ago[X86] Silence a -Wparentheses warning on gcc. NFC
Craig Topper [Mon, 14 Jan 2019 19:44:02 +0000 (19:44 +0000)]
[X86] Silence a -Wparentheses warning on gcc. NFC

llvm-svn: 351111

5 years ago[compiler-rt] Update ubsan_interface.inc with alignment assumption handlers
Roman Lebedev [Mon, 14 Jan 2019 19:35:12 +0000 (19:35 +0000)]
[compiler-rt] Update ubsan_interface.inc with alignment assumption handlers

Somehow this escaped my local testing.
A follow-up for r351106.

llvm-svn: 351110

5 years ago[test] Disable sunrpc tests when rpc/xdr.h is missing
Michal Gorny [Mon, 14 Jan 2019 19:18:34 +0000 (19:18 +0000)]
[test] Disable sunrpc tests when rpc/xdr.h is missing

Disable tests requiring sunrpc when the relevant headers are missing.
In order to accommodate that, move the header check
from sanitizer_common to base-config-ix, and define the check result
as a global variable there.  Use it afterwards both for definition
needed by sanitizer_common, and to control 'sunrpc' test feature.

While at it, remove the append_have_file_definition macro that was used
only once, and no longer fits the split check-definition.

Bug report: https://github.com/google/sanitizers/issues/974

Differential Revision: https://reviews.llvm.org/D47819

llvm-svn: 351109

5 years agoImprove a -Wunguarded-availability note
Erik Pilkington [Mon, 14 Jan 2019 19:17:31 +0000 (19:17 +0000)]
Improve a -Wunguarded-availability note

Mention the deployment target, and don't say "partial" which doesn't
really mean anything to users.

rdar://problem/33601513

Differential revision: https://reviews.llvm.org/D56523

llvm-svn: 351108

5 years agoexpand DIContext interface a bit
David Callahan [Mon, 14 Jan 2019 19:11:32 +0000 (19:11 +0000)]
expand DIContext interface a bit

Summary:
This allows a bit more control for scenarios where client might
modifiy a DIContext

Reviewers: twoh, Kader, modocache

Reviewed By: Kader

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D56505

llvm-svn: 351107

5 years ago[compiler-rt][UBSan] Sanitization for alignment assumptions.
Roman Lebedev [Mon, 14 Jan 2019 19:09:29 +0000 (19:09 +0000)]
[compiler-rt][UBSan] Sanitization for alignment assumptions.

Summary:
This is the compiler-rt part.
The clang part is D54589.

Reviewers: filcab, vsk, #sanitizers, vitalybuka, rsmith, morehouse

Reviewed By: morehouse

Subscribers: rjmccall, krytarowski, rsmith, kcc, srhines, kubamracek, dberris, llvm-commits

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54590

llvm-svn: 351106

5 years ago[clang][UBSan] Sanitization for alignment assumptions.
Roman Lebedev [Mon, 14 Jan 2019 19:09:27 +0000 (19:09 +0000)]
[clang][UBSan] Sanitization for alignment assumptions.

Summary:
UB isn't nice. It's cool and powerful, but not nice.
Having a way to detect it is nice though.
[[ https://wg21.link/p1007r3 | P1007R3: std::assume_aligned ]] / http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r2.pdf says:
```
We propose to add this functionality via a library function instead of a core language attribute.
...
If the pointer passed in is not aligned to at least N bytes, calling assume_aligned results in undefined behaviour.
```

This differential teaches clang to sanitize all the various variants of this assume-aligned attribute.

Requires D54588 for LLVM IRBuilder changes.
The compiler-rt part is D54590.

Reviewers: ABataev, craig.topper, vsk, rsmith, rnk, #sanitizers, erichkeane, filcab, rjmccall

Reviewed By: rjmccall

Subscribers: chandlerc, ldionne, EricWF, mclow.lists, cfe-commits, bkramer

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D54589

llvm-svn: 351105

5 years ago[llvm][IRBuilder] Introspection for CreateAlignmentAssumption*() functions
Roman Lebedev [Mon, 14 Jan 2019 19:09:15 +0000 (19:09 +0000)]
[llvm][IRBuilder] Introspection for CreateAlignmentAssumption*() functions

Summary:
Clang calls these functions to produce IR for assume-aligned attributes.
I would like to teach UBSAN to verify these assumptions.
For that, i need to access the final pointer on which the check is performed,
and the actual `icmp` that does the check.

The alternative to this would be to fully re-implement this in clang.

Reviewers: spatel, dneilson, craig.topper, dblaikie, hfinkel

Reviewed By: hfinkel

Subscribers: hfinkel, llvm-commits

Differential Revision: https://reviews.llvm.org/D54588

llvm-svn: 351104

5 years ago[X86][SSSE3] Bailout of lowerVectorShuffleAsPermuteAndUnpack for shuffle-with-zero...
Simon Pilgrim [Mon, 14 Jan 2019 19:07:26 +0000 (19:07 +0000)]
[X86][SSSE3] Bailout of lowerVectorShuffleAsPermuteAndUnpack for shuffle-with-zero (PR40306)

If we have PSHUFB and we're shuffling with a zero vector, then we are better off not doing VECTOR_SHUFFLE(UNPCK()) as we lose track of those zero elements.

llvm-svn: 351103

5 years agoIgnore PhiNodes when mapping sample profile data
David Callahan [Mon, 14 Jan 2019 19:05:59 +0000 (19:05 +0000)]
Ignore PhiNodes when mapping sample profile data

Summary: Like branch instructions, phi nodes frequently do not have debug information related to the block they are in and so they should be ignored.

Reviewers: danielcdh, twoh, Kader, wmi

Reviewed By: wmi

Subscribers: aprantl, llvm-commits

Differential Revision: https://reviews.llvm.org/D55094

llvm-svn: 351102

5 years agolld-link: Spelling fixes in comments and minor style tweaks
Nico Weber [Mon, 14 Jan 2019 19:05:21 +0000 (19:05 +0000)]
lld-link: Spelling fixes in comments and minor style tweaks

Changes a few things I noticed while reading this code.
- fix a few typos in comments
- remove two `auto` uses where the type wasn't clear to me
- add comment saying that two sequential checks for `if (SparseChunks[SectionNumber] == PendingComdat)` are intentional
- name two parameters

No behavior change.

Differential Revision: https://reviews.llvm.org/D56677

llvm-svn: 351101

5 years agoRevert r351051 "[clangd] Unlink VFS working dir from OS working dir."
Amara Emerson [Mon, 14 Jan 2019 18:59:17 +0000 (18:59 +0000)]
Revert r351051 "[clangd] Unlink VFS working dir from OS working dir."

The llvm commit r351050 broke some bots and was reverted.

llvm-svn: 351100

5 years ago[llvm-objcopy] [COFF] Remove unreferenced undefined externals with --strip-unneeded.
Martin Storsjo [Mon, 14 Jan 2019 18:56:47 +0000 (18:56 +0000)]
[llvm-objcopy] [COFF] Remove unreferenced undefined externals with --strip-unneeded.

Differential Revision: https://reviews.llvm.org/D56660

llvm-svn: 351099

5 years ago[llvm-objcopy] [COFF] Test absolute symbols wrt --strip-unneeded and --discard-all...
Martin Storsjo [Mon, 14 Jan 2019 18:56:27 +0000 (18:56 +0000)]
[llvm-objcopy] [COFF] Test absolute symbols wrt --strip-unneeded and --discard-all. NFC.

Differential Revision: https://reviews.llvm.org/D56659

llvm-svn: 351098

5 years ago[analyzer] [PR39792] false positive on strcpy targeting struct members
George Karpenkov [Mon, 14 Jan 2019 18:54:48 +0000 (18:54 +0000)]
[analyzer] [PR39792] false positive on strcpy targeting struct members

Patch by Pierre van Houtryve.

Differential Revision: https://reviews.llvm.org/D55226

llvm-svn: 351097

5 years ago[analyzer] [NFC] Remove unused undefined method.
George Karpenkov [Mon, 14 Jan 2019 18:54:35 +0000 (18:54 +0000)]
[analyzer] [NFC] Remove unused undefined method.

Wow, at no point the linker or compiler complaints about that!

llvm-svn: 351096

5 years agoRevert "Merge branch 'arcpatch-D55094'"
David Callahan [Mon, 14 Jan 2019 18:49:27 +0000 (18:49 +0000)]
Revert "Merge branch 'arcpatch-D55094'"

This reverts commit a9788dd6587d67c856df74eedff5a6ad34ce8320, reversing
changes made to f1309ffebf718d16aec4fab83380556c660e2825.

unintended merge pushed

llvm-svn: 351095

5 years ago[MC][X86] Add test case for invalid use of "(%dx)" operand.
Nirav Dave [Mon, 14 Jan 2019 18:44:32 +0000 (18:44 +0000)]
[MC][X86] Add test case for invalid use of "(%dx)" operand.

llvm-svn: 351094

5 years ago[x86] lower extracted add/sub to horizontal vector math
Sanjay Patel [Mon, 14 Jan 2019 18:44:02 +0000 (18:44 +0000)]
[x86] lower extracted add/sub to horizontal vector math

add (extractelt (X, 0), extractelt (X, 1)) --> extractelt (hadd X, X), 0

This is the integer sibling to D56011.

There's an additional restriction to only to do this transform in the
case where we don't have extra extracts from the source vector. Without
that, we can fail to match larger horizontal patterns that are more
beneficial than this minimal case. An improvement to the more general
h-op lowering may allow us to remove the restriction here in a follow-up.

llvm-svn: 351093

5 years agoMerge branch 'arcpatch-D55094'
David Callahan [Mon, 14 Jan 2019 18:35:43 +0000 (18:35 +0000)]
Merge branch 'arcpatch-D55094'

llvm-svn: 351092

5 years agoRevert "[VFS] Allow multiple RealFileSystem instances with independent CWDs."
Amara Emerson [Mon, 14 Jan 2019 18:32:09 +0000 (18:32 +0000)]
Revert "[VFS] Allow multiple RealFileSystem instances with independent CWDs."
This reverts commit r351079, r351069 and r351050 as it broken the greendragon bots on macOS.

llvm-svn: 351091

5 years agogn build: Unbreak mac build after r350977
Nico Weber [Mon, 14 Jan 2019 18:30:35 +0000 (18:30 +0000)]
gn build: Unbreak mac build after r350977

llvm-svn: 351090

5 years ago[WebAssembly] Remove old builtins
Dan Gohman [Mon, 14 Jan 2019 18:28:10 +0000 (18:28 +0000)]
[WebAssembly] Remove old builtins

This removes the old grow_memory and mem.grow-style builtins, leaving just
the memory.grow-style builtins.

Differential Revision: https://reviews.llvm.org/D56645

llvm-svn: 351089

5 years agogn build: Fix path to gn.py in docs
Nico Weber [Mon, 14 Jan 2019 18:26:55 +0000 (18:26 +0000)]
gn build: Fix path to gn.py in docs

llvm-svn: 351088

5 years agocmake: Don't install plugins used for examples or tests
Tom Stellard [Mon, 14 Jan 2019 18:25:35 +0000 (18:25 +0000)]
cmake: Don't install plugins used for examples or tests

Summary:
This patch drops install targets for LLVMHello.so,
TestPlugin.so, and BugpointPasses.so.

Reviewers: chandlerc, beanz, thakis, philip.pfaffe

Reviewed By: chandlerc

Subscribers: SquallATF, mgorny, llvm-commits

Differential Revision: https://reviews.llvm.org/D55965

llvm-svn: 351087

5 years ago[WebAssembly] Remove tests for old intrinsics.
Dan Gohman [Mon, 14 Jan 2019 18:25:29 +0000 (18:25 +0000)]
[WebAssembly] Remove tests for old intrinsics.

This is a followup to r351084 which removes the tests for the old
intrinsic names.

llvm-svn: 351086

5 years agogn build: svn propset svn:executable on utils/gn/gn.py
Nico Weber [Mon, 14 Jan 2019 18:24:44 +0000 (18:24 +0000)]
gn build: svn propset svn:executable on utils/gn/gn.py

llvm-svn: 351085

5 years ago[WebAssembly] Remove old intrinsics
Dan Gohman [Mon, 14 Jan 2019 18:23:45 +0000 (18:23 +0000)]
[WebAssembly] Remove old intrinsics

This removes the old grow_memory and mem.grow-style intrinsics, leaving just
the memory.grow-style intrinsics.

Differential Revision: https://reviews.llvm.org/D56645

llvm-svn: 351084

5 years ago[WebAssembly] Add a release notes blurb
Dan Gohman [Mon, 14 Jan 2019 18:20:30 +0000 (18:20 +0000)]
[WebAssembly] Add a release notes blurb

Bid farewell to LLVM_EXPERIMENTAL_TARGETS_TO_BUILD!

Differential Revision: https://reviews.llvm.org/D56648

llvm-svn: 351083

5 years ago[Sema] Expose a control flag for integer to pointer ext warning
Kristina Brooks [Mon, 14 Jan 2019 18:16:51 +0000 (18:16 +0000)]
[Sema] Expose a control flag for integer to pointer ext warning

While building openJDK11u, it seems that some of the code in the
native core libraries make liberal use of integer to pointer
comparisons. We currently have no flag to disabled this warning.
This add such a flag.

Patch by Kader (abdoul-kader keita)

Differential Revision: https://reviews.llvm.org/D56241

llvm-svn: 351082

5 years ago[clangd] Add Limit parameter for xref.
Haojian Wu [Mon, 14 Jan 2019 18:11:09 +0000 (18:11 +0000)]
[clangd] Add Limit parameter for xref.

Reviewers: sammccall

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits

Differential Revision: https://reviews.llvm.org/D56597

llvm-svn: 351081

5 years ago[lldbsuite] Skip two more flaky tests on Windows
Stella Stamenova [Mon, 14 Jan 2019 17:55:17 +0000 (17:55 +0000)]
[lldbsuite] Skip two more flaky tests on Windows

TestNamespaceLookup occasionally passes unexpectedly and TestExitDuringStep occasionally fails unexpectedly

llvm-svn: 351080

5 years ago[VFS] Disable unix-assuming VFS test on windows
Sam McCall [Mon, 14 Jan 2019 17:51:10 +0000 (17:51 +0000)]
[VFS] Disable unix-assuming VFS test on windows

llvm-svn: 351079

5 years ago[X86] Add PR40306 shuffle test case
Simon Pilgrim [Mon, 14 Jan 2019 17:49:11 +0000 (17:49 +0000)]
[X86] Add PR40306 shuffle test case

llvm-svn: 351078

5 years agoReapply r345008 "Split MachinePipeliner code into header and cpp files"
Adrian Prantl [Mon, 14 Jan 2019 17:24:11 +0000 (17:24 +0000)]
Reapply r345008 "Split MachinePipeliner code into header and cpp files"

Split MachinePipeliner code into header and cpp files to allow
inheritance from SwingSchedulerDAG.

This reapplies https://reviews.llvm.org/D56084 after moving the
implementation of the dump functions into the .cpp files. This fixes a
linker error when building with Clang modules enables and local
submodule visibility disabled.

Original patch by Lama Saba <lama.saba@intel.com>!

llvm-svn: 351077

5 years agoRemove NameLen argument from newly-introduced IR C APIs.
James Y Knight [Mon, 14 Jan 2019 17:16:55 +0000 (17:16 +0000)]
Remove NameLen argument from newly-introduced IR C APIs.

Normally, changing the function signatures of C APIs is disallowed,
but as these two are brand new last week, and haven't been released
yet, it is okay in this instance.

As per discussion in D56556, we will not add NameLen arguments to IR
building APIs, for the following reasons:

1. We do not want to deprecate all of the IR building APIs, just to add a
NameLen argument to each one.

2. Consistency is important, so adding it just to new ones is unfortunate.

3. The IR names are completely optional, useful for readability of IR
only. There is no value in ever supporting nul bytes.

Differential Revision: https://reviews.llvm.org/D56669

llvm-svn: 351076

5 years ago[AST] Fix double-traversal of code in top-level lambdas in RAV(implicit = yes).
Sam McCall [Mon, 14 Jan 2019 17:16:00 +0000 (17:16 +0000)]
[AST] Fix double-traversal of code in top-level lambdas in RAV(implicit = yes).

Summary:
Prior to r351069, lambda classes were traversed or not depending on the
{Function, Class, Namespace, TU} DeclContext containing them.
If it was a function (common case) they were not traversed.
If it was a namespace or TU (top-level lambda) they were traversed as part of
that DeclContext traversal.

r351069 "fixed" RAV to traverse these as part of the LambdaExpr, which is the
right place. But top-level lambdas are now traversed twice.
We fix that as blocks and block captures were apparently fixed in the past.

Maybe it would be nicer to avoid adding the lambda classes to the DeclContext
in the first place, but I can't work out the implications of that.

Reviewers: bkramer, klimek

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D56665

llvm-svn: 351075

5 years agoReland "Refactor GetRegistersForValue. NFCI."
Nirav Dave [Mon, 14 Jan 2019 17:09:45 +0000 (17:09 +0000)]
Reland "Refactor GetRegistersForValue. NFCI."

Remove over-strictification class membership check.

llvm-svn: 351074

5 years ago[DAGCombiner] Add (sub_sat x, x) -> 0 combine
Simon Pilgrim [Mon, 14 Jan 2019 15:43:34 +0000 (15:43 +0000)]
[DAGCombiner] Add (sub_sat x, x) -> 0 combine

llvm-svn: 351073

5 years ago[DAGCombiner] Enable sub saturation constant folding
Simon Pilgrim [Mon, 14 Jan 2019 15:28:53 +0000 (15:28 +0000)]
[DAGCombiner] Enable sub saturation constant folding

llvm-svn: 351072

5 years ago[X86] Add sub saturation constant folding and self tests.
Simon Pilgrim [Mon, 14 Jan 2019 15:08:51 +0000 (15:08 +0000)]
[X86] Add sub saturation constant folding and self tests.

llvm-svn: 351071

5 years ago[DAGCombiner] Add add/sub saturation undef handling
Simon Pilgrim [Mon, 14 Jan 2019 14:16:24 +0000 (14:16 +0000)]
[DAGCombiner] Add add/sub saturation undef handling

Match ConstantFolding.cpp:
(add_sat x, undef) -> -1
(sub_sat x, undef) -> 0

llvm-svn: 351070

5 years ago[VFS] Fix unused variable warning. NFC
Sam McCall [Mon, 14 Jan 2019 14:13:24 +0000 (14:13 +0000)]
[VFS] Fix unused variable warning. NFC

llvm-svn: 351069

5 years ago[MIPS GlobalISel] Fix release build make-check after r351046
Petar Avramovic [Mon, 14 Jan 2019 14:12:43 +0000 (14:12 +0000)]
[MIPS GlobalISel] Fix release build make-check after r351046

Add 'REQUIRES: asserts' to test that uses debug output in
order to fix r351046 for buildbots that use release build.

llvm-svn: 351068

5 years ago[DAGCombiner] add saturation instructions are commutative
Simon Pilgrim [Mon, 14 Jan 2019 14:02:24 +0000 (14:02 +0000)]
[DAGCombiner] add saturation instructions are commutative

llvm-svn: 351067

5 years ago[X86] Add add/sub saturation undef tests.
Simon Pilgrim [Mon, 14 Jan 2019 13:47:07 +0000 (13:47 +0000)]
[X86] Add add/sub saturation undef tests.

llvm-svn: 351066

5 years ago[Core] Use the implementation method GetAddressOf in ValueObjectConstResultChild
Aleksandr Urakov [Mon, 14 Jan 2019 13:08:13 +0000 (13:08 +0000)]
[Core] Use the implementation method GetAddressOf in ValueObjectConstResultChild

Summary:
This patch allows to retrieve an address object for `ValueObject`'s children
retrieved through e.g. `GetChildAtIndex` or `GetChildMemberWithName`. It just
uses the corresponding method of the implementation object `m_impl` to achieve
that.

Reviewers: zturner, JDevlieghere, clayborg, labath, serge-sans-paille

Reviewed By: clayborg

Subscribers: leonid.mashinskiy, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D56147

llvm-svn: 351065

5 years agogn build: Add gn.py wrapper script that adds --dotfile= and --root= parameters
Nico Weber [Mon, 14 Jan 2019 12:50:40 +0000 (12:50 +0000)]
gn build: Add gn.py wrapper script that adds --dotfile= and --root= parameters

Since people weren't enthused about moving the .gn file to the toplevel in
D56419, here's a script to make gn at least somewhat more pleasant to invoke
(useful for gn clean, gn args --list, gn desc, etc).

Differential Revision: https://reviews.llvm.org/D56565

llvm-svn: 351064

5 years agoclang-cl: Fix help text for /O<flags>: '/O2y-' means '/O2 /Oy-', not '/O2 /y-'
Nico Weber [Mon, 14 Jan 2019 12:42:35 +0000 (12:42 +0000)]
clang-cl: Fix help text for /O<flags>: '/O2y-' means '/O2 /Oy-', not '/O2 /y-'

Differential Revision: https://reviews.llvm.org/D56489

llvm-svn: 351062

5 years agoclang-cl: Align help texts for /O1 and O2
Nico Weber [Mon, 14 Jan 2019 12:41:13 +0000 (12:41 +0000)]
clang-cl: Align help texts for /O1 and O2

Makes it a bit easier to see what exactly the difference is.

Also use "same as" instead of "equivalent to", because that's faster to read.

Differential Revision: https://reviews.llvm.org/D56488

llvm-svn: 351061

5 years ago[DAGCombiner] Enable add saturation constant folding
Simon Pilgrim [Mon, 14 Jan 2019 12:34:31 +0000 (12:34 +0000)]
[DAGCombiner] Enable add saturation constant folding

llvm-svn: 351060

5 years ago[mips] Optimize shifts for types larger than GPR size (mips2/mips3)
Aleksandar Beserminji [Mon, 14 Jan 2019 12:28:51 +0000 (12:28 +0000)]
[mips] Optimize shifts for types larger than GPR size (mips2/mips3)

With this patch, shifts are lowered to optimal number of instructions
necessary to shift types larger than the general purpose register size.

This resolves PR/32293.

Thanks to Kyle Butt for reporting the issue!

Differential Revision: https://reviews.llvm.org/D56320

llvm-svn: 351059

5 years ago[DebugInfo] Remove un-necessary logic from HoistThenElseCodeToIf
Jeremy Morse [Mon, 14 Jan 2019 12:13:12 +0000 (12:13 +0000)]
[DebugInfo] Remove un-necessary logic from HoistThenElseCodeToIf

Following PR39807, the way in which SimplifyCFG hoists common code on
branch paths was fixed in r347782. However this left extra code hanging
around HoistThenElseCodeToIf that wasn't necessary and needlessly
complicated matters -- we no longer need to look up through the 'if'
basic block to find a location for hoisted 'select' insts, we can instead
use the location chosen by applyMergedLocation.

This patch deletes that extra logic, and updates a regression test to
reflect the new logic (selects get the merged location, not a previous
insts location).

Differential Revision: https://reviews.llvm.org/D55272

llvm-svn: 351058

5 years ago[DAGCombiner] Add add saturation constant folding tests.
Simon Pilgrim [Mon, 14 Jan 2019 12:12:42 +0000 (12:12 +0000)]
[DAGCombiner] Add add saturation constant folding tests.

Exposes an issue with sadd_sat for computeOverflowKind, so I've disabled it for now.

llvm-svn: 351057

5 years ago[ARM GlobalISel] Import MOVi32imm into GlobalISel
Diana Picus [Mon, 14 Jan 2019 12:04:08 +0000 (12:04 +0000)]
[ARM GlobalISel] Import MOVi32imm into GlobalISel

Make it possible for TableGen to produce code for selecting MOVi32imm.
This allows reasonably recent ARM targets to select a lot more constants
than before.

We achieve this by adding GISelPredicateCode to arm_i32imm. It's
impossible to use the exact same code for both DAGISel and GlobalISel,
since one uses "Subtarget->" and the other "STI." to refer to the
subtarget. Moreover, in GlobalISel we don't have ready access to the
MachineFunction, so we need to add a bit of code for obtaining it from
the instruction that we're selecting. This is also the reason why it
needs to remain a PatLeaf instead of the more specific IntImmLeaf.

llvm-svn: 351056

5 years ago[SelectionDAG] Add type sanity assertions for add/sub saturation node creation.
Simon Pilgrim [Mon, 14 Jan 2019 11:56:59 +0000 (11:56 +0000)]
[SelectionDAG] Add type sanity assertions for add/sub saturation node creation.

llvm-svn: 351055

5 years ago[AMDGPU] Add support for TFE/LWE in image intrinsics. 2nd try
David Stuttard [Mon, 14 Jan 2019 11:55:24 +0000 (11:55 +0000)]
[AMDGPU] Add support for TFE/LWE in image intrinsics. 2nd try

TFE and LWE support requires extra result registers that are written in the
event of a failure in order to detect that failure case.
The specific use-case that initiated these changes is sparse texture support.

This means that if image intrinsics are used with either option turned on, the
programmer must ensure that the return type can contain all of the expected
results. This can result in redundant registers since the vector size must be a
power-of-2.

This change takes roughly 6 parts:
1. Modify the instruction defs in tablegen to add new instruction variants that
can accomodate the extra return values.
2. Updates to lowerImage in SIISelLowering.cpp to accomodate setting TFE or LWE
(where the bulk of the work for these instruction types is now done)
3. Extra verification code to catch cases where intrinsics have been used but
insufficient return registers are used.
4. Modification to the adjustWritemask optimisation to account for TFE/LWE being
enabled (requires extra registers to be maintained for error return value).
5. An extra pass to zero initialize the error value return - this is because if
the error does not occur, the register is not written and thus must be zeroed
before use. Also added a new (on by default) option to ensure ALL return values
are zero-initialized that is required for sparse texture support.
6. Disable the inst_combine optimization in the presence of tfe/lwe (later TODO
for this to re-enable and handle correctly).

There's an additional fix now to avoid a dmask=0

For an image intrinsic with tfe where all result channels except tfe
were unused, I was getting an image instruction with dmask=0 and only a
single vgpr result for tfe. That is incorrect because the hardware
assumes there is at least one vgpr result, plus the one for tfe.

Fixed by forcing dmask to 1, which gives the desired two vgpr result
with tfe in the second one.

The TFE or LWE result is returned from the intrinsics using an aggregate
type. Look in the test code provided to see how this works, but in essence IR
code to invoke the intrinsic looks as follows:

%v = call {<4 x float>,i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32 15,
                                      i32 %s, <8 x i32> %rsrc, i32 1, i32 0)
%v.vec = extractvalue {<4 x float>, i32} %v, 0
%v.err = extractvalue {<4 x float>, i32} %v, 1

This re-submit of the change also includes a slight modification in
SIISelLowering.cpp to work-around a compiler bug for the powerpc_le
platform that caused a buildbot failure on a previous submission.

Differential revision: https://reviews.llvm.org/D48826

Change-Id: If222bc03642e76cf98059a6bef5d5bffeda38dda

Work around for ppcle compiler bug

Change-Id: Ie284cf24b2271215be1b9dc95b485fd15000e32b
llvm-svn: 351054

5 years ago[OpenCL] Set generic addr space of 'this' in special class members.
Anastasia Stulova [Mon, 14 Jan 2019 11:44:22 +0000 (11:44 +0000)]
[OpenCL] Set generic addr space of 'this' in special class members.

Set address spaces of 'this' param correctly for implicit special
class members.

This also changes initialization conversion sequence to separate
address space conversion from other qualifiers in case of binding
reference to a temporary. In this case address space conversion
should happen after the binding (unlike for other quals). This is
needed to materialize it correctly in the alloca address space.

Initial patch by Mikael Nilssoni!

Differential Revision: https://reviews.llvm.org/D56066

llvm-svn: 351053

5 years ago[clangd] Fix a reference invalidation
Kadir Cetinkaya [Mon, 14 Jan 2019 11:24:07 +0000 (11:24 +0000)]
[clangd] Fix a reference invalidation

Summary: Fix for the breakage in http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/52811/consoleFull#-42777206a1ca8a51-895e-46c6-af87-ce24fa4cd561

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, cfe-commits

Differential Revision: https://reviews.llvm.org/D56656

llvm-svn: 351052

5 years ago[clangd] Unlink VFS working dir from OS working dir.
Sam McCall [Mon, 14 Jan 2019 11:06:48 +0000 (11:06 +0000)]
[clangd] Unlink VFS working dir from OS working dir.

A lot of our previous FS manipulation was thread-unsafe in practice with
the RealFS implementation.

This switches to a different RealFS mode where path-manipulation is used
to simulate multiple working dirs.
r351050 both added this mode and removed the cache. If we want to
move back to the old implementation we need to put the cache back.

llvm-svn: 351051

5 years ago[VFS] Allow multiple RealFileSystem instances with independent CWDs.
Sam McCall [Mon, 14 Jan 2019 10:56:35 +0000 (10:56 +0000)]
[VFS] Allow multiple RealFileSystem instances with independent CWDs.

Summary:
Previously only one RealFileSystem instance was available, and its working
directory is shared with the process. This doesn't work well for multithreaded
programs that want to work with relative paths - the vfs::FileSystem is assumed
to provide the working directory, but a thread cannot control this exclusively.

The new vfs::createPhysicalFileSystem() factory copies the process's working
directory initially, and then allows it to be independently modified.

This implementation records the working directory path, and glues it to relative
paths to provide the correct absolute path to the sys::fs:: functions.
This will give different results in unusual situations (e.g. the CWD is moved).

The main alternative is the use of openat(), fstatat(), etc to ask the OS to
resolve paths relative to a directory handle which can be kept open. This is
more robust. There are two reasons not to do this initially:
1. these functions are not available on all supported Unixes, and are somewhere
   between difficult and unavailable on Windows. So we need a path-based
   fallback anyway.
2. this would mean also adding support at the llvm::sys::fs level, which is a
   larger project. My clearest idea is an OS-specific `BaseDirectory` object
   that can be optionally passed to functions there. Eventually this could be
   backed by either paths or a fd where openat() is supported.
   This is a large project, and demonstrating here that a path-based fallback
   works is a useful prerequisite.

There is some subtlety to the path-manipulation mechanism:
  - when setting the working directory, both Specified=makeAbsolute(path) and
    Resolved=realpath(path) are recorded. These may differ in the presence of
    symlinks.
  - getCurrentWorkingDirectory() and makeAbsolute() use Specified - this is
    similar to the behavior of $PWD and sys::path::current_path
  - IO operations like openFileForRead use Resolved. This is similar to the
    behavior of an openat() based implementation, that doesn't see changes
    in symlinks.
There may still be combinations of operations and FS states that yield unhelpful
behavior. This is hard to avoid with symlinks and FS abstractions :(

The caching behavior of the current working directory is removed in this patch.
getRealFileSystem() is now specified to link to the process CWD, so the caching
is incorrect.
The user who needed this so far is clangd, which will immediately switch to
createPhysicalFileSystem().

Reviewers: ilya-biryukov, bkramer, labath

Subscribers: ioeric, kadircet, kristina, llvm-commits

Differential Revision: https://reviews.llvm.org/D56545

llvm-svn: 351050

5 years agoReplace "no-frame-pointer-*" function attributes with "frame-pointer"
Francis Visoiu Mistrih [Mon, 14 Jan 2019 10:55:55 +0000 (10:55 +0000)]
Replace "no-frame-pointer-*" function attributes with "frame-pointer"

Part of the effort to refactoring frame pointer code generation. We used
to use two function attributes "no-frame-pointer-elim" and
"no-frame-pointer-elim-non-leaf" to represent three kinds of frame
pointer usage: (all) frames use frame pointer, (non-leaf) frames use
frame pointer, (none) frame use frame pointer. This CL makes the idea
explicit by using only one enum function attribute "frame-pointer"

Option "-frame-pointer=" replaces "-disable-fp-elim" for tools such as
llc.

"no-frame-pointer-elim" and "no-frame-pointer-elim-non-leaf" are still
supported for easy migration to "frame-pointer".

tests are mostly updated with

// replace command line args ‘-disable-fp-elim=false’ with ‘-frame-pointer=none’
grep -iIrnl '\-disable-fp-elim=false' * | xargs sed -i '' -e "s/-disable-fp-elim=false/-frame-pointer=none/g"

// replace command line args ‘-disable-fp-elim’ with ‘-frame-pointer=all’
grep -iIrnl '\-disable-fp-elim' * | xargs sed -i '' -e "s/-disable-fp-elim/-frame-pointer=all/g"

Patch by Yuanfang Chen (tabloid.adroit)!

Differential Revision: https://reviews.llvm.org/D56351

llvm-svn: 351049

5 years ago[clang-tidy] update FunctionSizeCheck for D56444
Sam McCall [Mon, 14 Jan 2019 10:40:41 +0000 (10:40 +0000)]
[clang-tidy] update FunctionSizeCheck for D56444

Reviewers: JonasToth, aaron.ballman

Subscribers: xazax.hun, cfe-commits

Differential Revision: https://reviews.llvm.org/D56552

llvm-svn: 351048

5 years ago[AST] RecursiveASTVisitor visits lambda classes when implicit visitation is on.
Sam McCall [Mon, 14 Jan 2019 10:31:42 +0000 (10:31 +0000)]
[AST] RecursiveASTVisitor visits lambda classes when implicit visitation is on.

Summary:
This fixes ASTContext's parent map for nodes in such classes (e.g. operator()).
https://bugs.llvm.org/show_bug.cgi?id=39949

This also changes the observed shape of the AST for implicit RAVs.
- this includes AST MatchFinder: cxxRecordDecl() now matches lambda classes,
functionDecl() matches the call operator, and the parent chain is body -> call
operator -> lambda class -> lambdaexpr rather than body -> lambdaexpr.
- this appears not to matter for the ASTImporterLookupTable builder
- this doesn't matter for the other RAVs in-tree.

In order to do this, we remove the TraverseLambdaBody hook. The problem is it's
hard/weird to ensure this hook is called when traversing via the implicit class.
There were just two users of this hook in-tree, who use it to skip bodies.
I replaced these with explicitly traversing the captures only. Another approach
would be recording the bodies when the lambda is visited, and then recognizing
them later.
I'd be open to suggestion on how to preserve this hook, instead.

Reviewers: aaron.ballman, JonasToth

Subscribers: cfe-commits, rsmith, jdennett

Differential Revision: https://reviews.llvm.org/D56444

llvm-svn: 351047

5 years ago[MIPS GlobalISel] Add pre legalizer combiner pass
Petar Avramovic [Mon, 14 Jan 2019 10:27:05 +0000 (10:27 +0000)]
[MIPS GlobalISel] Add pre legalizer combiner pass

Introduce GlobalISel pre legalizer pass for MIPS.
It will be used to cope with instructions that require
combining before legalization.

Differential Revision: https://reviews.llvm.org/D56269

llvm-svn: 351046

5 years ago[BasicBlockUtils] Generalize DeleteDeadBlock to deal with multiple dead blocks
Max Kazantsev [Mon, 14 Jan 2019 10:26:26 +0000 (10:26 +0000)]
[BasicBlockUtils] Generalize DeleteDeadBlock to deal with multiple dead blocks

Utility function `DeleteDeadBlock` expects that all predecessors of a block being
deleted are already deleted, with the exception of single-block loop. It makes it
hard to use for deletion of a set of blocks that may contain cyclic dependencies.
The is no correct order of invocations of this function that does not produce
dangling pointers on already deleted blocks.

This patch introduces a generalized version of this function `DeleteDeadBlocks`
that allows us to remove multiple blocks at once, even if there are cycles among
them. The only requirement is that no block being deleted should have a predecessor
that is not being deleted.

The logic of `DeleteDeadBlocks` is following:
  for each block
    create relevant DT updates;
    remove all instructions (replace with undef if needed);
    replace terminator with unreacheable;
  apply DT updates;
  for each block
    delete block;

Therefore, `DeleteDeadBlock` becomes a particular case of
the general algorithm called for a single block.

Differential Revision: https://reviews.llvm.org/D56120
Reviewed By: skatkov

llvm-svn: 351045

5 years ago[Sparc] Add Sparc V8 support
Daniel Cederman [Mon, 14 Jan 2019 10:15:20 +0000 (10:15 +0000)]
[Sparc] Add Sparc V8 support

Summary:
Adds the register class implementation for Sparc.
Adds support for DW_CFA_GNU_window_save.
Adds save and restore context functionality.

Adds getArch() function to each Registers_ class to be able to separate
between DW_CFA_AARCH64_negate_ra_state and DW_CFA_GNU_window_save which
are both represented by the same constant.

On Sparc the return address is the address of the call instruction, so
an offset needs to be added when returning to skip the call instruction
and its delay slot. If the function returns a struct it is also necessary
to skip one extra instruction on Sparc V8.

Reviewers: jyknight, mclow.lists, mstorsjo, compnerd

Reviewed By: jyknight, compnerd

Subscribers: jgorbe, mgorny, christof, llvm-commits, fedor.sergeev, JDevlieghere, ldionne, libcxx-commits

Differential Revision: https://reviews.llvm.org/D55763

llvm-svn: 351044

5 years ago[llvm-symbolizer] Add -addresses, -a as aliases for -print-address
Dmitry Venikov [Mon, 14 Jan 2019 10:10:51 +0000 (10:10 +0000)]
[llvm-symbolizer] Add -addresses, -a as aliases for -print-address

Summary: Provides -addresses, -a as aliases for -print-address. Motivation: https://bugs.llvm.org/show_bug.cgi?id=40067.

Reviewers: jhenderson, ruiu, rnk, fjricci

Reviewed By: jhenderson

Subscribers: rupprecht, llvm-commits

Differential Revision: https://reviews.llvm.org/D56635

llvm-svn: 351043

5 years agoFix defines.txt
Thomas Preud'homme [Mon, 14 Jan 2019 10:10:48 +0000 (10:10 +0000)]
Fix defines.txt

Support arbitrary suffix when matching FileCheck executable name in
defines.txt to successfully match FileCheck.EXE on Microsoft Windows.

llvm-svn: 351042

5 years ago[clangd] Index main-file symbols (bug 39761)
Sam McCall [Mon, 14 Jan 2019 10:01:17 +0000 (10:01 +0000)]
[clangd] Index main-file symbols (bug 39761)

Patch by Nathan Ridge!

Differential Revision: https://reviews.llvm.org/D55185

llvm-svn: 351041

5 years ago[asan] Add fallback for Thumb after r350139
Diana Picus [Mon, 14 Jan 2019 09:45:49 +0000 (09:45 +0000)]
[asan] Add fallback for Thumb after r350139

This reverts r350806 which marked some tests as UNSUPPORTED on ARM and
instead reintroduces the old code path only for Thumb, since that seems
to be the only target that broke.

It would still be nice to find the root cause of the breakage, but with
the branch point for LLVM 8.0 scheduled for next week it's better to put
things in a stable state while we investigate.

Differential Revision: https://reviews.llvm.org/D56594

llvm-svn: 351040

5 years agoDetect incorrect FileCheck variable CLI definition
Thomas Preud'homme [Mon, 14 Jan 2019 09:29:10 +0000 (09:29 +0000)]
Detect incorrect FileCheck variable CLI definition

Summary:
While the backend code of FileCheck relies on definition of variable
from the command-line to have an equal sign '=' and a variable name
before that, the frontend does not actually enforce it. This leads to
FileCheck crashing when invoked with invalid syntax for the -D option.

This patch adds the missing validation in the frontend. It also makes
the -D option an AlwaysPrefix option to be able to detect -D=FOO as
being a define without variable and -D as missing its value.

Copyright:
- Linaro (changes in version 2 of revision D55940)
- GraphCore (changes in later versions)

Reviewers: jdenny

Subscribers: JonChesterfield, hiraditya, kristina, probinson,
llvm-commits

Differential Revision: https://reviews.llvm.org/D55940

llvm-svn: 351039

5 years agoAdd support for prefix-only CLI options
Thomas Preud'homme [Mon, 14 Jan 2019 09:28:53 +0000 (09:28 +0000)]
Add support for prefix-only CLI options

Summary:
Add support for options that always prefix their value, giving an error
if the value is in the next argument or if the option is given a value
assignment (ie. opt=val). This is the desired behavior for the -D option
of FileCheck for instance.

Copyright:
- Linaro (changes in version 2 of revision D55940)
- GraphCore (changes in later versions and introduced when creating
  D56549)

Reviewers: jdenny

Subscribers: llvm-commits, probinson, kristina, hiraditya,
JonChesterfield

Differential Revision: https://reviews.llvm.org/D56549

llvm-svn: 351038

5 years ago[CMake] LLVM exports utility targets since r350959, so we can use them without standa...
Stefan Granitz [Mon, 14 Jan 2019 09:24:50 +0000 (09:24 +0000)]
[CMake] LLVM exports utility targets since r350959, so we can use them without standalone-checks now

llvm-svn: 351037

5 years ago[X86] Remove mask parameter from avx512 pmultishiftqb intrinsics. Use select in IR...
Craig Topper [Mon, 14 Jan 2019 08:46:51 +0000 (08:46 +0000)]
[X86] Remove mask parameter from avx512 pmultishiftqb intrinsics. Use select in IR instead.

Fixes PR40259

llvm-svn: 351036

5 years ago[X86] Remove mask parameter from avx512 pmultishiftqb intrinsics. Use select in IR...
Craig Topper [Mon, 14 Jan 2019 08:46:45 +0000 (08:46 +0000)]
[X86] Remove mask parameter from avx512 pmultishiftqb intrinsics. Use select in IR instead.

Fixes PR40259

llvm-svn: 351035

5 years ago[X86] Add new test file that was supposed to go with r351028.
Craig Topper [Mon, 14 Jan 2019 08:46:42 +0000 (08:46 +0000)]
[X86] Add new test file that was supposed to go with r351028.

llvm-svn: 351034

5 years ago[X86] Update type profile for DBPSADBW to indicate the immediate is an i8 not just...
Craig Topper [Mon, 14 Jan 2019 02:59:08 +0000 (02:59 +0000)]
[X86] Update type profile for DBPSADBW to indicate the immediate is an i8 not just any int.

Removes some type checks from X86GenDAGISel.inc

llvm-svn: 351033

5 years ago[X86] Remove unused intrinsic handlers. NFC
Craig Topper [Mon, 14 Jan 2019 01:56:59 +0000 (01:56 +0000)]
[X86] Remove unused intrinsic handlers. NFC

llvm-svn: 351032

5 years ago[X86] Remove FPCLASS intrinsic handler. Use INTR_TYPE_2OP instead. NFC
Craig Topper [Mon, 14 Jan 2019 01:44:09 +0000 (01:44 +0000)]
[X86] Remove FPCLASS intrinsic handler. Use INTR_TYPE_2OP instead. NFC

llvm-svn: 351031