platform/upstream/llvm.git
5 years ago[codeview] Expose -gcodeview-ghash for global type hashing
Reid Kleckner [Fri, 16 Nov 2018 18:47:41 +0000 (18:47 +0000)]
[codeview] Expose -gcodeview-ghash for global type hashing

Summary:
Experience has shown that the functionality is useful. It makes linking
optimized clang with debug info for me a lot faster, 20s to 13s. The
type merging phase of PDB writing goes from 10s to 3s.

This removes the LLVM cl::opt and replaces it with a metadata flag.

After this change, users can do the following to use ghash:
- add -gcodeview-ghash to compiler flags
- replace /DEBUG with /DEBUG:GHASH in linker flags

Reviewers: zturner, hans, thakis, takuto.ikuta

Subscribers: aprantl, hiraditya, JDevlieghere, llvm-commits

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

llvm-svn: 347072

5 years agoMake path more robust so it also works with out-of-tree builds.
Adrian Prantl [Fri, 16 Nov 2018 18:43:16 +0000 (18:43 +0000)]
Make path more robust so it also works with out-of-tree builds.

llvm-svn: 347071

5 years ago[PowerPC] Make no-PIC default to match GCC - CLANG
Stefan Pintilie [Fri, 16 Nov 2018 18:37:01 +0000 (18:37 +0000)]
[PowerPC] Make no-PIC default to match GCC - CLANG

Make the default -fno-PIC on Power PC.

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

llvm-svn: 347070

5 years ago[PowerPC] Make no-PIC default to match GCC - LLVM
Stefan Pintilie [Fri, 16 Nov 2018 18:36:21 +0000 (18:36 +0000)]
[PowerPC] Make no-PIC default to match GCC - LLVM

Set -fno-PIC as the default option.

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

llvm-svn: 347069

5 years ago[CMake] Accept ENTITLEMENTS in add_llvm_executable and llvm_codesign
Stefan Granitz [Fri, 16 Nov 2018 18:10:36 +0000 (18:10 +0000)]
[CMake] Accept ENTITLEMENTS in add_llvm_executable and llvm_codesign

Summary: Allow code-signing with entitlements. FORCE may be used to avoid an error when replacing existing signatures.

Reviewers: beanz, bogner

Reviewed By: beanz

Subscribers: mgorny, llvm-commits, lldb-commits

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

llvm-svn: 347068

5 years ago[SelectionDAG] Move (repeated) SDTIntShiftDOp double shift node def to common code...
Simon Pilgrim [Fri, 16 Nov 2018 17:50:59 +0000 (17:50 +0000)]
[SelectionDAG] Move (repeated) SDTIntShiftDOp double shift node def to common code. NFCI.

Prep work for PR39467.

llvm-svn: 347067

5 years ago[X86] Add codegen tests for scalar funnel shifts
Simon Pilgrim [Fri, 16 Nov 2018 17:48:52 +0000 (17:48 +0000)]
[X86] Add codegen tests for scalar funnel shifts

llvm-svn: 347066

5 years agoGlobalDCE: Teach isEmptyFunction() to ignore debug intrinsics.
Adrian Prantl [Fri, 16 Nov 2018 17:47:21 +0000 (17:47 +0000)]
GlobalDCE: Teach isEmptyFunction() to ignore debug intrinsics.

This fixes PR39669.
https://bugs.llvm.org/show_bug.cgi?id=39669

llvm-svn: 347065

5 years ago[AST][NFC] Pack CXXThisExpr
Bruno Ricci [Fri, 16 Nov 2018 17:38:35 +0000 (17:38 +0000)]
[AST][NFC] Pack CXXThisExpr

Use the newly available space in the bit-fields of Stmt.
This saves 8 bytes per CXXThisExpr.

llvm-svn: 347064

5 years ago[AST][NFC] Pack CXXNullPtrLiteralExpr
Bruno Ricci [Fri, 16 Nov 2018 16:56:49 +0000 (16:56 +0000)]
[AST][NFC] Pack CXXNullPtrLiteralExpr

Use the newly available space in the bit-fields of Stmt.
This saves one pointer per CXXNullPtrLiteralExpr.

llvm-svn: 347063

5 years ago[AST][NFC] Pack CXXBoolLiteralExpr
Bruno Ricci [Fri, 16 Nov 2018 16:54:17 +0000 (16:54 +0000)]
[AST][NFC] Pack CXXBoolLiteralExpr

Use the newly available space in Stmt.
This saves 8 bytes per CXXBoolLiteralExpr.

llvm-svn: 347062

5 years ago[CodeGen] Expose some data types and accessors from StackMaps
Than McIntosh [Fri, 16 Nov 2018 16:48:49 +0000 (16:48 +0000)]
[CodeGen] Expose some data types and accessors from StackMaps

Summary:
This is for supporting custom stack map formats, where the
custom printer can access the stack map data.

Patch by Cherry Zhang <cherryyz@google.com>.

Related: https://reviews.llvm.org/D53892

Reviewers: thanm, apilipenko

Reviewed By: apilipenko

Subscribers: llvm-commits

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

llvm-svn: 347061

5 years ago[InstSimplify] add tests for saturating add/sub; NFC
Sanjay Patel [Fri, 16 Nov 2018 16:32:34 +0000 (16:32 +0000)]
[InstSimplify] add tests for saturating add/sub; NFC

These are baseline tests for D54532.
Patch based on the original tests by:
@nikic (Nikita Popov)

llvm-svn: 347060

5 years ago[OpenCL] Enable address spaces for references in C++
Anastasia Stulova [Fri, 16 Nov 2018 16:22:56 +0000 (16:22 +0000)]
[OpenCL] Enable address spaces for references in C++

Added references to the addr spaces deduction and enabled
CL2.0 features (program scope variables and storage class
qualifiers) to work in C++ mode too.

Fixed several address space conversion issues in CodeGen
for references.

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

llvm-svn: 347059

5 years agoTypo
Adrian Prantl [Fri, 16 Nov 2018 16:19:08 +0000 (16:19 +0000)]
Typo

