platform/upstream/llvm.git
5 years ago[PdbAstBuilder] Remove unused functions
Jonas Devlieghere [Tue, 8 Jan 2019 20:58:54 +0000 (20:58 +0000)]
[PdbAstBuilder] Remove unused functions

PdbAstBuilder.cpp:273:20: warning: unused function 'GetParentUniqueName' [-Wunused-function]
PdbAstBuilder.cpp:267:13: warning: unused function 'IsUniqueNameEnumTag' [-Wunused-function]

llvm-svn: 350652

5 years agoConvert to LLDB coding style (NFC)
Adrian Prantl [Tue, 8 Jan 2019 20:48:40 +0000 (20:48 +0000)]
Convert to LLDB coding style (NFC)

llvm-svn: 350651

5 years agoWork around a linker error caused by https://reviews.llvm.org/D56084.
Adrian Prantl [Tue, 8 Jan 2019 20:38:22 +0000 (20:38 +0000)]
Work around a linker error caused by https://reviews.llvm.org/D56084.

This unbreaks all bots that build with -DLLVM_ENABLE_MODULES=1

llvm-svn: 350650

5 years ago[Sema] Teach Clang that aligned allocation is not supported with macosx10.13
Louis Dionne [Tue, 8 Jan 2019 20:26:56 +0000 (20:26 +0000)]
[Sema] Teach Clang that aligned allocation is not supported with macosx10.13

Summary:
r306722 added diagnostics when aligned allocation is used with deployment
targets that do not support it, but the first macosx supporting aligned
allocation was incorrectly set to 10.13. In reality, the dylib shipped
with macosx10.13 does not support aligned allocation, but the dylib
shipped with macosx10.14 does.

Reviewers: ahatanak

Subscribers: christof, jkorous, dexonsmith, cfe-commits

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

llvm-svn: 350649

5 years agoFix clang for r350647: Missed a function rename
Philip Pfaffe [Tue, 8 Jan 2019 20:00:55 +0000 (20:00 +0000)]
Fix clang for r350647: Missed a function rename

llvm-svn: 350648

5 years ago[NewPM] Port tsan
Philip Pfaffe [Tue, 8 Jan 2019 19:21:57 +0000 (19:21 +0000)]
[NewPM] Port tsan

A straightforward port of tsan to the new PM, following the same path
as D55647.

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

llvm-svn: 350647

5 years ago[x86] add tests for PR40243; NFC
Sanjay Patel [Tue, 8 Jan 2019 19:15:21 +0000 (19:15 +0000)]
[x86] add tests for PR40243; NFC

llvm-svn: 350646

5 years agoFix opencl test broken on windows by r350643.
Erich Keane [Tue, 8 Jan 2019 19:10:43 +0000 (19:10 +0000)]
Fix opencl test broken on windows by r350643.

Windows doesn't allow common with alignment >32 bits, so these tests
were broken in windows mode.  This patch makes 'common' optional in
these cases.

Change-Id: I4d5fdd07ecdafc3570ef9b09cd816c2e5e4ed15e
llvm-svn: 350645

5 years ago[NFC] Don't over-eagerly check block alignment
JF Bastien [Tue, 8 Jan 2019 18:51:38 +0000 (18:51 +0000)]
[NFC] Don't over-eagerly check block alignment

Alignment of __block isn't relevant to this test, remove its checking.

llvm-svn: 350644

5 years agoLimit COFF 'common' emission to <=32 alignment types.
Erich Keane [Tue, 8 Jan 2019 18:44:22 +0000 (18:44 +0000)]
Limit COFF 'common' emission to <=32 alignment types.

As reported in PR33035, LLVM crashes if given a common object with an
alignment of greater than 32 bits. This is because the COFF file format
does not support these alignments, so emitting them is broken anyway.

This patch changes any global definitions greater than 32 bit alignment
to no longer be in 'common'.

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

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

Change-Id: I48609289753b7f3b58c5e2bc1712756750fbd45a
llvm-svn: 350643

5 years ago__has_feature(pragma_clang_attribute_namespaces) should be __has_extension
Erik Pilkington [Tue, 8 Jan 2019 18:24:39 +0000 (18:24 +0000)]
__has_feature(pragma_clang_attribute_namespaces) should be __has_extension

Thanks to Richard Smith for pointing this out.

llvm-svn: 350642

5 years agoRename DIFlagFixedEnum to DIFlagEnumClass. NFC
Paul Robinson [Tue, 8 Jan 2019 17:52:29 +0000 (17:52 +0000)]
Rename DIFlagFixedEnum to DIFlagEnumClass. NFC

llvm-svn: 350641

5 years ago[UnrollRuntime] Fix domTree failures in multiexit unrolling
Anna Thomas [Tue, 8 Jan 2019 17:16:25 +0000 (17:16 +0000)]
[UnrollRuntime] Fix domTree failures in multiexit unrolling

Summary:
This fixes the IDom for exit blocks and all blocks reachable from the exit blocks, when runtime unrolling under multiexit/exiting case.
We initially had a restrictive check that the IDom is only updated when
it is the header of the loop.
However, we also need to update the IDom to the correct one when the
IDom is any block within the original loop. See added test cases (which
fail dom tree verification without the patch).

Reviewers: reames, mzolotukhin, mkazantsev, hfinkel

Reviewed by: brzycki, kuhar

Subscribers: zzheng, dmgreen, llvm-commits

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

llvm-svn: 350640

5 years agoRevert "Split -Wdelete-non-virtual-dtor into -Wdelete-abstract-non-virtual-dtor"
Erik Pilkington [Tue, 8 Jan 2019 17:04:38 +0000 (17:04 +0000)]
Revert "Split -Wdelete-non-virtual-dtor into -Wdelete-abstract-non-virtual-dtor"

This reverts commit r350585. There was some late post-commit review
on phab.