llvm-svn: 347058

5 years agoUse a shared module cache directory for LLDB.
Adrian Prantl [Fri, 16 Nov 2018 16:19:07 +0000 (16:19 +0000)]
Use a shared module cache directory for LLDB.

This saves about 3 redundant gigabytes from the Objective-C test build
directories. Tests that must do unsavory things with the LLDB clang
module cache, already specify a per-test module cache in their .py
test instructions.

<rdar://problem/36002081>

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

llvm-svn: 347057

5 years agoMakefile.rules: Use a shared clang module cache directory.
Adrian Prantl [Fri, 16 Nov 2018 16:19:07 +0000 (16:19 +0000)]
Makefile.rules: Use a shared clang module cache directory.

Just to be safe, up until now each test used its own Clang module
cache directory. Since the compiler within one testsuite doesn't
change it is just as safe to share a clang module directory inside the
LLDB test build directory. This saves us from compiling tens of
gigabytes of redundant Darwin and Foundation .pcm files and also
speeds up running the test suite quite significantly.

rdar://problem/36002081

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

llvm-svn: 347056

5 years ago[InstSimplify] add test to demonstrate undef matching differences; NFC
Sanjay Patel [Fri, 16 Nov 2018 15:35:58 +0000 (15:35 +0000)]
[InstSimplify] add test to demonstrate undef matching differences; NFC

This is a baseline test for D54631.
Patch by:
@nikic (Nikita Popov)

llvm-svn: 347055

5 years ago[X86][SSE] Move number of input limit out of resolveTargetShuffleInputs.
Simon Pilgrim [Fri, 16 Nov 2018 15:01:05 +0000 (15:01 +0000)]
[X86][SSE] Move number of input limit out of resolveTargetShuffleInputs.

Only combineX86ShufflesRecursively needs this limit.

llvm-svn: 347054

5 years ago[clang-tidy] Expanded a test NFC
Alexander Kornienko [Fri, 16 Nov 2018 14:57:51 +0000 (14:57 +0000)]
[clang-tidy] Expanded a test NFC

Expanded the readability-inconsistent-declaration-parameter-name-macros.cpp to
check notes and added a test with pasted tokens.

llvm-svn: 347053

5 years ago[libcxx] Mention restriction on inline namespaces in LIBCXX_ABI_NAMESPACE docs
Louis Dionne [Fri, 16 Nov 2018 14:57:47 +0000 (14:57 +0000)]
[libcxx] Mention restriction on inline namespaces in LIBCXX_ABI_NAMESPACE docs

I also kept the original "vague" documentation that saying that users are
responsible for not breaking us. This doesn't mean anything because there's
no way they can actually enforce that unless we restrict ourselves to a
specific naming scheme, but I left the documentation because it acts as a
good warning and gives us more leeway.

llvm-svn: 347052

5 years ago[x86] regenerate complete checks for test; NFC
Sanjay Patel [Fri, 16 Nov 2018 14:44:20 +0000 (14:44 +0000)]
[x86] regenerate complete checks for test; NFC

llvm-svn: 347051

5 years ago[IRVerifier] Allow StructRet in statepoint
Than McIntosh [Fri, 16 Nov 2018 14:28:05 +0000 (14:28 +0000)]
[IRVerifier] Allow StructRet in statepoint

Summary:
StructRet attribute is not allowed in vararg calls. The statepoint
intrinsic is vararg, but the wrapped function may be not. Allow
calls of statepoint with StructRet arg, as long as the wrapped
function is not vararg.

Reviewers: thanm, anna

Reviewed By: anna

Subscribers: anna, llvm-commits

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

llvm-svn: 347050

5 years ago[DWARF] Use PRIx64 instead of 'x' to format 64-bit values
Simon Atanasyan [Fri, 16 Nov 2018 13:14:26 +0000 (13:14 +0000)]
[DWARF] Use PRIx64 instead of 'x' to format 64-bit values

This is a follow-up to r346715. Use PRIx64 to formatted print of 64-bit
value in the `DWARFDebugLoclists::LocationList::dump` to escape problem
on big-endian hosts.

llvm-svn: 347049

5 years ago[X86] X86DAGToDAGISel::matchBitExtract(): extract 'lshr' from `X`
Roman Lebedev [Fri, 16 Nov 2018 13:04:54 +0000 (13:04 +0000)]
[X86] X86DAGToDAGISel::matchBitExtract(): extract 'lshr' from `X`

Summary:
As discussed in previous review, and noted in the FIXME, if `X` is actually an `lshr Y, Z` (logical!),
we can fold the `Z` into 'control`, and let the `BEXTR` do this too.
We could just insert those 8 bits of shift amount into control,
but it is better to instead zero-extend them, and 'or' them in place.

We can only do this for `lshr`, not `ashr`, because we do not know that the mask cover only the bits of `Y`,
and not any of the sign-extended bits.

The obvious question is, is this actually legal to do?
I believe it is. Relevant quotes, from `Intel® 64 and IA-32 Architectures Software Developer’s Manual`, `BEXTR — Bit Field Extract`:
* `Bit 7:0 of the second source operand specifies the starting bit position of bit extraction.`
* `A START value exceeding the operand size will not extract any bits from the second source operand.`
* `Only bit positions up to (OperandSize -1) of the first source operand are extracted.`
* `All higher order bits in the destination operand (starting at bit position LENGTH) are zeroed.`
* `The destination register is cleared if no bits are extracted.`

FIXME: if we can do this, i wonder if we should prefer `BEXTR` over `BZHI` in such cases.

Reviewers: RKSimon, craig.topper, spatel, andreadb

Reviewed By: RKSimon, craig.topper, andreadb

Subscribers: llvm-commits

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

llvm-svn: 347048

5 years ago[lldb] NFC: Remove the extra ';'
Henry Wong [Fri, 16 Nov 2018 13:01:57 +0000 (13:01 +0000)]
[lldb] NFC: Remove the extra ';'

Summary:
Remove extra `;` to eliminate the following pedantic warning.