llvm-svn: 350639

5 years agoFix use-after-free bug in Tooling.
Alexander Kornienko [Tue, 8 Jan 2019 16:55:13 +0000 (16:55 +0000)]
Fix use-after-free bug in Tooling.

Summary:
`buildASTFromCodeWithArgs()` was creating a memory buffer referencing a
stack-allocated string.  This diff changes the implementation to copy the code
string into the memory buffer so that said buffer owns the memory.

Patch by Yitzhak Mandelbaum.

Reviewers: alexfh

Reviewed By: alexfh

Subscribers: cfe-commits, EricWF

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

llvm-svn: 350638

5 years ago[BPF] Fix .BTF.ext reloc type assigment issue
Yonghong Song [Tue, 8 Jan 2019 16:36:06 +0000 (16:36 +0000)]
[BPF] Fix .BTF.ext reloc type assigment issue

Commit f1db33c5c1a9 ("[BPF] Disable relocation for .BTF.ext section")
assigned relocation type R_BPF_NONE if the fixup type
is FK_Data_4 and the symbol is temporary.
The reason is we use FK_Data_4 as a fixup type
for insn offsets in .BTF.ext section.

Just checking whether the symbol is temporary is not enough.
For example, .debug_info may reference some strings whose
fixup is FK_Data_4 with a temporary symbol as well.

To truely reflect the case for .BTF.ext section,
this patch further checks that the section associateed with the symbol
must be SHF_ALLOC and SHF_EXECINSTR, i.e., in the text section.
This fixed the above-mentioned problem.

Signed-off-by: Yonghong Song <yhs@fb.com>
llvm-svn: 350637

5 years agoDon't emit DW_AT_enum_class unless it's actually an 'enum class'.
Paul Robinson [Tue, 8 Jan 2019 16:28:11 +0000 (16:28 +0000)]
Don't emit DW_AT_enum_class unless it's actually an 'enum class'.

Finishes off the functional part of PR36168.

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

llvm-svn: 350636

5 years ago[AST][NFC] Pack CXXScalarValueInitExpr
Bruno Ricci [Tue, 8 Jan 2019 16:08:54 +0000 (16:08 +0000)]
[AST][NFC] Pack CXXScalarValueInitExpr

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

llvm-svn: 350635

5 years ago[OPENMP]Fix PR40191: Do not allow orphaned cancellation constructs.
Alexey Bataev [Tue, 8 Jan 2019 15:53:42 +0000 (15:53 +0000)]
[OPENMP]Fix PR40191: Do not allow orphaned cancellation constructs.

Prohibited use of the orphaned cancellation directives.

llvm-svn: 350634

5 years ago[clangd] Fix a crash when reading an empty index file.
Haojian Wu [Tue, 8 Jan 2019 15:24:47 +0000 (15:24 +0000)]
[clangd] Fix a crash when reading an empty index file.

Summary:
Unfortunately, yaml::Input::setCurrentDocument() and yaml::Input::nextDocument() are
internal APIs, the way we use them may cause a nullptr accessing when
processing an empty YAML file.

Reviewers: ilya-biryukov

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

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

llvm-svn: 350633

5 years ago[gn build] Update readme
Nico Weber [Tue, 8 Jan 2019 15:19:00 +0000 (15:19 +0000)]
[gn build] Update readme

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

llvm-svn: 350632

5 years ago[gn build] Make sync_source_lists_from_cmake.py check that all LLVM unittests are...
Nico Weber [Tue, 8 Jan 2019 15:17:19 +0000 (15:17 +0000)]
[gn build] Make sync_source_lists_from_cmake.py check that all LLVM unittests are present

Now that the PowerPC and WebAssembly targets are added, this check passes.

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

llvm-svn: 350631

5 years ago[MachineVerifier] Include offending register in allocatable live-in error msg.
Florian Hahn [Tue, 8 Jan 2019 15:16:23 +0000 (15:16 +0000)]
[MachineVerifier] Include offending register in allocatable live-in error msg.

This patch adds a convenience report() method for physical registers and
uses it to print the offending register with the 'MBB has allocatable
live-in' error.

Reviewers: MatzeB, rtereshin, dsanders

Reviewed By: dsanders

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

llvm-svn: 350630

5 years ago[gn build] Add build files for llvm/lib/Target/PowerPC + tests
Nico Weber [Tue, 8 Jan 2019 15:16:14 +0000 (15:16 +0000)]
[gn build] Add build files for llvm/lib/Target/PowerPC + tests

The PowerPC target itself is similar to the X86 target in https://reviews.llvm.org/rL348903
The llvm-exegesis unittests bits are similar to the corresponding AArch64 in https://reviews.llvm.org/rL350499
The whole patch is very similar to the WebAssembly target being added in https://reviews.llvm.org/rL350628

Also add a dep from tools/llvm-exegesis/lib to the AArch64 subdir, which I
failed to do in r350499.

The motivation for this target is solely that it has a unit test and I want to
enable the GN<->CMake unittest syncing check for llvm.

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

llvm-svn: 350629

5 years ago[gn build] Add build files for llvm/lib/Target/WebAssembly + tests
Nico Weber [Tue, 8 Jan 2019 15:12:42 +0000 (15:12 +0000)]
[gn build] Add build files for llvm/lib/Target/WebAssembly + tests

The WebAssembly target itself is similar to the X86 target in https://reviews.llvm.org/rL348903
The unittests bits are similar to the corresponding AArch64 in https://reviews.llvm.org/rL350499

The motivation for this target is solely that it has a unit test and I want to
enable the GN<->CMake unittest syncing check for llvm. (After this, only the
PowerPC target is needed and I can turn it on.)

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

llvm-svn: 350628

5 years ago[AST][NFC] Pack CXXNoexceptExpr and SubstNonTypeTemplateParmExpr
Bruno Ricci [Tue, 8 Jan 2019 14:44:34 +0000 (14:44 +0000)]
[AST][NFC] Pack CXXNoexceptExpr and SubstNonTypeTemplateParmExpr

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

Use this opportunity to run clang-format on these two classes and
fix some style issues. NFC overall.

llvm-svn: 350627

5 years ago[GlobalISel] Fix choice of instruction selector for AArch64 at -O0 with -global-isel=0
Petr Pavlu [Tue, 8 Jan 2019 14:19:06 +0000 (14:19 +0000)]
[GlobalISel] Fix choice of instruction selector for AArch64 at -O0 with -global-isel=0

Commit rL347861 introduced an unintentional change in the behaviour when
compiling for AArch64 at -O0 with -global-isel=0. Previously, explicitly
disabling GlobalISel resulted in using FastISel but an updated condition
in the commit changed it to using SelectionDAG. The patch fixes this
condition and slightly better organizes the code that chooses the
instruction selector.

Fixes PR40131.

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

llvm-svn: 350626

5 years ago[AST] Pack CXXDependentScopeMemberExpr
Bruno Ricci [Tue, 8 Jan 2019 14:17:00 +0000 (14:17 +0000)]
[AST] Pack CXXDependentScopeMemberExpr

Use the newly available space in the bit-fields of Stmt. Additionally store
FirstQualifierFoundInScope as a trailing object since it is most of the time
null (non-null for 2 of the 35446 CXXDependentScopeMemberExpr when parsing
all of Boost).

It would be possible to move the data for the nested-name-specifier to a
trailing object too to save another 2 pointers, however doing so did actually
regress the time taken to parse all of Boost slightly.

This saves 8 bytes + 1 pointer per CXXDependentScopeMemberExpr in the vast
majority of cases.

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

Reviewed By: rjmccall

llvm-svn: 350625

5 years ago[DA][NewPM] Add a printerpass and port the testsuite
Philip Pfaffe [Tue, 8 Jan 2019 14:06:58 +0000 (14:06 +0000)]
[DA][NewPM] Add a printerpass and port the testsuite

The new-pm version of DA is untested. Testing requires a printer, so
add that and use it in the existing DA tests.

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

llvm-svn: 350624

5 years ago[X86][Darwin] Emit compact-unwind for register-sized stack adjustments
Francis Visoiu Mistrih [Tue, 8 Jan 2019 13:53:15 +0000 (13:53 +0000)]
[X86][Darwin] Emit compact-unwind for register-sized stack adjustments

For stack frames on the size of a register in x86, a code size optimization
emits "push rax/eax" instead of "sub" for stack allocation. For example:

foo:
  .cfi_startproc
BB#0:
  pushq %rax
Ltmp0:
  .cfi_def_cfa_offset 16
  ...
  .cfi_endproc

However, we are falling back to DWARF in this case because we cannot
encode %rax as a saved register.

This requirement is wrong, since we don't care about the contents of
%rax, it is the equivalent of a sub.

In order to specify that we care about the contents of %rax, we would
need a .cfi_offset %rax, <offset>.

It's also overzealous in the case where there are pushes for callee saved
registers followed by a "push rax/eax" instead of "sub", in which case we should
also be able to encode the callee saved regs and everything else using compact
unwind.

Patch authored by Bruno Cardoso Lopes.

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

llvm-svn: 350623

5 years ago[Sema] Diagnose array access preceding the array bounds even when the base type is...
Bruno Ricci [Tue, 8 Jan 2019 13:52:54 +0000 (13:52 +0000)]
[Sema] Diagnose array access preceding the array bounds even when the base type is incomplete.

When the type of the base expression after IgnoreParenCasts is incomplete,
it is still possible to diagnose an array access which precedes the array
bounds.

This is a follow-up on D55862 which added an early return when the type of
the base expression after IgnoreParenCasts was incomplete.

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

Reviewed By: efriedma

llvm-svn: 350622

5 years agoRevert "Revert "Resubmit rL345008 "Split MachinePipeliner code into header and cpp...
Lama Saba [Tue, 8 Jan 2019 13:30:36 +0000 (13:30 +0000)]
Revert "Revert "Resubmit rL345008 "Split MachinePipeliner code into header and cpp files"""

This reverts commit rL350497
reported remaining issues seem to be unrelated to modules or this change.
more info: https://reviews.llvm.org/D56084

llvm-svn: 350621

5 years agoAArch64: avoid splitting vector truncating stores.
Tim Northover [Tue, 8 Jan 2019 13:30:27 +0000 (13:30 +0000)]
AArch64: avoid splitting vector truncating stores.

We have code to split vector splats (of zero and non-zero) for performance
reasons, but it ignores the fact that a store might be truncating.

Actually, truncating stores are formed for vNi8 and vNi16 types. Since the
truncation is from a legal type, the size of the store is always <= 64-bits and
so they don't actually benefit from being split up anyway, so this patch just
disables that transformation.

llvm-svn: 350620

5 years ago[X86] Add shift-by-immediate tests for non-immediate/out-of-range values
Simon Pilgrim [Tue, 8 Jan 2019 12:59:15 +0000 (12:59 +0000)]
[X86] Add shift-by-immediate tests for non-immediate/out-of-range values

As noted on PR40203, for gcc compatibility we need to support non-immediate values in the 'slli/srli/srai' shift by immediate vector intrinsics.

llvm-svn: 350619

5 years ago[GlobalISel] Fix unused variable warning in Release builds.
Benjamin Kramer [Tue, 8 Jan 2019 12:54:26 +0000 (12:54 +0000)]
[GlobalISel] Fix unused variable warning in Release builds.

llvm-svn: 350618

5 years agoProcessLaunchInfo: Remove Target reference
Pavel Labath [Tue, 8 Jan 2019 11:55:19 +0000 (11:55 +0000)]
ProcessLaunchInfo: Remove Target reference