```
warning: extra ';' [-Wpedantic]

```

Reviewers: shafik

Reviewed By: shafik

Subscribers: abidh, lldb-commits

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

llvm-svn: 347047

5 years agoRemove BUILD file from google-benchmark
Benjamin Kramer [Fri, 16 Nov 2018 12:53:17 +0000 (12:53 +0000)]
Remove BUILD file from google-benchmark

This was removed in r336666, but accidentally re-added in r346984.

llvm-svn: 347046

5 years ago[TargetLowering] Cleanup more of the EXTEND demanded bits cases so that they match...
Simon Pilgrim [Fri, 16 Nov 2018 12:26:26 +0000 (12:26 +0000)]
[TargetLowering] Cleanup more of the EXTEND demanded bits cases so that they match. NFCI.

Use the same variable names etc.

llvm-svn: 347045

5 years ago[clangd] Truncate SymbolID to 8 bytes.
Haojian Wu [Fri, 16 Nov 2018 10:58:40 +0000 (10:58 +0000)]
[clangd] Truncate SymbolID to 8 bytes.

Summary:
This is our goal. It has a non-zero rick, but so far we haven't see any
collision (externally and internally).

Reviewers: sammccall

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

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

llvm-svn: 347044

5 years ago[RISCV][NFC] Define and use the new CA instruction format
Alex Bradbury [Fri, 16 Nov 2018 10:33:23 +0000 (10:33 +0000)]
[RISCV][NFC] Define and use the new CA instruction format

The RISC-V ISA manual was updated on 2018-11-07 (commit 00557c3) to define a
new compressed instruction format, RVC format CA (no actual instruction
encodings were changed). This patch updates the RISC-V backend to define the
new format, and to use it in the relevant instructions.

Differential Revision: https://reviews.llvm.org/D54302
Patch by Luís Marques.

llvm-svn: 347043

5 years ago[RISCV] Constant materialisation for RV64I
Alex Bradbury [Fri, 16 Nov 2018 10:14:16 +0000 (10:14 +0000)]
[RISCV] Constant materialisation for RV64I

This commit introduces support for materialising 64-bit constants for RV64I,
making use of the RISCVMatInt::generateInstSeq helper in order to share logic
for immediate materialisation with the MC layer (where it's used for the li
pseudoinstruction).

test/CodeGen/RISCV/imm.ll is updated to test RV64, and gains new 64-bit
constant tests. It would be preferable if anyext constant returns were sign
rather than zero extended (see PR39092). This patch simply adds an explicit
signext to the returns in imm.ll.

Further optimisations for constant materialisation are possible, most notably
for mask-like values which can be generated my loading -1 and shifting right.
A future patch will standardise on the C++ codepath for immediate selection on
RV32 as well as RV64, and then add further such optimisations to
RISCVMatInt::generateInstSeq in order to benefit both RV32 and RV64 for
codegen and li expansion.

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

llvm-svn: 347042

5 years ago[MSP430] Add support for .refsym directive
Anton Korobeynikov [Fri, 16 Nov 2018 09:50:24 +0000 (09:50 +0000)]
[MSP430] Add support for .refsym directive

Introduces support for '.refsym' assembler directive.

From GCC docs (for MSP430):
'.refsym' - This directive instructs assembler to add an undefined reference
to the symbol following the directive. No relocation is created for this symbol;
it will exist purely for pulling in object files from archives.

Patch by Kristina Bessonova!

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

llvm-svn: 347041

5 years ago[MSP430] Add more tests for ABI and calling convention
Anton Korobeynikov [Fri, 16 Nov 2018 09:47:58 +0000 (09:47 +0000)]
[MSP430] Add more tests for ABI and calling convention

Patch by Kristina Bessonova!

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

llvm-svn: 347040

5 years ago[clangd] Fix a compiler warning and test crashes caused in rL347038.
Haojian Wu [Fri, 16 Nov 2018 09:41:14 +0000 (09:41 +0000)]
[clangd] Fix a compiler warning and test crashes caused in rL347038.

llvm-svn: 347039

5 years agoIntroduce shard storage to auto-index.
Kadir Cetinkaya [Fri, 16 Nov 2018 09:03:56 +0000 (09:03 +0000)]
Introduce shard storage to auto-index.

Reviewers: sammccall, ioeric

Reviewed By: sammccall

Subscribers: llvm-commits, mgorny, Eugene.Zelenko, ilya-biryukov, jkorous, arphaman, cfe-commits

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

llvm-svn: 347038

5 years ago[DAGCombine] Fix non-deterministic debug output
Sam Parker [Fri, 16 Nov 2018 08:35:19 +0000 (08:35 +0000)]
[DAGCombine] Fix non-deterministic debug output

PR37970 reported non-deterministic debug output, this was caused by
iterating through a set and not a a vector.

bugzilla: https://bugs.llvm.org/show_bug.cgi?id=37970

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

llvm-svn: 347037

5 years ago[clangd] Initial clang-tidy diagnostics support.
Sam McCall [Fri, 16 Nov 2018 08:32:23 +0000 (08:32 +0000)]
[clangd] Initial clang-tidy diagnostics support.

Summary:
This runs checks over a restricted subset of the TU:
 - preprocessor callbacks just receive the truncated PP events that
   occur when a preamble is used.
 - ASTMatchers run only over the top-level decls in the main-file

This patch just turns on one simple check (bugprone-sizeof-expression)
with no configuration. Configuration is complex enough to warrant a separate patch

This depends on a patch allowing traversal to be restricted to a scope.

Reviewers: hokein

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

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

llvm-svn: 347036

5 years ago[clang] - Simplify tools::SplitDebugName.
George Rimar [Fri, 16 Nov 2018 07:59:24 +0000 (07:59 +0000)]
[clang] - Simplify tools::SplitDebugName.

This should be NFC change.

SplitDebugName recently started to accept the `Output` that
can be used to simplify the logic a bit, also it
seems that code in SplitDebugName that uses
OPT_fdebug_compilation_dir is simply dead.

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

llvm-svn: 347035

5 years ago[LegalizeVectorTypes] Teach WidenVecRes_Convert to turn ANY_EXTEND into ANY_EXTEND_VE...
Craig Topper [Fri, 16 Nov 2018 07:13:34 +0000 (07:13 +0000)]
[LegalizeVectorTypes] Teach WidenVecRes_Convert to turn ANY_EXTEND into ANY_EXTEND_VECTOR_INREG when the input and output types need to be widened to the same width.

If we don't do it here, DAGCombine will just end up creating it from the scalar any_extend+build_vector so might as well save a step.

llvm-svn: 347034

5 years ago[ThinLTO] Internalize readonly globals
Eugene Leviant [Fri, 16 Nov 2018 07:08:00 +0000 (07:08 +0000)]
[ThinLTO] Internalize readonly globals

An attempt to recommit r346584 after failure on OSX build bot.
Fixed cache key computation in ThinLTOCodeGenerator and added
test case

llvm-svn: 347033

5 years ago[X86] Add custom type legalization for v2i8/v4i8/v8i8 mul under -x86-experimental...
Craig Topper [Fri, 16 Nov 2018 06:15:21 +0000 (06:15 +0000)]
[X86] Add custom type legalization for v2i8/v4i8/v8i8 mul under -x86-experimental-vector-widening.

By early promoting the multiply to use an i16 element type we can avoid op legalization emit a second multiply for the 8 upper elements of the v16i8 type we would otherwise get.

llvm-svn: 347032

5 years ago[X86] Add some test cases for vector multiplies on vectors shorter than 128 bits...
Craig Topper [Fri, 16 Nov 2018 06:15:20 +0000 (06:15 +0000)]
[X86] Add some test cases for vector multiplies on vectors shorter than 128 bits with -x86-experimental-vector-widening-legalization.

llvm-svn: 347031

5 years ago[ELF][MIPS] Use MIPS R6 `sigrie` as a trap instruction
Simon Atanasyan [Fri, 16 Nov 2018 05:30:47 +0000 (05:30 +0000)]
[ELF][MIPS] Use MIPS R6 `sigrie` as a trap instruction

Current value using as a trap instruction (0xefefefef) is not a good choice
for MIPS because it's a valid MIPS instruction `swc3 $15,-4113(ra)`. This
patch replaces 0xefefefef by 0x04170001. For all MIPS ISA revisions before
R6, this value is just invalid instruction. Starting from MIPS R6 it's
a valid instruction `sigrie 1` which signals a Reserved Instruction exception.

mips-traps.s test case is added to test trap encoding. Other test cases
are modified to remove redundant checking.

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

llvm-svn: 347029

5 years agoAMDGPU: Fix analyzeBranch failing with pseudoterminators
Matt Arsenault [Fri, 16 Nov 2018 05:03:02 +0000 (05:03 +0000)]
AMDGPU: Fix analyzeBranch failing with pseudoterminators

If a block had one of the _term instructions used for gluing
exec modifying instructions to the end of the block,
analyzeBranch would fail, preventing the verifier from catching
a broken successor list.

llvm-svn: 347027

5 years ago[CMake] Support cross-compiling with Fuchsia toolchain build
Petr Hosek [Fri, 16 Nov 2018 04:50:12 +0000 (04:50 +0000)]
[CMake] Support cross-compiling with Fuchsia toolchain build

When second stage is being cross-compiled for a different platform
we need to build enough of first stage runtimes to get a working
compiler.

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

llvm-svn: 347026

5 years ago[CMake] Support cross-compiling with multi-stage builds
Petr Hosek [Fri, 16 Nov 2018 04:46:48 +0000 (04:46 +0000)]
[CMake] Support cross-compiling with multi-stage builds

When using multi-stage builds, we would like support cross-compilation.
Example is 2-stage build when the first stage is compiled for host while
the second stage is compiled for the target.

Normally, the second stage would be also used for compiling runtimes,
but that's not possible when cross-compiling, so we use the first stage
compiler instead. However, we still want to use the second stage paths.
To do so, we set the -resource-dir of the first stage compiler to point
to the resource directory of the second stage.

We also need compiler tools that support the target architecture. These
tools are not guaranteed to be present on the host, but in case of
multi-stage build, we can build these tools in the first stage.

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

llvm-svn: 347025

5 years ago[compiler-rt] Use exact spelling when building for default target
Petr Hosek [Fri, 16 Nov 2018 04:14:23 +0000 (04:14 +0000)]
[compiler-rt] Use exact spelling when building for default target

When building for default target only, use exact target spelling
when deriving the name for the per-target runtime directory. This
is necessary for AArch32 where the CMake build by default rewrites
the architecture which leads to unexpected results.

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

llvm-svn: 347022

5 years ago[CMake] Use the correct spelling for armv7 in Fuchsia's toolchain
Petr Hosek [Fri, 16 Nov 2018 04:09:47 +0000 (04:09 +0000)]
[CMake] Use the correct spelling for armv7 in Fuchsia's toolchain

We need to explicitly specify the architecture version.

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

llvm-svn: 347021

5 years agoDon't use uniform initialization syntax.
Zachary Turner [Fri, 16 Nov 2018 03:16:27 +0000 (03:16 +0000)]
Don't use uniform initialization syntax.

llvm-svn: 347020

5 years ago[Clang][Sema]Choose a better candidate in overload function call if there is a compat...
Zi Xuan Wu [Fri, 16 Nov 2018 03:00:00 +0000 (03:00 +0000)]
[Clang][Sema]Choose a better candidate in overload function call if there is a compatible vector conversion instead of ambiguous call error

There are 2 function variations with vector type parameter. When we call them with argument of different vector type we would prefer to
choose the variation with implicit argument conversion of compatible vector type instead of incompatible vector type. For example,

typedef float __v4sf __attribute__((__vector_size__(16)));
void f(vector float);
void f(vector signed int);

int main {
   __v4sf a;
   f(a);
}