Summary:
The target was being used in FinalizeFileActions to provide default
values for stdin/out/err. Also, most of the logic of this function was
very specific to how the lldb's Target class wants to launch processes,
so I, move it to Target::FinalizeFileActions, inverting the dependency.
The only piece of logic that was useful elsewhere (lldb-server) was the
part which sets up a pty and relevant file actions. I've kept this part
as ProcessLaunchInfo::SetUpPtyRedirection.

This makes ProcessLaunchInfo independent of any high-level lldb constructs.

Reviewers: zturner, jingham, teemperor

Subscribers: lldb-commits

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

llvm-svn: 350617

5 years ago[llvm-readobj] Don't print '@' at end of unversioned dynsym names
James Henderson [Tue, 8 Jan 2019 10:58:05 +0000 (10:58 +0000)]
[llvm-readobj] Don't print '@' at end of unversioned dynsym names

This fixes https://bugs.llvm.org/show_bug.cgi?id=40097. The problem was
caused by a regression in r188022.

See also r350614.

Reviewed by: rupprecht, mstorsjo, Higuoxing, jakehehrlich

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

llvm-svn: 350615

5 years ago[ELF] Remove checking for spurious '@' at the end of dynamic sym names
James Henderson [Tue, 8 Jan 2019 10:50:59 +0000 (10:50 +0000)]
[ELF] Remove checking for spurious '@' at the end of dynamic sym names

llvm-readobj currently has a bug (see PR40097) where it prints '@' at
the end of unversioned dynamic symbols. This bug will be fixed in a
separate later commit, but these tests need fixing first.

Reviewed by: ruiu, Higuoxing

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

llvm-svn: 350614

5 years ago[ARM] Add missing patterns for DSP muls
Sam Parker [Tue, 8 Jan 2019 10:12:36 +0000 (10:12 +0000)]
[ARM] Add missing patterns for DSP muls

Using a PatLeaf for sext_16_node allowed matching smulbb and smlabb
instructions once the operands had been sign extended. But we also
need to use sext_inreg operands along with sext_16_node to catch a
few more cases that enable use to remove the unnecessary sxth.

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

llvm-svn: 350613

5 years ago[ASTMatchers] Improve assert message for broken parent map.
Sam McCall [Tue, 8 Jan 2019 07:29:46 +0000 (07:29 +0000)]
[ASTMatchers] Improve assert message for broken parent map.

Summary:
This assert catches places where the AST (as seen by RecursiveASTVisitor)
becomes disconnected due to incomplete traversal.
Making it print the actual parent-less node is a lot more helpful - it's
possible to work out which part of the tree wasn't traversed.

Reviewers: ilya-biryukov

Subscribers: cfe-commits

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

llvm-svn: 350612

5 years agoAMDGPU/GlobalISel: Introduce vcc reg bank
Matt Arsenault [Tue, 8 Jan 2019 06:30:53 +0000 (06:30 +0000)]
AMDGPU/GlobalISel: Introduce vcc reg bank

I'm not entirely sure this is the correct thing
to do with the global isel philosophy, but I think
this is necessary to handle how differently SGPRs
are used normally vs. from a condition.

For example, it makes sense to allow a copy
from a VGPR to an SGPR, but it makes no sense
to allow a copy from VGPRs to SGPRs used as
select mask.

This avoids regbankselecting strange code with
a truncate feeding directly into a condition field.
Now a copy is forced from sgpr(s1) to vcc, which is
more sensible to handle.

Some of these issues could probably avoided with making enough
operations resulting in i1 illegal. I think we can't avoid
this register bank for legality.

For example, an i1 and where one source is from a truncate, and
one source is a compare needs some kind of copy inserted to
make sure both are in condition registers.

llvm-svn: 350611

5 years ago[WebAssembly] Instruction renaming
Thomas Lively [Tue, 8 Jan 2019 06:25:55 +0000 (06:25 +0000)]
[WebAssembly] Instruction renaming

Summary: Associated with D56338.

Reviewers: aheejin, aardappel

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

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

llvm-svn: 350610

5 years ago[WebAssembly] Massive instruction renaming
Thomas Lively [Tue, 8 Jan 2019 06:25:55 +0000 (06:25 +0000)]
[WebAssembly] Massive instruction renaming

Summary:
An automated renaming of all the instructions listed at
https://github.com/WebAssembly/spec/issues/884#issuecomment-426433329
as well as some similarly-named identifiers.

Reviewers: aheejin, dschuff, aardappel

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

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

llvm-svn: 350609

5 years ago[LLVM-C] Allow For Creating a BasicBlock without a Parent Function
Robert Widmann [Tue, 8 Jan 2019 06:24:19 +0000 (06:24 +0000)]
[LLVM-C] Allow For Creating a BasicBlock without a Parent Function

Summary: Add a utility function for creating a basic block without a parent function.  A useful operation for compilers that need to synthesize and conditionally insert code without having to bother with appending and immediately unlinking a block.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: llvm-commits

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

llvm-svn: 350608

5 years ago[LLVM-C] Allow Specifying Signedness in Int Cast
Robert Widmann [Tue, 8 Jan 2019 06:23:22 +0000 (06:23 +0000)]
[LLVM-C] Allow Specifying Signedness in Int Cast

Summary: Fix an old outstanding problem with the int cast builder binding always assuming the cast is signed by introducing a new LLVMBuildIntCast2 operation and deprecating the old prototype.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: llvm-commits

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

llvm-svn: 350607

5 years ago[MC] [AArch64] Support resolving signed fixups for :abs_g0_s: etc.
Mandeep Singh Grang [Tue, 8 Jan 2019 04:48:00 +0000 (04:48 +0000)]
[MC] [AArch64] Support resolving signed fixups for :abs_g0_s: etc.