Here, we'd like to choose f(vector float) but not report an ambiguous call error.

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

llvm-svn: 347019

5 years ago[NativePDB] Rewrite the PdbSymUid to use our own custom namespacing scheme.
Zachary Turner [Fri, 16 Nov 2018 02:42:32 +0000 (02:42 +0000)]
[NativePDB] Rewrite the PdbSymUid to use our own custom namespacing scheme.

Originally we created our 64-bit UID scheme by using the first byte as
sort of a "tag" to represent what kind of symbol this was, and we
re-used the PDB_SymType enumeration for this.  For native pdb support,
this is not really the right abstraction layer, because what we really
want is something that tells us *how* to find the symbol.  This means,
specifically, is in the globals stream / public stream / module stream /
TPI stream / etc, and for whichever one it is in, where is it within
that stream?

A good example of why the old namespacing scheme was insufficient is
that it is more or less impossible to create a uid for a field list
member of a class/struction/union/enum that tells you how to locate
the original record.

With this new scheme, the first byte is no longer a PDB_SymType enum
but a new enum created specifically to identify where in the PDB
this record lives.  This gives us much better flexibility in
what kinds of symbols the uids can identify.

llvm-svn: 347018

5 years ago[VFS] Update unittest to fix Windows buildbot.
Volodymyr Sapsai [Fri, 16 Nov 2018 02:20:33 +0000 (02:20 +0000)]
[VFS] Update unittest to fix Windows buildbot.

Buildbot http://lab.llvm.org:8011/builders/clang-x64-windows-msvc is failing
because it doesn't like paths in VFS, make them more Windows-friendly.

Follow up to r347009.

llvm-svn: 347016

5 years agoRevert r347014 "[X86] Add some test cases for vector multiplies on vectors shorter...
Craig Topper [Fri, 16 Nov 2018 01:57:55 +0000 (01:57 +0000)]
Revert r347014 "[X86] Add some test cases for vector multiplies on vectors shorter than 128 bits with -x86-experimental-vector-widening-legalization."

Apparently I failed to update this after turnign sign extend to any extend.

llvm-svn: 347015

5 years ago[X86] Add some test cases for vector multiplies on vectors shorter than 128 bits...
Craig Topper [Fri, 16 Nov 2018 01:52:32 +0000 (01:52 +0000)]
[X86] Add some test cases for vector multiplies on vectors shorter than 128 bits with -x86-experimental-vector-widening-legalization.

llvm-svn: 347014

5 years agoAdded missing whitespace in the link.
Artem Belevich [Fri, 16 Nov 2018 01:23:12 +0000 (01:23 +0000)]
Added missing whitespace in the link.

llvm-svn: 347013

5 years ago[VFS] Implement `RedirectingFileSystem::getRealPath`.
Volodymyr Sapsai [Fri, 16 Nov 2018 01:18:04 +0000 (01:18 +0000)]
[VFS] Implement `RedirectingFileSystem::getRealPath`.

It fixes the case when Objective-C framework is added as a subframework
through a symlink. When parent framework infers a module map and fails
to detect a symlink, it would add a subframework as a submodule. And
when we parse module map for the subframework, we would encounter an
error like

> error: umbrella for module 'WithSubframework.Foo' already covers this directory

By implementing `getRealPath` "an egregious but useful hack" in
`ModuleMap::inferFrameworkModule` works as expected.

LLVM commit is r347009.

rdar://problem/45821279

Reviewers: bruno, benlangmuir, erik.pilkington

Reviewed By: bruno

Subscribers: hiraditya, dexonsmith, JDevlieghere, cfe-commits, llvm-commits

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

llvm-svn: 347012

5 years ago[X86] Use ANY_EXTEND instead of SIGN_EXTEND in the AVX2 and later path for legalizing...
Craig Topper [Fri, 16 Nov 2018 01:16:59 +0000 (01:16 +0000)]
[X86] Use ANY_EXTEND instead of SIGN_EXTEND in the AVX2 and later path for legalizing vXi8 multiply.

We aren't going to use the upper bits of the multiply result that the extend would effect. So we don't need a specific type of extend.

This makes some reduction test cases shorter because we were previously trying to sign_extend a truncate which we can't eliminate.

llvm-svn: 347011

5 years ago[X86] Update a couple comments to remove a mention of a sign extending that no longer...
Craig Topper [Fri, 16 Nov 2018 01:16:51 +0000 (01:16 +0000)]
[X86] Update a couple comments to remove a mention of a sign extending that no longer happens. NFC

llvm-svn: 347010

5 years ago[VFS] Implement `RedirectingFileSystem::getRealPath`.
Volodymyr Sapsai [Fri, 16 Nov 2018 01:15:54 +0000 (01:15 +0000)]
[VFS] Implement `RedirectingFileSystem::getRealPath`.

It fixes the case when Objective-C framework is added as a subframework
through a symlink. When parent framework infers a module map and fails
to detect a symlink, it would add a subframework as a submodule. And
when we parse module map for the subframework, we would encounter an
error like

> error: umbrella for module 'WithSubframework.Foo' already covers this directory

By implementing `getRealPath` "an egregious but useful hack" in
`ModuleMap::inferFrameworkModule` works as expected.

rdar://problem/45821279

Reviewers: bruno, benlangmuir, erik.pilkington

Reviewed By: bruno

Subscribers: hiraditya, dexonsmith, JDevlieghere, cfe-commits, llvm-commits

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

llvm-svn: 347009

5 years ago[AMDGPU] Add FixupVectorISel pass, currently Supports SREGs in GLOBAL LD/ST
Ron Lieberman [Fri, 16 Nov 2018 01:13:34 +0000 (01:13 +0000)]
[AMDGPU] Add FixupVectorISel pass, currently Supports SREGs in GLOBAL LD/ST

Add a pass to fixup various vector ISel issues.
Currently we handle converting GLOBAL_{LOAD|STORE}_*
and GLOBAL_Atomic_* instructions into their _SADDR variants.
This involves feeding the sreg into the saddr field of the new instruction.

llvm-svn: 347008

5 years ago[CUDA] updated CompileCudaWithLLVM.rst
Artem Belevich [Fri, 16 Nov 2018 01:02:43 +0000 (01:02 +0000)]
[CUDA] updated CompileCudaWithLLVM.rst

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

llvm-svn: 347007

5 years ago[analyzer] ConversionChecker: handle floating point
Kristof Umann [Fri, 16 Nov 2018 01:00:55 +0000 (01:00 +0000)]
[analyzer] ConversionChecker: handle floating point

Extend the alpha.core.Conversion checker to handle implicit converions
where a too large integer value is converted to a floating point type. Each
floating point type has a range where it can exactly represent all integers; we
emit a warning when the integer value is above this range. Although it is
possible to exactly represent some integers which are outside of this range
(those that are divisible by a large enough power of 2); we still report cast
involving those, because their usage may lead to bugs. (For example, if 1<<24
is stored in a float variable x, then x==x+1 holds.)

Patch by: Donát Nagy!

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

llvm-svn: 347006

5 years ago[WebAssembly] Change type of wake count to unsigned int
Heejin Ahn [Fri, 16 Nov 2018 00:48:58 +0000 (00:48 +0000)]
[WebAssembly] Change type of wake count to unsigned int

Summary:
We discussed this at the Nov 12th CG meeting, and decided to use the
unsigned semantics for the wake count.
Corresponding spec change:
https://github.com/WebAssembly/threads/pull/110

Reviewers: sbc100

Subscribers: dschuff, jgravelle-google, sunfish, jfb, cfe-commits

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

llvm-svn: 347005

5 years agoRe-apply r346985: [ADT] Drop llvm::Optional clang-specific optimization for trivially...
Tom Stellard [Fri, 16 Nov 2018 00:47:24 +0000 (00:47 +0000)]
Re-apply r346985: [ADT] Drop llvm::Optional clang-specific optimization for trivially copyable types

Remove a test case that was added with the optimization we are now
removing.

llvm-svn: 347004

5 years ago[WebAssembly] Split BBs after throw instructions
Heejin Ahn [Fri, 16 Nov 2018 00:47:18 +0000 (00:47 +0000)]
[WebAssembly] Split BBs after throw instructions

Summary:
`throw` instruction is a terminator in wasm, but BBs were not splitted
after `throw` instructions, causing machine instruction verifier to
fail.

This patch
- Splits BBs after `throw` instructions in WasmEHPrepare and adding an
  unreachable instruction after `throw`, which will be deleted in
  LateEHPrepare pass
- Refactors WasmEHPrepare into two member functions
- Changes the semantics of `eraseBBsAndChildren` in LateEHPrepare pass
  to match that of WasmEHPrepare pass, which is newly added. Now
  `eraseBBsAndChildren` does not delete BBs with remaining predecessors.
- Fixes style nits, making static function names conform to clang-tidy
- Re-enables the test temporarily disabled by rL346840 && rL346845

Reviewers: dschuff

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

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

llvm-svn: 347003

5 years ago[AMDGPU] NFC Test commit
Ron Lieberman [Fri, 16 Nov 2018 00:46:51 +0000 (00:46 +0000)]
[AMDGPU] NFC Test commit

llvm-svn: 347002

5 years agoAMDHSA: More code object v3 fixes:
Konstantin Zhuravlyov [Thu, 15 Nov 2018 23:14:23 +0000 (23:14 +0000)]
AMDHSA: More code object v3 fixes:

  - Make sure IsaInfo::hasCodeObjectV3 returns true only
    for AMDHSA
  - Update assembler metadata tests to use v2 by default

llvm-svn: 347001

5 years ago[clang-tidy] Fix reference to -[NSError init] in AvoidNSErrorInitCheck.h
Stephane Moore [Thu, 15 Nov 2018 22:38:39 +0000 (22:38 +0000)]
[clang-tidy] Fix reference to -[NSError init] in AvoidNSErrorInitCheck.h

llvm-svn: 347000

5 years agoFix compilation failure in unit tests on Windows.
Zachary Turner [Thu, 15 Nov 2018 22:03:49 +0000 (22:03 +0000)]
Fix compilation failure in unit tests on Windows.

llvm-svn: 346999

5 years agoRemove myself as owner of clang-query.
Peter Collingbourne [Thu, 15 Nov 2018 22:02:10 +0000 (22:02 +0000)]
Remove myself as owner of clang-query.

I haven't been involved with the project for years, so it's probably
best for someone else to be the code owner.

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

llvm-svn: 346998

5 years ago[CMake] Explicitly list Linux targets for Fuchsia toolchain
Petr Hosek [Thu, 15 Nov 2018 21:55:59 +0000 (21:55 +0000)]
[CMake] Explicitly list Linux targets for Fuchsia toolchain

Not all Linux targets use the ${arch}-linux-gnu spelling, so instead
specify the list of Linux explicitly.

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

llvm-svn: 346997

5 years agoFix parens warning in assert in ASTMatchFinder
Erich Keane [Thu, 15 Nov 2018 21:35:35 +0000 (21:35 +0000)]
Fix parens warning in assert in ASTMatchFinder

Change-Id: Ie34f9c6846b98fba87449e73299519fc2346bac1
llvm-svn: 346996

5 years ago[X86] Remove ANY_EXTEND special case from canReduceVMulWidth
Craig Topper [Thu, 15 Nov 2018 21:19:32 +0000 (21:19 +0000)]
[X86] Remove ANY_EXTEND special case from canReduceVMulWidth

Removing this code doesn't affect any lit tests so it doesn't appear to be tested anymore. I assume it was when it was added, but I guess something else changed? Code coverage report also says its unused.

I mostly didn't like that it seemed to count the sign bits as if it was a sign_extend, but then set isPositive as if it was a zero_extend. It feels like we should have picked one interpretation?

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

llvm-svn: 346995