Summary: This patch is a follow-up to D55896.

Reviewers: efriedma, mstorsjo

Reviewed By: efriedma

Subscribers: javed.absar, kristof.beyls, llvm-commits

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

llvm-svn: 350606

5 years ago[NFC] Remove empty line as a test commit.
Chris Kennelly [Tue, 8 Jan 2019 04:04:51 +0000 (04:04 +0000)]
[NFC] Remove empty line as a test commit.

llvm-svn: 350605

5 years agogn build: Stop passing -o to ar.
Peter Collingbourne [Tue, 8 Jan 2019 04:00:22 +0000 (04:00 +0000)]
gn build: Stop passing -o to ar.

The -o flag means something different to ar than what appears to be
intended here. Also, llvm-ar doesn't accept the flag in this position.

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

llvm-svn: 350604

5 years agoSet the buffer of an fstream to empty when the underlying file is closed. This 'fixes...
Marshall Clow [Tue, 8 Jan 2019 02:48:45 +0000 (02:48 +0000)]
Set the buffer of an fstream to empty when the underlying file is closed. This 'fixes' PR#38052 - std::fstream still good after closing and updating content.

llvm-svn: 350603

5 years agoFix Mac compilation.
Evgeniy Stepanov [Tue, 8 Jan 2019 02:02:27 +0000 (02:02 +0000)]
Fix Mac compilation.

Provide an implementation of MemoryMappingLayout::Error() for Mac.

llvm-svn: 350601

5 years agogn build: Merge r350580.
Peter Collingbourne [Tue, 8 Jan 2019 01:46:57 +0000 (01:46 +0000)]
gn build: Merge r350580.

llvm-svn: 350600

5 years ago[SymbolContext] Remove dead code
Jonas Devlieghere [Tue, 8 Jan 2019 01:35:00 +0000 (01:35 +0000)]
[SymbolContext] Remove dead code

Removes two methods from SymbolContextList that aren't referenced.

llvm-svn: 350599

5 years agoAMDGPU/GlobalISel: Legalize concat_vectors
Matt Arsenault [Tue, 8 Jan 2019 01:30:02 +0000 (01:30 +0000)]
AMDGPU/GlobalISel: Legalize concat_vectors

llvm-svn: 350598

5 years agoFix typos
Matt Arsenault [Tue, 8 Jan 2019 01:25:47 +0000 (01:25 +0000)]
Fix typos

llvm-svn: 350597

5 years ago[WebAssembly] Move CFG-changing passes before RegStackify
Heejin Ahn [Tue, 8 Jan 2019 01:25:12 +0000 (01:25 +0000)]
[WebAssembly] Move CFG-changing passes before RegStackify

Summary:
FixIrreducibleControlFlow and LateEHPrepare both possibly modify CFG and
create new registers. There seems to be no reason these passes go after
register-related optimization passes (PrepareForLiveIntervals,
OptimizeLiveIntervals, StoreResults, RegStackify, and RegColoring), and
this also possibly create new optimization opportunities. I think we
should put all current and future optimization passes before RegStackify
(and related passes) unless there's a reason not to.

Reviewers: kripken

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

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

llvm-svn: 350596

5 years agoRegBankSelect: Fix copy insertion point for terminators
Matt Arsenault [Tue, 8 Jan 2019 01:22:47 +0000 (01:22 +0000)]
RegBankSelect: Fix copy insertion point for terminators

If a copy was needed to handle the condition of brcond, it was being
inserted before the defining instruction. Add tests for iterator edge
cases.

I find the existing code here suspect for the case where it's looking
for terminators that modify the register. It's going to insert a copy
in the middle of the terminators, which isn't allowed (it might be
necessary to have a COPY_terminator if anybody actually needs this).

Also legalize brcond for AMDGPU.

llvm-svn: 350595

5 years ago[WebAssembly] Use 'I' multiclass template for br_table (NFC)
Heejin Ahn [Tue, 8 Jan 2019 01:15:15 +0000 (01:15 +0000)]
[WebAssembly] Use 'I' multiclass template for br_table (NFC)

Summary:
We don't need to explicitly use `NI` anymore because we now don't use
`let` statements within the definitions.

Reviewers: aardappel

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

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

llvm-svn: 350594

5 years agoAMDGPU/GlobalISel: Disallow VGPR->SCC copies
Matt Arsenault [Tue, 8 Jan 2019 01:13:20 +0000 (01:13 +0000)]
AMDGPU/GlobalISel: Disallow VGPR->SCC copies

This fixes using scalar adds when only the carry in is a VGPR
using greedy regbankselect.

llvm-svn: 350593

5 years agoAMDGPU/GlobalISel: RegBankSelect for carry-in
Matt Arsenault [Tue, 8 Jan 2019 01:09:09 +0000 (01:09 +0000)]
AMDGPU/GlobalISel: RegBankSelect for carry-in

I'm not sure we should be allowing the truncate
to s1 for the inputs. It may be necessary to
create a new VCC reg bank.

llvm-svn: 350592

5 years ago[dsymutil] Fix assertion triggered by empty address range.
Jonas Devlieghere [Tue, 8 Jan 2019 01:08:09 +0000 (01:08 +0000)]
[dsymutil] Fix assertion triggered by empty address range.

An assertion was hit when running dsymutil on a gcc generated binary
that contained an empty address range. Address ranges are stored in an
interval map of half open intervals. Since the interval is empty and
therefore meaningless, we simply don't add it to the map.

llvm-svn: 350591

5 years ago[asan] Support running without /proc
Evgeniy Stepanov [Tue, 8 Jan 2019 01:07:34 +0000 (01:07 +0000)]
[asan] Support running without /proc

Summary:
This patch lets ASan run when /proc is not accessible (ex. not mounted
yet). It includes a special test-only flag that emulates this condition
in an unpriviledged process.

This only matters on Linux, where /proc is necessary to enumerate
virtual memory mappings.

Reviewers: vitalybuka, pcc, krytarowski

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 350590

5 years agoAMDGPU/GlobalISel: RegBankSelect for add/sub with carry out
Matt Arsenault [Tue, 8 Jan 2019 01:03:58 +0000 (01:03 +0000)]
AMDGPU/GlobalISel: RegBankSelect for add/sub with carry out

llvm-svn: 350589

5 years agoAMDGPU/GlobalISel: InstrMapping for G_UNMERGE_VALUES
Matt Arsenault [Tue, 8 Jan 2019 00:46:19 +0000 (00:46 +0000)]
AMDGPU/GlobalISel: InstrMapping for G_UNMERGE_VALUES

llvm-svn: 350588

5 years agofix comment typo - NFC
Chen Zheng [Tue, 8 Jan 2019 00:40:01 +0000 (00:40 +0000)]
fix comment typo - NFC

llvm-svn: 350587

5 years ago[RegisterCoalescer] dst register's live interval needs to be updated when
Wei Mi [Tue, 8 Jan 2019 00:26:11 +0000 (00:26 +0000)]
[RegisterCoalescer] dst register's live interval needs to be updated when
merging a src register in ToBeUpdated set.

This is to fix PR40061 related with https://reviews.llvm.org/rL339035.

In https://reviews.llvm.org/rL339035, live interval of source pseudo register
in rematerialized copy may be saved in ToBeUpdated set and its update may be
postponed.

In PR40061, %t2 = %t1 is rematerialized and %t1 is added into toBeUpdated set
to postpone its live interval update. After the rematerialization, the live
interval of %t1 is larger than necessary. Then %t1 is merged into %t3 and %t1
gets removed. After the merge, %t3 contains live interval larger than necessary.
Because %t3 is not in toBeUpdated set, its live interval is not updated after
register coalescing and it will break some assumption in regalloc.

The patch requires the live interval of destination register in a merge to be
updated if the source register is in ToBeUpdated.

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

llvm-svn: 350586

5 years agoSplit -Wdelete-non-virtual-dtor into -Wdelete-abstract-non-virtual-dtor
Erik Pilkington [Tue, 8 Jan 2019 00:21:05 +0000 (00:21 +0000)]
Split -Wdelete-non-virtual-dtor into -Wdelete-abstract-non-virtual-dtor

-Wdelete-non-virtual-dtor previously controlled two diagnostics: 1)
calling a non-virtual dtor from an abstract class, and 2) calling a
non-virtual dtor from a polymorphic class. 1) is a lot more severe
than 2), since 1) is a guaranteed crash, but 2) is just "code smell".
Previously, projects compiled with -Wall -Wno-delete-non-virtual-dtor,
which is somewhat reasonable, silently crashed on 1).

rdar://40380564

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

llvm-svn: 350585

5 years agoReleaseNotes: Update with my clang-query contributions this cycle
Stephen Kelly [Tue, 8 Jan 2019 00:09:34 +0000 (00:09 +0000)]
ReleaseNotes: Update with my clang-query contributions this cycle

llvm-svn: 350584

5 years ago[libcxx] Optimize vectors construction of trivial types from an iterator range with...
Volodymyr Sapsai [Tue, 8 Jan 2019 00:03:16 +0000 (00:03 +0000)]
[libcxx] Optimize vectors construction of trivial types from an iterator range with const-ness mismatch.

We already have a specialization that will use memcpy for construction
of trivial types from an iterator range like

    std::vector<int>(int *, int *);

But if we have const-ness mismatch like

    std::vector<int>(const int *, const int *);

we would use a slow path that copies each element individually. This change
enables the optimal specialization for const-ness mismatch. Fixes PR37574.

Contributions to the patch are made by Arthur O'Dwyer, Louis Dionne.

rdar://problem/40485845

Reviewers: mclow.lists, EricWF, ldionne, scanon

Reviewed By: ldionne

Subscribers: christof, ldionne, howard.hinnant, cfe-commits

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

llvm-svn: 350583

5 years ago[dsymutil] Upstream unobfuscation logic.
Jonas Devlieghere [Mon, 7 Jan 2019 23:27:25 +0000 (23:27 +0000)]
[dsymutil] Upstream unobfuscation logic.

The unobufscation support for BCSymbolMaps was the last piece of code
that hasn't been upstreamed yet. This patch contains a reworked version
of the existing code and relevant tests.

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

llvm-svn: 350580

5 years ago[PGO] Use SourceFileName rather module name in PGOFuncName
Rong Xu [Mon, 7 Jan 2019 23:25:56 +0000 (23:25 +0000)]
[PGO] Use SourceFileName rather module name in PGOFuncName

In LTO or Thin-lto mode (though linker plugin), the module
names are of temp file names which are different for
different compilations. Using SourceFileName avoids the issue.
This should not change any functionality for current PGO as
all the current callers of getPGOFuncName() is before LTO.

llvm-svn: 350579

5 years ago[Verifier] Reject invalid type for DILocalVariable.
Davide Italiano [Mon, 7 Jan 2019 23:09:09 +0000 (23:09 +0000)]
[Verifier] Reject invalid type for DILocalVariable.

Reviewers: aprantl

Subscribers: hiraditya, llvm-commits

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

llvm-svn: 350578

5 years agoSimplify code.
Adrian Prantl [Mon, 7 Jan 2019 23:08:16 +0000 (23:08 +0000)]
Simplify code.

llvm-svn: 350577

5 years agoClarify comment and variable names. (NFC)
Adrian Prantl [Mon, 7 Jan 2019 23:02:28 +0000 (23:02 +0000)]
Clarify comment and variable names. (NFC)

llvm-svn: 350576