5 years agoImplement basic DidAttach and DidLaunch for DynamicLoaderWindowsDYLD
Nathan Lanza [Thu, 15 Nov 2018 20:58:09 +0000 (20:58 +0000)]
Implement basic DidAttach and DidLaunch for DynamicLoaderWindowsDYLD

Summary:
This commit implements basic DidAttach and DidLaunch for the windows
DynamicLoader plugin which allow us to load shared libraries from the
inferior.

Reviewers: sas, zturner

Reviewed By: zturner

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

llvm-svn: 346994

5 years agoForce SHELL to be cmd.exe on Windows for the test suite
Nathan Lanza [Thu, 15 Nov 2018 20:56:44 +0000 (20:56 +0000)]
Force SHELL to be cmd.exe on Windows for the test suite

Summary:
Windows make will search for other shells and choose those over cmd
if available (e.g. C:\cygdrive\bin\sh.exe). This shell has numerous
issues with path handling (/ vs \\ vs \ and C:). So default to using
cmd.exe which is known to work.

Reviewers: zturner, sas, xiaobai

Reviewed By: zturner

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

llvm-svn: 346993

5 years ago[AMDGPU] Update code object metadata format documentation
Scott Linder [Thu, 15 Nov 2018 20:46:55 +0000 (20:46 +0000)]
[AMDGPU] Update code object metadata format documentation

* Add amdhsa prefix to names to allow other tools to use the metadata
  without collision.
* Make names consistent.
* Simplify structure.
* Change note record ID.
* Switch from YAML to MsgPack format.
* Document metadata assembler directive.

Patch By: t-tye (Tony Tye)
Differential Revision: https://reviews.llvm.org/D53445

llvm-svn: 346992

5 years agoA unit test file moved.
Jason Molenda [Thu, 15 Nov 2018 20:28:55 +0000 (20:28 +0000)]
A unit test file moved.

llvm-svn: 346991

5 years agoRevert "[ADT] Drop llvm::Optional clang-specific optmization for trivially copyable...
Tom Stellard [Thu, 15 Nov 2018 20:27:11 +0000 (20:27 +0000)]
Revert "[ADT] Drop llvm::Optional clang-specific optmization for trivially copyable types"

This reverts commit r346985.

It looks like one of the unittests also needs to be updated, reverting while I investigate.

llvm-svn: 346990

5 years agoDisable filesystem benchmark when libstdc++ doesn't support it
Eric Fiselier [Thu, 15 Nov 2018 19:53:43 +0000 (19:53 +0000)]
Disable filesystem benchmark when libstdc++ doesn't support it

llvm-svn: 346989

5 years agoAdd a check whether or not a str is utf8 prior to emplacing
Nathan Lanza [Thu, 15 Nov 2018 19:49:57 +0000 (19:49 +0000)]
Add a check whether or not a str is utf8 prior to emplacing

Summary:
Highlighing junk data on VSCode can send a query for evaluate which
fails. In particular cases on Windows, this the error message can end
up as a c-string of [-35,-35,-35,-35,...]. Attempting to emplace this
as the error message causes an assert failure.

Prior to emplacing the error message, confirm that it is valid UTF8 to
eliminate errors such as mentione above.

Reviewers: xiaobai, clayborg

Reviewed By: clayborg

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

llvm-svn: 346988

5 years ago[ADT] Drop llvm::Optional clang-specific optmization for trivially copyable types
Tom Stellard [Thu, 15 Nov 2018 19:32:24 +0000 (19:32 +0000)]
[ADT] Drop llvm::Optional clang-specific optmization for trivially copyable types

Summary:
This fixes libLLVM.so ABI mismatches between llvm compiled with clang
and llvm compiled with gcc (PR39427).

Reviewers: bkramer, sylvestre.ledru, mgorny, hans

Reviewed By: bkramer, hans

Subscribers: dexonsmith, kristina, llvm-commits

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

llvm-svn: 346985

5 years agoUpgrade Google Benchmark library to ToT
Eric Fiselier [Thu, 15 Nov 2018 19:22:53 +0000 (19:22 +0000)]
Upgrade Google Benchmark library to ToT

llvm-svn: 346984

5 years ago[X86] Minor cleanup to getExtendInVec. NFCI
Craig Topper [Thu, 15 Nov 2018 19:20:22 +0000 (19:20 +0000)]
[X86] Minor cleanup to getExtendInVec. NFCI

Use unsigned to calculate the subvector index to avoid a cast.

Remove an unnecessary condition and replace it with a stronger assert.

Use the InVT variable we updated when we extracted instead of grabbing it from the In SDValue.

llvm-svn: 346983

5 years ago[InstCombine] adjust rotate direction in tests; NFC
Sanjay Patel [Thu, 15 Nov 2018 19:15:41 +0000 (19:15 +0000)]
[InstCombine] adjust rotate direction in tests; NFC

Copy/paste errors - all of the changed tests rotated left before.

llvm-svn: 346982

5 years agoPort the Darwin universal binary testcase to x86_64.
Adrian Prantl [Thu, 15 Nov 2018 19:15:03 +0000 (19:15 +0000)]
Port the Darwin universal binary testcase to x86_64.

Xcode 10 doesn't ship with an i386 SDK any more. This patch ports the
testcase from an i386/x86_64 -> x86_64/x86_64h universal binary.

rdar://problem/46099343

llvm-svn: 346981

5 years ago[X86] Add -x86-experimental-vector-widening support to reduceVMULWidth and combineMul...
Craig Topper [Thu, 15 Nov 2018 18:59:31 +0000 (18:59 +0000)]
[X86] Add -x86-experimental-vector-widening support to reduceVMULWidth and combineMulToPMADDWD

In reduceVMULWidth, we no longer need to worry about extending the vector to 128 bits first. Regular widening of extends, muls and shuffles will take care of that for us.

In combineMulToPMADDWD, we can handle v2i32 multiplies and allow the VPMADDWD to be widened to v4i32 during type legalization by adding custom widening like we do have for AVG/ADDUS/SUBUS. I had to modify that code a little to allow different and output VTs.

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

llvm-svn: 346980