5 years agoRename DWARFDIE::GetDWOContext() -> GetDeclContext() (NFC)
Adrian Prantl [Mon, 7 Jan 2019 22:47:17 +0000 (22:47 +0000)]
Rename DWARFDIE::GetDWOContext() -> GetDeclContext() (NFC)

Despite the name, this function has nothing to do with the DWO format.

llvm-svn: 350575

5 years agoNFC: Replace asserts with if() in SourceLocation accessors
Stephen Kelly [Mon, 7 Jan 2019 21:57:30 +0000 (21:57 +0000)]
NFC: Replace asserts with if() in SourceLocation accessors

Summary:
Nowhere else in the AST classes assert on these kinds of accessors.

This way, we can call the accessors and check the validity of the result
instead of externally duplicating the conditions.  This generality will
make it possible to introspect instances for source locations:

 http://ec2-18-191-7-3.us-east-2.compute.amazonaws.com:10240/z/iiaWhw

Reviewers: aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 350573

5 years agoAdd a __has_feature check for namespaces on #pragma clang attribute.
Erik Pilkington [Mon, 7 Jan 2019 21:54:00 +0000 (21:54 +0000)]
Add a __has_feature check for namespaces on #pragma clang attribute.

Support for this was added in r349845.

llvm-svn: 350572

5 years ago[OPENMP]Add call to __kmpc_push_target_tripcount() function.
Alexey Bataev [Mon, 7 Jan 2019 21:30:43 +0000 (21:30 +0000)]
[OPENMP]Add call to __kmpc_push_target_tripcount() function.

Each we create the target regions with the teams distribute inner
region, we can better estimate number of the teams required to execute
the target region. Function __kmpc_push_target_tripcount() is used for
purpose, which accepts device_id and the number of the iterations,
performed by the associated loop.

llvm-svn: 350571

5 years ago[lldb] Fix -Wstring-plus-int warning in POSIX-DYLD/AuxVector.cpp
Jorge Gorbe Moya [Mon, 7 Jan 2019 21:04:12 +0000 (21:04 +0000)]
[lldb] Fix -Wstring-plus-int warning in POSIX-DYLD/AuxVector.cpp

llvm-svn: 350570

5 years ago[ValueTracking] Adjust comment in test
Michael Ferguson [Mon, 7 Jan 2019 21:02:22 +0000 (21:02 +0000)]
[ValueTracking] Adjust comment in test

Adjusts a comment in this test to verify commit access.

llvm-svn: 350569

5 years agoRecommit r350555 "[X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins."
Craig Topper [Mon, 7 Jan 2019 21:00:41 +0000 (21:00 +0000)]
Recommit r350555 "[X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins."

The MSVC limit hit in AutoUpgrade.cpp has been worked around for now.

llvm-svn: 350568

5 years agoRecommit r350554 "[X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with...
Craig Topper [Mon, 7 Jan 2019 21:00:32 +0000 (21:00 +0000)]
Recommit r350554 "[X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with target independent funnel shift intrinsics."

The MSVC limit we hit on AutoUpgrade.cpp has been worked around for now.

llvm-svn: 350567

5 years ago[ObjectYAML] [COFF] Support multiple symbols with the same name
Martin Storsjo [Mon, 7 Jan 2019 20:55:33 +0000 (20:55 +0000)]
[ObjectYAML] [COFF] Support multiple symbols with the same name

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

llvm-svn: 350566

5 years agocmake: Install libraries to DATADIR from GNUInstallDirs
Jan Vesely [Mon, 7 Jan 2019 20:20:37 +0000 (20:20 +0000)]
cmake: Install libraries to DATADIR from GNUInstallDirs

This moves default installation location to /usr/share to match libclc.pc.
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewer: Tom Stellard

llvm-svn: 350565

5 years ago[X86][AutoUpgrade] Make some tweaks to reduce the number of nested if/else in the...
Craig Topper [Mon, 7 Jan 2019 20:13:45 +0000 (20:13 +0000)]
[X86][AutoUpgrade] Make some tweaks to reduce the number of nested if/else in the intrinsic upgrade code to avoid an MSVC compiler limit.

MSVC has a nesting limit of around 110-130. An if/else if/else if counts against this next level. The autoupgrade code consists a long chain of these checking matches against strings.

This commit moves some code to a helper function to move out a large if/else chain that was inside of one of the blocks into a separate function. There are more of these we could move or we could change some to lookup tables.

I've also merged together a few similar blocks in the outer chain. This should buy us some margin for a little bit.

llvm-svn: 350564

5 years agoRevert r350555 "[X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins."
Craig Topper [Mon, 7 Jan 2019 19:39:25 +0000 (19:39 +0000)]
Revert r350555 "[X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins."

Had to revert the LLVM patch this depends on to fix a MSVC compiler limit in AutoUpgrade.cpp

llvm-svn: 350563

5 years agoRevert r350554 "[X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with...
Craig Topper [Mon, 7 Jan 2019 19:39:05 +0000 (19:39 +0000)]
Revert r350554 "[X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with target independent funnel shift intrinsics."

The AutoUpgrade.cpp if/else cascade hit an MSVC limit again.

llvm-svn: 350562

5 years ago[MemorySSA] Add SkipSelfWalker.
Alina Sbirlea [Mon, 7 Jan 2019 19:38:47 +0000 (19:38 +0000)]
[MemorySSA] Add SkipSelfWalker.

Summary: Add implementation of SkipSelfWalker.

Reviewers: george.burgess.iv

Subscribers: sanjoy, jlebar, Prazek, llvm-commits

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

llvm-svn: 350561

5 years ago[TargetLowering][AMDGPU] Remove the SimplifyDemandedBits function that takes a User...
Craig Topper [Mon, 7 Jan 2019 19:30:43 +0000 (19:30 +0000)]
[TargetLowering][AMDGPU] Remove the SimplifyDemandedBits function that takes a User and OpIdx. Stop using it in AMDGPU target for simplifyI24.

As we saw in D56057 when we tried to use this function on X86, it's unsafe. It allows the operand node to have multiple users, but doesn't prevent recursing past the first node when it does have multiple users. This can cause other simplifications earlier in the graph without regard to what bits are needed by the other users of the first node. Ideally all we should do to the first node if it has multiple uses is bypass it when its not needed by the user we started from. Doing any other transformation that SimplifyDemandedBits can do like turning ZEXT/SEXT into AEXT would result in an increase in instructions.

Fortunately, we already have a function that can do just that, GetDemandedBits. It will only make transformations that involve bypassing a node.

This patch changes AMDGPU's simplifyI24, to use a combination of GetDemandedBits to handle the multiple use simplifications. And then uses the regular SimplifyDemandedBits on each operand to handle simplifications allowed when the operand only has a single use. Unfortunately, GetDemandedBits simplifies constants more aggressively than SimplifyDemandedBits. This caused the -7 constant in the changed test to be simplified to remove the upper bits. I had to modify computeKnownBits to account for this by ignoring the upper 8 bits of the input.

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

llvm-svn: 350560

5 years agoSplit two sub-tests into separate top-level methods.
Adrian Prantl [Mon, 7 Jan 2019 19:24:04 +0000 (19:24 +0000)]
Split two sub-tests into separate top-level methods.

llvm-svn: 350559

5 years ago[MemorySSA] Refactor CachingWalker.
Alina Sbirlea [Mon, 7 Jan 2019 19:22:37 +0000 (19:22 +0000)]
[MemorySSA] Refactor CachingWalker.

Summary:
Refactor caching walker to make creating a walker that skips the
starting access strightforward.

Reviewers: george.burgess.iv

Subscribers: sanjoy, jlebar, Prazek, llvm-commits, jfb

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

llvm-svn: 350558

5 years agoRefactor test, no changes expected.
Adrian Prantl [Mon, 7 Jan 2019 19:19:34 +0000 (19:19 +0000)]
Refactor test, no changes expected.

llvm-svn: 350557

5 years ago[TSan] Support Objective-C @synchronized with tagged pointers
Julian Lettner [Mon, 7 Jan 2019 19:19:23 +0000 (19:19 +0000)]
[TSan] Support Objective-C @synchronized with tagged pointers

Summary:
Objective-C employs tagged pointers, that is, small objects/values may be encoded directly in the pointer bits. The resulting pointer is not backed by an allocation/does not point to a valid memory. TSan infrastructure requires a valid address for `Acquire/Release` and `Mutex{Lock/Unlock}`.
This patch establishes such a mapping via a "dummy allocation" for each encountered tagged pointer value.

Reviewers: dcoughlin, kubamracek, dvyukov, delcypher

Reviewed By: dvyukov

Subscribers: llvm-commits, #sanitizers

Tags: #sanitizers

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

llvm-svn: 350556

5 years ago[X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins.
Craig Topper [Mon, 7 Jan 2019 19:10:22 +0000 (19:10 +0000)]
[X86] Use funnel shift intrinsics for the VBMI2 vshld/vshrd builtins.

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

llvm-svn: 350555

5 years ago[X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with target independent...
Craig Topper [Mon, 7 Jan 2019 19:10:12 +0000 (19:10 +0000)]
[X86] Remove AVX512VBMI2 concat and shift intrinsics. Replace with target independent funnel shift intrinsics.

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

llvm-svn: 350554

5 years ago[ARM] ComputeKnownBits to handle extract vectors
Diogo N. Sampaio [Mon, 7 Jan 2019 19:01:47 +0000 (19:01 +0000)]
[ARM] ComputeKnownBits to handle extract vectors

This patch adds the sign/zero extension done by
vgetlane to ARM computeKnownBitsForTargetNode.

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

llvm-svn: 350553

5 years ago[MemorySSA] Extend the clobber walker with the option to skip the starting access.
Alina Sbirlea [Mon, 7 Jan 2019 18:40:27 +0000 (18:40 +0000)]
[MemorySSA] Extend the clobber walker with the option to skip the starting access.

Summary:
The option enables loop transformations to hoist accesses that do not
have clobbers in the loop. If the clobber queries skips the starting
access, the result may be outside the loop instead of the header Phi.

Adding the walker that uses this option in a separate patch.

Reviewers: george.burgess.iv

Subscribers: sanjoy, jlebar, Prazek, llvm-commits

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

llvm-svn: 350551

5 years agoMark more tests as flaky
Eric Fiselier [Mon, 7 Jan 2019 18:21:18 +0000 (18:21 +0000)]
Mark more tests as flaky

llvm-svn: 350550

5 years agoRevert "[DemandedBits] Use SetVector for Worklist"
Nikita Popov [Mon, 7 Jan 2019 18:15:11 +0000 (18:15 +0000)]
Revert "[DemandedBits] Use SetVector for Worklist"

This reverts commit r350547.

Seeing assertion failures on clang tests.

llvm-svn: 350549

5 years ago[X86] Add OR(AND(X,C),AND(Y,~C)) bit select tests
Simon Pilgrim [Mon, 7 Jan 2019 18:07:56 +0000 (18:07 +0000)]
[X86] Add OR(AND(X,C),AND(Y,~C)) bit select tests

Based off work for D55935

llvm-svn: 350548

5 years ago[DemandedBits] Use SetVector for Worklist
Nikita Popov [Mon, 7 Jan 2019 18:03:36 +0000 (18:03 +0000)]
[DemandedBits] Use SetVector for Worklist

DemandedBits currently uses a simple vector for the worklist, which
means that instructions may be inserted multiple times into it.
Especially in combination with the deep lattice, this may cause
instructions too be recomputed very often. To avoid this, switch
to a SetVector.

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

llvm-svn: 350547