5 years ago[WebAssembly] Fix return type of nextByte
Thomas Lively [Thu, 15 Nov 2018 18:56:49 +0000 (18:56 +0000)]
[WebAssembly] Fix return type of nextByte

Summary:
The old return type did not allow for correct error reporting and was
causing a compiler warning.

Reviewers: aheejin

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

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

llvm-svn: 346979

5 years ago[BinaryFormat] Add MsgPackTypes
Scott Linder [Thu, 15 Nov 2018 18:50:01 +0000 (18:50 +0000)]
[BinaryFormat] Add MsgPackTypes

Add data structure to represent MessagePack "documents" and convert
to/from both MessagePack and YAML encodings.

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

llvm-svn: 346978

5 years ago[InstCombine] add tests for funnel shift (rotate) canonicalization; NFC
Sanjay Patel [Thu, 15 Nov 2018 18:19:56 +0000 (18:19 +0000)]
[InstCombine] add tests for funnel shift (rotate) canonicalization; NFC

llvm-svn: 346975

5 years ago[WebAssembly] Import the stack pointer when building shared libraries
Sam Clegg [Thu, 15 Nov 2018 18:15:54 +0000 (18:15 +0000)]
[WebAssembly] Import the stack pointer when building shared libraries

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

llvm-svn: 346974

5 years ago[X86] Guess that a CPU is Icelake it if reports support for AVX512VBMI2.
Craig Topper [Thu, 15 Nov 2018 18:11:52 +0000 (18:11 +0000)]
[X86] Guess that a CPU is Icelake it if reports support for AVX512VBMI2.

llvm-svn: 346973

5 years ago[WebAssembly] Refactor config setting and checking. NFC.
Sam Clegg [Thu, 15 Nov 2018 18:09:41 +0000 (18:09 +0000)]
[WebAssembly] Refactor config setting and checking. NFC.

This matches the way the ELF backend does it.

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

llvm-svn: 346972

5 years ago[LTO] Load sample profile in LTO link step.
Xin Tong [Thu, 15 Nov 2018 18:06:42 +0000 (18:06 +0000)]
[LTO] Load sample profile in LTO link step.

Summary:
Load sample profile in LTO link step.
ThinLTO calls populateModulePassManager to load the profile

Reviewers: tejohnson, davidxl, danielcdh

Subscribers: mehdi_amini, inglorion, steven_wu, dexonsmith, llvm-commits

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

llvm-svn: 346971

5 years ago[TTI] Reduction costs only need to include a single extract element cost
Simon Pilgrim [Thu, 15 Nov 2018 17:42:53 +0000 (17:42 +0000)]
[TTI] Reduction costs only need to include a single extract element cost

We were adding the entire scalarization extraction cost for reductions, which returns the total cost of extracting every element of a vector type.

For reductions we don't need to do this - we just need to extract the 0'th element after the reduction pattern has completed.

Fixes PR37731

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

llvm-svn: 346970

5 years ago[AST] Store the string data in StringLiteral in a trailing array of chars
Bruno Ricci [Thu, 15 Nov 2018 17:31:16 +0000 (17:31 +0000)]
[AST] Store the string data in StringLiteral in a trailing array of chars

Use the newly available space in the bit-fields of Stmt and store the
string data in a trailing array of chars after the trailing array
of SourceLocation. This cuts the size of StringLiteral by 2 pointers.

Also refactor slightly StringLiteral::Create and StringLiteral::CreateEmpty
so that StringLiteral::Create is just responsible for the allocation, and the
constructor is responsible for doing all the initialization. This match what
is done for the other classes in general.

This patch should have no other functional changes apart from this.

A concern was raised during review about the interaction between
this patch and serialization abbreviations. I believe however that
there is currently no abbreviation defined for StringLiteral.
The only statements/expressions which have abbreviations are currently
DeclRefExpr, IntegerLiteral, CharacterLiteral and ImplicitCastExpr.

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

Reviewed By: dblaikie, rjmccall

llvm-svn: 346969

5 years ago[InstCombine] fix rotate narrowing bug for non-pow-2 types
Sanjay Patel [Thu, 15 Nov 2018 17:19:14 +0000 (17:19 +0000)]
[InstCombine] fix rotate narrowing bug for non-pow-2 types

llvm-svn: 346968

5 years ago[AST][NFC] Various NFCs in StringLiteral
Bruno Ricci [Thu, 15 Nov 2018 16:42:14 +0000 (16:42 +0000)]
[AST][NFC] Various NFCs in StringLiteral

Factored out of D54166
([AST] Store the string data in StringLiteral in a trailing array of chars):

* For-range loops in containsNonAscii and containsNonAsciiOrNull.
* Comments and style fixes.
* int -> unsigned in mapCharByteWidth since TargetInfo::getCharWidth
  and friends return an unsigned, and StringLiteral manipulates and
  stores CharByteWidth as an unsigned.

llvm-svn: 346967

5 years ago[InstCombine] add rotate narrowing tests with odd types; NFC
Sanjay Patel [Thu, 15 Nov 2018 16:34:26 +0000 (16:34 +0000)]
[InstCombine] add rotate narrowing tests with odd types; NFC

There's a potential miscompile here. It's unlikely in the real
world because this transform is guarded with shouldChangeType(),
but this test file doesn't include a standard data-layout for
some reason (despite including a custom 1), so we can see the bug.

llvm-svn: 346966

5 years ago[SLPVectorizer][X86] Regenerate reduction minmax tests and cleanup check prefixes
Simon Pilgrim [Thu, 15 Nov 2018 16:34:15 +0000 (16:34 +0000)]
[SLPVectorizer][X86] Regenerate reduction minmax tests and cleanup check prefixes

llvm-svn: 346965

5 years ago[SLPVectorizer][X86] Regenerate reduction tests and add PR37731 test
Simon Pilgrim [Thu, 15 Nov 2018 16:08:25 +0000 (16:08 +0000)]
[SLPVectorizer][X86] Regenerate reduction tests and add PR37731 test

Cleanup check prefixes

llvm-svn: 346964