platform/upstream/llvm.git
4 years ago[lit] Add "from .main import main" back into lit/__init__.py
Jessica Paquette [Thu, 19 Dec 2019 23:59:11 +0000 (15:59 -0800)]
[lit] Add "from .main import main" back into lit/__init__.py

A refactoring commit (cf252240) removed this line. Removing it broke installing
lit with pip and setup.py.

This adds the line back in so that we can install lit again.

For an example of how this appeared, see:

http://green.lab.llvm.org/green/job/LNT_Tests/5853/

File "/Users/buildslave/jenkins/...s/__init__.py", line 2453, in resolve
    raise ImportError(str(exc))
ImportError: 'module' object has no attribute 'main'

4 years ago[NFC][InlineCost] Simplify internal inlining cost interface
Mircea Trofin [Thu, 19 Dec 2019 23:31:50 +0000 (15:31 -0800)]
[NFC][InlineCost] Simplify internal inlining cost interface

Summary:
All the use cases of CallAnalyzer use the same call site parameter to
both construct the CallAnalyzer, and then pass to the analysis member.
This change removes this duplication.

Reviewers: davidxl, eraman, Jim

Reviewed By: davidxl

Subscribers: Jim, hiraditya, haicheng, llvm-commits

Tags: #llvm

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

4 years agoFix crash on init-capture packs where the type of the initializer is non-dependent.
Richard Smith [Thu, 19 Dec 2019 23:18:59 +0000 (15:18 -0800)]
Fix crash on init-capture packs where the type of the initializer is non-dependent.

4 years ago[analyzer] Add a syntactic security check for ObjC NSCoder API.
Artem Dergachev [Thu, 19 Dec 2019 22:21:02 +0000 (14:21 -0800)]
[analyzer] Add a syntactic security check for ObjC NSCoder API.

Method '-[NSCoder decodeValueOfObjCType:at:]' is not only deprecated
but also a security hazard, hence a loud check.

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

4 years ago[ValueTracking] isKnownNonZero() should take non-null-ness assumptions into considera...
Roman Lebedev [Wed, 18 Dec 2019 17:24:38 +0000 (20:24 +0300)]
[ValueTracking] isKnownNonZero() should take non-null-ness assumptions into consideration (PR43267)

Summary:
It is pretty common to assume that something is not zero.
Even optimizer itself sometimes emits such assumptions
(e.g. `addAssumeNonNull()` in `PromoteMemoryToRegister.cpp`).

But we currently don't deal with such assumptions :)
The only way `isKnownNonZero()` handles assumptions is
by calling `computeKnownBits()` which calls `computeKnownBitsFromAssume()`.
But `x != 0` does not tell us anything about set bits,
it only says that there are *some* set bits.
So naturally, `KnownBits` does not get populated,
and we fail to make use of this assumption.

I propose to deal with this special case by special-casing it
via adding a `isKnownNonZeroFromAssume()` that returns boolean
when there is an applicable assumption.

While there, we also deal with other predicates,
mainly if the comparison is with constant.

Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=43267 | PR43267 ]].

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

4 years ago[ValueTracking] isValidAssumeForContext(): CxtI itself also must transfer execution...
Roman Lebedev [Thu, 19 Dec 2019 21:10:07 +0000 (00:10 +0300)]
[ValueTracking] isValidAssumeForContext(): CxtI itself also must transfer execution to successor

This is a pretty rare case, when CxtI and assume are
in the same basic block, with assume being located later.

We were already checking that assumption was guaranteed to be
executed, but we omitted CxtI itself from consideration,
and as the test (miscompile) shows, that is incorrect.

As noted in D71660 review by @nikic.

4 years ago[NFC][InstCombine] Add a test for assume-induced miscompile
Roman Lebedev [Thu, 19 Dec 2019 21:04:31 +0000 (00:04 +0300)]
[NFC][InstCombine] Add a test for assume-induced miscompile

@escape() may throw here, we don't know that assumption, which is located
afterwards in the same block, is executed, therefore %load arg of
call to @escape() can not be marked as non-null.

As noted in D71660 review by @nikic.

4 years agoHotColdSplitting: Do not outline within noreturn functions
Vedant Kumar [Thu, 19 Dec 2019 22:03:22 +0000 (14:03 -0800)]
HotColdSplitting: Do not outline within noreturn functions

A function marked `noreturn` may contain unreachable terminators: these
should not be considered cold, as the function may be a trampoline.

rdar://58068594

4 years ago[StackMaps] Be explicit about label formation [NFC] (try 2)
Philip Reames [Thu, 19 Dec 2019 22:03:19 +0000 (14:03 -0800)]
[StackMaps] Be explicit about label formation [NFC] (try 2)

Recommit after making the same API change in non-x86 targets.  This has been build for all targets, and tested for effected ones.  Why the difference?  Because my disk filled up when I tried make check for all.

For auto-padding assembler support, we'll need to bundle the label with the instructions (nops or call sequences) so that they don't get separated.  This just rearranges the code to make the upcoming change more obvious.

4 years agoConstrainedFP: use API compatible with opaque pointers.
Tim Northover [Wed, 18 Dec 2019 12:26:02 +0000 (12:26 +0000)]
ConstrainedFP: use API compatible with opaque pointers.

This just updates an IRBuilder interface to take Functions instead of
Values so the type can be derived, and fixes some callsites in Clang to
call the updated API.

4 years ago[gn build] Port 3075cd5c9fc
LLVM GN Syncbot [Thu, 19 Dec 2019 21:33:15 +0000 (21:33 +0000)]
[gn build] Port 3075cd5c9fc

4 years agoFix the links to clang analyzers checkers
Sylvestre Ledru [Thu, 19 Dec 2019 21:30:55 +0000 (22:30 +0100)]
Fix the links to clang analyzers checkers

4 years agoTemporarily Revert "[Dsymutil][Debuginfo][NFC] Refactor dsymutil to separate DWARF...
Eric Christopher [Thu, 19 Dec 2019 21:24:54 +0000 (13:24 -0800)]
Temporarily Revert "[Dsymutil][Debuginfo][NFC] Refactor dsymutil to separate DWARF optimizing part 2."
as it causes a layering violation/dependency cycle:

llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp -> llvm/DebugInfo/DWARF/DWARFExpression.h
llvm/include/llvm/DebugInfo/DWARF/DWARFOptimizer.h -> llvm/CodeGen/NonRelocatableStringpool.h

This reverts commit abc7f6800df8a1f40e1e2c9ccce826abb0208284.

4 years agoFix some typos in the clang-tools-extra doc
Sylvestre Ledru [Thu, 19 Dec 2019 20:54:38 +0000 (21:54 +0100)]
Fix some typos in the clang-tools-extra doc

4 years ago[XCOFF][AIX] Fix for missing of undefined symbols from symbol table
jasonliu [Thu, 19 Dec 2019 20:30:12 +0000 (20:30 +0000)]
[XCOFF][AIX] Fix for missing of undefined symbols from symbol table

Summary:
When we use undefined symbol with its qualname, we are not able
to generate that symbol because of the logic of early "continue"
that skip the qualname symbol. This patch fixes it.

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

4 years agoImplement latest C++ feature test macro recommendations.
Richard Smith [Thu, 19 Dec 2019 20:57:04 +0000 (12:57 -0800)]
Implement latest C++ feature test macro recommendations.

We don't yet advertise init capture packs, because I found some bugs
while testing it. We reject-valid and then crash on both of these:

template<int ...a> auto x = [...y = a] {};
template<int ...a> auto x = [y = a...] {};

4 years agoTemporarily Revert "[StackMaps] Be explicit about label formation [NFC]"
Eric Christopher [Thu, 19 Dec 2019 20:52:06 +0000 (12:52 -0800)]
Temporarily Revert "[StackMaps] Be explicit about label formation [NFC]"
as it broke the aarch64 build.

This reverts commit bc7595d934b958ab481288d7b8e768fe5310be8f.

4 years ago[clangd] Fix write past end pointer
Kadir Cetinkaya [Thu, 19 Dec 2019 20:50:32 +0000 (21:50 +0100)]
[clangd] Fix write past end pointer

4 years ago[StackMaps] Be explicit about label formation [NFC]
Philip Reames [Thu, 19 Dec 2019 20:24:29 +0000 (12:24 -0800)]
[StackMaps] Be explicit about label formation [NFC]

For auto-padding assembler support, we'll need to bundle the label with the instructions (nops or call sequences) so that they don't get separated.  This just rearranges the code to make the upcoming change more obvious.

4 years ago[FaultMaps] Make label formation a bit more explicit [NFC]
Philip Reames [Thu, 19 Dec 2019 20:01:51 +0000 (12:01 -0800)]
[FaultMaps] Make label formation a bit more explicit [NFC]

This is in advance of assembler padding directives support where we'll need to bundle the label w/the corresponding faulting instruction to avoid padding being inserted between.

4 years ago[X86] Mark various pointer arguments in builtins as const
Warren Ristow [Thu, 19 Dec 2019 19:40:50 +0000 (11:40 -0800)]
[X86] Mark various pointer arguments in builtins as const

Enabling `-Wcast-qual` identified many casts in various system headers
that were dropping the `const` qualifier.  Fixing those missing
qualifiers pointed out that a few of the definitions of the builtins
did not properly identify their arguments as `const` pointers.  This
commit fixes those builtin definitions, and the system header files
so that they no longer drop the qualifier.

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

4 years ago[LegalizeDAG] Add return to the strict node handling in PromoteLegalINT_TO_FP to...
Craig Topper [Thu, 19 Dec 2019 19:39:17 +0000 (11:39 -0800)]
[LegalizeDAG] Add return to the strict node handling in PromoteLegalINT_TO_FP to prevent an invalid strict fp node from being created by falling into non-strict code path.

4 years ago[compiler-rt] [test] Add missing %run to fread_fwrite MSAN test
Michał Górny [Tue, 17 Dec 2019 20:30:59 +0000 (21:30 +0100)]
[compiler-rt] [test] Add missing %run to fread_fwrite MSAN test

Add a missing %run substitution to fread_fwrite test.  This fixes
the test on NetBSD where %run disables ASLR as necessary for MSAN
to function.

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

4 years ago[ASTImporter][LLDB] Modifying ImportDeclContext(...) to ensure that we complete each...
shafik [Thu, 19 Dec 2019 19:14:39 +0000 (11:14 -0800)]
[ASTImporter][LLDB] Modifying ImportDeclContext(...) to ensure that we complete each FieldDecl of a RecordDecl when we are importing the definiton

This fix was motivated by a crashes in expression parsing during code generation in which we had a RecordDecl that had incomplete FieldDecl. During code generation when computing the layout for the RecordDecl we crash because we have several incomplete FieldDecl.

This fixes the issue by assuring that during ImportDefinition(...) for a RecordDecl we also import the definitions for each FieldDecl.

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

4 years ago[Alignment][NFC] Align compatible methods for CreateElementUnorderedAtomicMemSet
Guillaume Chatelet [Thu, 19 Dec 2019 14:41:05 +0000 (15:41 +0100)]
[Alignment][NFC] Align compatible methods for CreateElementUnorderedAtomicMemSet

Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: hiraditya, jfb, llvm-commits

Tags: #llvm

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

4 years ago[SLP]Fix test arguments, NFC.
Alexey Bataev [Thu, 19 Dec 2019 18:33:10 +0000 (13:33 -0500)]
[SLP]Fix test arguments, NFC.

4 years ago[lldb/Lua] Add Boilerplate for a Lua Script Interpreter
Jonas Devlieghere [Sat, 7 Dec 2019 23:49:35 +0000 (15:49 -0800)]
[lldb/Lua] Add Boilerplate for a Lua Script Interpreter

This adds the boilerplate necessary to support the Lua script
interpreter. The interpreter is not functional yet and just reports that
it's not implemented.

Discussion on the mailing list:
http://lists.llvm.org/pipermail/lldb-dev/2019-December/015812.html

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

4 years ago[NFC][InstCombine] Add some more non-zero assumption variants (D71660)
Roman Lebedev [Thu, 19 Dec 2019 17:13:20 +0000 (20:13 +0300)]
[NFC][InstCombine] Add some more non-zero assumption variants (D71660)

https://rise4fun.com/Alive/6yR

4 years ago[SLP]Added test for gathering reused extracts from narrow vector, NFC.
Alexey Bataev [Thu, 19 Dec 2019 17:49:01 +0000 (12:49 -0500)]
[SLP]Added test for gathering reused extracts from narrow vector, NFC.

4 years ago[RISCV] Don't crash on unsupported relocations
Luís Marques [Thu, 19 Dec 2019 17:20:02 +0000 (17:20 +0000)]
[RISCV] Don't crash on unsupported relocations

Summary: Instead of crashing due to the `llvm_unreachable`, provide a proper
error when invalid fixups/relocations are encountered.

Reviewers: asb, lenary
Reviewed By: asb
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71536

4 years ago[x86] add test for missing FMF propagation; NFC
Sanjay Patel [Thu, 19 Dec 2019 17:16:16 +0000 (12:16 -0500)]
[x86] add test for missing FMF propagation; NFC

This is a reduced test for D71495.

4 years agoRevert "[cmake] Add dependency on llvm-dwarfdump to llvm-locstats"
David Spickett [Thu, 19 Dec 2019 17:15:33 +0000 (17:15 +0000)]
Revert "[cmake] Add dependency on llvm-dwarfdump to llvm-locstats"

This reverts commit ba430f503244d1498529d47f31090cdf79b5c231.
Which appears to have caused a failure on the lld-x86_64-ubuntu-fast
buildbot.

4 years ago[SystemZ] Recognize mrecord-mcount in backend
Jonas Paulsson [Tue, 17 Dec 2019 21:13:16 +0000 (13:13 -0800)]
[SystemZ]  Recognize mrecord-mcount in backend

Emit the __mcount_loc section for all fentry calls.

Review: Ulrich Weigand
https://reviews.llvm.org/D71629

4 years ago[libomptarget][nfc] Provide target_impl malloc/free
Jon Chesterfield [Thu, 19 Dec 2019 16:54:27 +0000 (16:54 +0000)]
[libomptarget][nfc] Provide target_impl malloc/free

Summary:
[libomptarget][nfc] Provide target_impl malloc/free

Sufficient to build support.cu for amdgcn

Reviewers: jdoerfert, ABataev, grokos

Reviewed By: jdoerfert

Subscribers: jvesely, mgorny, openmp-commits

Tags: #openmp

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

4 years ago[Clang FE, SystemZ] Recognize -mrecord-mcount CL option.
Jonas Paulsson [Tue, 17 Dec 2019 20:00:43 +0000 (12:00 -0800)]
[Clang FE, SystemZ]  Recognize -mrecord-mcount CL option.

Recognize -mrecord-mcount from the command line and add a function attribute
"mrecord-mcount" when passed.

Only valid on SystemZ (when used with -mfentry).

Review: Ulrich Weigand
https://reviews.llvm.org/D71627

4 years ago[RISCV] Enable the machine outliner for RISC-V
lewis-revill [Thu, 19 Dec 2019 16:41:53 +0000 (16:41 +0000)]
[RISCV] Enable the machine outliner for RISC-V

This patch enables the machine outliner for RISC-V and adds the
necessary logic for checking whether sequences can be safely outlined,
and describing how they should be outlined. Outlined functions are
called using the register t0 (x5) as the return address register, which
must be available for an occurrence of a sequence to be safely outlined.

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

4 years ago[cmake] Add dependency on llvm-dwarfdump to llvm-locstats
David Spickett [Thu, 19 Dec 2019 15:00:56 +0000 (15:00 +0000)]
[cmake] Add dependency on llvm-dwarfdump to llvm-locstats

Though llvm-locstat is a "util" it requires llvm-dwarfdump
to be useful. So what happens now is that unless LLVM_BUILD_TOOLS
is ON llvm-locstats won't be part of the "all" target.

However given that it requires llvm-dwarfdump, this is less
confusing/build time consuming than suddenly having llvm-dwarfdump
build when all other tools are disabled.

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

4 years ago[DDG] Data Dependence Graph - Ordinals
Bardia Mahjour [Thu, 19 Dec 2019 15:56:44 +0000 (10:56 -0500)]
[DDG] Data Dependence Graph - Ordinals

Summary:
This patch associates ordinal numbers to the DDG Nodes allowing
the builder to order nodes within a pi-block in program order. The
algorithm works by simply assuming the order in which the BBList
is fed into the builder. The builder already relies on the blocks being
in program order so that it can compute the dependencies correctly.
Similarly the order of instructions in their parent basic blocks
determine their program order.

Authored By: bmahjour

Reviewer: Meinersbur, fhahn, myhsu, xtian, dmgreen, kbarton, jdoerfert

Reviewed By: Meinersbur

Subscribers: ychen, arphaman, simoll, a.elovikov, mgorny, hiraditya, jfb, wuzish, llvm-commits, jsji, Whitney, etiotto, ppc-slack

Tags: #llvm

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

4 years ago[PowerPC] Only use PLT annotations if using PIC relocation model
Justin Hibbits [Thu, 21 Nov 2019 22:33:24 +0000 (16:33 -0600)]
[PowerPC] Only use PLT annotations if using PIC relocation model

Summary:
The default static (non-PIC, non-PIE) model for 32-bit powerpc does not
use @PLT annotations and relocations in GCC.  LLVM shouldn't use @PLT
annotations either, because it breaks secure-PLT linking with (some
versions of?) GNU LD.

Update the available-externally.ll test to reflect that default mode should be
the same as the static relocation, by using the same check prefix.

Reviewed by:    sfertile
Differential Revision: https://reviews.llvm.org/D70570

4 years agoRevert "[AArch64][SVE] Add permutation and selection intrinsics"
Cullen Rhodes [Thu, 19 Dec 2019 14:23:00 +0000 (14:23 +0000)]
Revert "[AArch64][SVE] Add permutation and selection intrinsics"

This reverts commit 23c28c40436143006be740533375c036d11c92cd.

It caused build failures in the following expensive checks builders:

    http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-ubuntu/builds/1295
    http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-debian/builds/700

Reverting for now whilst I figure what the issue is.

4 years ago[InstCombine] add/adjust tests for pow->sqrt; NFC
Sanjay Patel [Thu, 19 Dec 2019 14:03:57 +0000 (09:03 -0500)]
[InstCombine] add/adjust tests for pow->sqrt; NFC

There's at least 1 bug here as discussed in PR44330.

4 years ago[ConstantHoisting] Ignore unreachable bb:s when collecting candidates
Bjorn Pettersson [Wed, 18 Dec 2019 12:30:47 +0000 (13:30 +0100)]
[ConstantHoisting] Ignore unreachable bb:s when collecting candidates

Summary:
Ignore looking at blocks that are unreachable from entry when
collecting candidates for hosting.

Normally the consthoist pass is executed in the llc pipeline,
just after unreachableblockelim. So it is abnormal to have code
that is unreachable from the entry block. But when running the
pass as part of opt, for example as part of fuzzy testing, we
might trigger various kinds of asserts when collecting candidates
if we include unreachable blocks in that analysis.

It seems like a waste of time to hoist constants in unreachble
blocks, so the solution is to simply ignore such blocks when
collecting the hoisting candidates.

The two added test cases used to end up in two different asserts,
and the intention with the checks is just to verify that we no
longer fail.

Fixes: PR43903

Reviewers: spatel

Reviewed By: spatel

Subscribers: hiraditya, uabelho, llvm-commits

Tags: #llvm

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

4 years ago[AArch64][SVE] Add permutation and selection intrinsics
Cullen Rhodes [Wed, 4 Dec 2019 16:33:49 +0000 (16:33 +0000)]
[AArch64][SVE] Add permutation and selection intrinsics

Summary:
Adds the following intrinsics:

    * @llvm.aarch64.sve.clasta
    * @llvm.aarch64.sve.clasta_n
    * @llvm.aarch64.sve.clastb
    * @llvm.aarch64.sve.clastb_n
    * @llvm.aarch64.sve.compact
    * @llvm.aarch64.sve.ext
    * @llvm.aarch64.sve.lasta
    * @llvm.aarch64.sve.lastb
    * @llvm.aarch64.sve.rev
    * @llvm.aarch64.sve.splice
    * @llvm.aarch64.sve.tbl
    * @llvm.aarch64.sve.trn1
    * @llvm.aarch64.sve.trn2
    * @llvm.aarch64.sve.uzp1
    * @llvm.aarch64.sve.uzp2
    * @llvm.aarch64.sve.zip1
    * @llvm.aarch64.sve.zip2

Reviewers: sdesmalen, efriedma, dancgr, mgudim, huntergr, rengolin

Reviewed By: sdesmalen, efriedma

Subscribers: kmclaughlin, tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

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

4 years ago[DebugInfo] Fix verbose printing of rows added via DW_LNE_end_sequence
James Henderson [Wed, 18 Dec 2019 16:10:04 +0000 (16:10 +0000)]
[DebugInfo] Fix verbose printing of rows added via DW_LNE_end_sequence

The debug line verbose printing was printing the wrong values for rows
added via DW_LNE_end_sequence, because the row was being printed AFTER
its state had been reset following it being appended to the line table.
This patch fixes this issue by printing the row before appending it.

Reviewers: dblaikie, MaskRay

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

4 years ago[gn build] Port abc7f6800df
LLVM GN Syncbot [Thu, 19 Dec 2019 12:43:20 +0000 (12:43 +0000)]
[gn build] Port abc7f6800df

4 years ago[Dsymutil][Debuginfo][NFC] Refactor dsymutil to separate DWARF optimizing part 2.
Alexey Lapshin [Sat, 7 Dec 2019 22:37:53 +0000 (01:37 +0300)]
[Dsymutil][Debuginfo][NFC] Refactor dsymutil to separate DWARF optimizing part 2.

That patch is extracted from the D70709. It moves CompileUnit, DeclContext
into llvm/DebugInfo/DWARF. It also adds new file DWARFOptimizer with
AddressesMap class. AddressesMap generalizes functionality
from RelocationManager.

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

4 years ago[InstCombine] Canonicalize select immediates
David Green [Thu, 19 Dec 2019 10:41:13 +0000 (10:41 +0000)]
[InstCombine] Canonicalize select immediates

In certain situations after inlining and simplification we end up with
code that is _almost_ a min/max pattern, but contains constants that
have been demand-bit optimised to the wrong values, ending up with code
like:
  %1 = icmp slt i32 %shr, -128
  %2 = select i1 %1, i32 128, i32 %shr
  %.inv = icmp sgt i32 %shr, 127
  %spec.select.i = select i1 %.inv, i32 127, i32 %2
  %conv7 = trunc i32 %spec.select.i to i8
This should be turned into a min/max pattern, but the -128 in the first
select was instead transformed into 128, as only the bottom byte was
ever demanded.

To fix this, I've put in further canonicalisation for the immediates of
selects, preferring to use the same value as the icmp if available.

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

4 years ago[Instcombine] Add select canonicalization tests. NFC
David Green [Thu, 19 Dec 2019 10:40:17 +0000 (10:40 +0000)]
[Instcombine] Add select canonicalization tests. NFC

4 years agoRe-land "Add an -fno-temp-file flag for compilation"
Hans Wennborg [Thu, 19 Dec 2019 12:23:13 +0000 (13:23 +0100)]
Re-land "Add an -fno-temp-file flag for compilation"

This time making sure to initialize FrontendOptions::UseTemporary.

Patch by Zachary Henkel!

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

4 years ago[llvm-exegesis] Fix pfm counter names for Haswell for older versions of libpfm
Miloš Stojanović [Thu, 19 Dec 2019 11:52:15 +0000 (12:52 +0100)]
[llvm-exegesis] Fix pfm counter names for Haswell for older versions of libpfm

The inconsistency caused uops mode to fail on an older version of libpfm
since the dispatched_port was added as an alias for executed_port only
after v4.6.0 of libpfm.

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

4 years agoMake more use of MachineInstr::mayLoadOrStore.
Jay Foad [Thu, 19 Dec 2019 11:19:36 +0000 (11:19 +0000)]
Make more use of MachineInstr::mayLoadOrStore.

4 years ago[ARM] Improve codegen of volatile load/store of i64
Victor Campos [Mon, 16 Dec 2019 14:22:15 +0000 (14:22 +0000)]
[ARM] Improve codegen of volatile load/store of i64

Summary:
Instead of generating two i32 instructions for each load or store of a volatile
i64 value (two LDRs or STRs), now emit LDRD/STRD.

These improvements cover architectures implementing ARMv5TE or Thumb-2.

Reviewers: dmgreen, efriedma, john.brawn

Reviewed By: efriedma

Subscribers: kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[AArch64][SVE] Implement pfirst and pnext intrinsics
Cullen Rhodes [Fri, 13 Dec 2019 16:32:35 +0000 (16:32 +0000)]
[AArch64][SVE] Implement pfirst and pnext intrinsics

Reviewers: sdesmalen, efriedma, dancgr, mgudim, cameron.mcinally

Reviewed By: cameron.mcinally

Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl,
llvm-commits

Tags: #llvm

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

4 years ago[AArch64][SVE] Implement ptrue intrinsic
Cullen Rhodes [Thu, 12 Dec 2019 15:24:30 +0000 (15:24 +0000)]
[AArch64][SVE] Implement ptrue intrinsic

Reviewers: sdesmalen, eli.friedman, dancgr, mgudim, cameron.mcinally,
huntergr, efriedma

Reviewed By: sdesmalen

Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl,
llvm-commits

Tags: #llvm

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

4 years ago[clangd] Improve documentation for auto and implicit specs
Kadir Cetinkaya [Tue, 17 Dec 2019 11:13:28 +0000 (12:13 +0100)]
[clangd] Improve documentation for auto and implicit specs

Summary:
Clangd didn't fill documentation for `auto` when it wasn't available in
index. Also it wasn't showing any documentations for implicit instantiations.

This patch ensures auto and normal decl case behaves in the same way and also
makes use of the explicit template specialization while fetching comments for
implicit instantiations.

Reviewers: ilya-biryukov

Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[cmake] Include the llvm-locstats target when
David Spickett [Thu, 19 Dec 2019 10:17:53 +0000 (10:17 +0000)]
[cmake] Include the llvm-locstats target when
utils and tools are not being built.

This was uncovered by: https://reviews.llvm.org/D71611
Which added llvm-locstats to the test dependencies.

Previously the build target was only added if you
were building tools. This meant that you couldn't
configure at all if you had LLVM_BUILD_TOOLS=OFF.

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

4 years agoRevert "Support powerpc when builing without init_array."
Dmitri Gribenko [Thu, 19 Dec 2019 10:24:51 +0000 (11:24 +0100)]
Revert "Support powerpc when builing without init_array."

This reverts commit 5789e83dedb97588ad75cca36d01ba6c5142d6d3. It broke
the build on aarch64.

4 years ago[clang] Fix compilation with GCC < 8 for MinGW
Martin Storsjö [Wed, 18 Dec 2019 08:41:41 +0000 (10:41 +0200)]
[clang] Fix compilation with GCC < 8 for MinGW

GCC 7 and earlier, when targeting MinGW, seems to have a bug in
layout/size of bitfield structs if they contain a nested enum,
making the size of the struct 8 bytes, while we have a static assert
requiring it to be 4 bytes or less.

While this clearly is a GCC bug, the workaround (moving the enum out
of the bitfield) also is very nonintrusive and matches other existing
enums there.

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

4 years ago[LLD] [COFF] Fix reporting duplicate errors for absolute symbols
Martin Storsjö [Wed, 18 Dec 2019 21:58:51 +0000 (23:58 +0200)]
[LLD] [COFF] Fix reporting duplicate errors for absolute symbols

Previously this caused crashes in the reportDuplicate method.

A DefinedAbsolute doesn't have any InputFile attached to it, so we
can't report the file for the original symbol.

We could add an InputFile argument to SymbolTable::addAbsolute
only for the sake of error reporting, but even then it'd be assymetrical,
only pointing out the file containing the new conflicting definition,
not the original one.

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

4 years ago[lldb][NFC] Change if statements in ClangASTImporter to follow LLVM code style
Raphael Isemann [Thu, 19 Dec 2019 09:34:28 +0000 (10:34 +0100)]
[lldb][NFC] Change if statements in ClangASTImporter to follow LLVM code style

4 years ago[SCEV] NFC - add testcase for get accurate range for AddExpr
czhengsz [Thu, 19 Dec 2019 09:11:45 +0000 (04:11 -0500)]
[SCEV] NFC - add testcase for get accurate range for AddExpr

4 years ago[llvm-readobj][test] - Improve dyn-symbols.test.
Georgii Rymar [Tue, 17 Dec 2019 10:54:29 +0000 (13:54 +0300)]
[llvm-readobj][test] - Improve dyn-symbols.test.

This removes the precompiled binary used, simplifies
the first test case, adds comments and llvm-readelf tool
invocations.
It also adds a test case for checking versioning symbols.

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

4 years ago[llvm-readobj][test] - Refactor mips-st-other.test
Georgii Rymar [Wed, 18 Dec 2019 09:44:54 +0000 (12:44 +0300)]
[llvm-readobj][test] - Refactor mips-st-other.test

This removes 2 precompiled binaries, adds testing
for STO_* flags missing, refines and renames the test.

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

4 years ago[llvm-readobj][llvm-objdump] - Cleanup testing of dynamic tags dumping.
Georgii Rymar [Tue, 17 Dec 2019 12:53:36 +0000 (15:53 +0300)]
[llvm-readobj][llvm-objdump] - Cleanup testing of dynamic tags dumping.

We have the `elf-dynamic-tags-machine-specific.yaml` input shared
between the llvm-readobj and llvm-objdump test.
It looks strange, because tools usually does not share inputs.

Also there are following problems related:
1) `elf-dynamic-tags-machine-specific.yaml` input contains excessive YAML parts.
2) objdump's test case never test AARCH64 tags.
3) There are unknown tags in the `elf-dynamic-tags-machine-specific.yaml` and
    `dynamic-tags-machine-specific.test`, though we already testing unknown tags
    in `\llvm-readobj\ELF\dynamic-tags.test` and `llvm-objdump\elf-dynamic-section.test` tests.

This patch removes the shared input and refines the test cases to resolve
issues mentioned.

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

4 years ago[AMDGPU] Implemented fma cost analysis
Stanislav Mekhanoshin [Wed, 18 Dec 2019 21:29:21 +0000 (13:29 -0800)]
[AMDGPU] Implemented fma cost analysis

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

4 years agoEnable STRICT_FP_TO_SINT/UINT on X86 backend
Liu, Chen3 [Thu, 19 Dec 2019 06:43:45 +0000 (14:43 +0800)]
Enable STRICT_FP_TO_SINT/UINT on X86 backend
This patch is mainly for custom lowering the vector operation.

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

4 years agoDebugInfo: Fix test fallout from aaa5a5e7ff1aee632aae75311e7c044f710dd0a0
David Blaikie [Thu, 19 Dec 2019 03:00:40 +0000 (19:00 -0800)]
DebugInfo: Fix test fallout from aaa5a5e7ff1aee632aae75311e7c044f710dd0a0

4 years ago[compiler-rt] Enable SANITIZER_CAN_USE_PREINIT_ARRAY on NetBSD
Kamil Rytarowski [Thu, 19 Dec 2019 02:21:46 +0000 (03:21 +0100)]
[compiler-rt] Enable SANITIZER_CAN_USE_PREINIT_ARRAY on NetBSD

.preinit_array is supported since 9.0.

4 years ago[PowerPC] make lwa as a valid ds candidate in ppcloopinstrformprep pass
czhengsz [Thu, 19 Dec 2019 02:03:54 +0000 (21:03 -0500)]
[PowerPC] make lwa as a valid ds candidate in ppcloopinstrformprep pass

Fix a FIXME in ppcloopinstrformprep pass.

Reviewed by: nemanjai

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

4 years ago[libomptarget][nvptx] Fix build, second symbol reordering
JonChesterfield [Thu, 19 Dec 2019 02:00:26 +0000 (02:00 +0000)]
[libomptarget][nvptx] Fix build, second symbol reordering

4 years ago[analysis] Re-discard type sugar when casting values retrieved from the Store.
Artem Dergachev [Thu, 19 Dec 2019 01:59:16 +0000 (17:59 -0800)]
[analysis] Re-discard type sugar when casting values retrieved from the Store.

Canonicalization was accidentally omitted in 6d3f43ec.

4 years ago[libomptarget][nvptx] Fix build, symbol ordering in target_impl.h
Jon Chesterfield [Thu, 19 Dec 2019 01:50:06 +0000 (01:50 +0000)]
[libomptarget][nvptx] Fix build, symbol ordering in target_impl.h

4 years agoDebugInfo: Include DW_AT_base_addr even in gmlt with no inline functions
David Blaikie [Thu, 19 Dec 2019 01:10:24 +0000 (17:10 -0800)]
DebugInfo: Include DW_AT_base_addr even in gmlt with no inline functions

Since the address pool doesn't get populated in this case (due to the
lack of inlining, no child DIEs are added to the CU - so no addresses
are needed for the DIEs themselves) until the range list is emitted - at
the time the attributes are added to the CU, the address pool is empty.
So check whether the address pool will be used for the range lists & add
an addr_base if that's the case.

4 years ago[clang] Remove -Wexperimental-float-control.
Jordan Rupprecht [Thu, 19 Dec 2019 00:44:53 +0000 (16:44 -0800)]
[clang] Remove -Wexperimental-float-control.

Summary: Per D62731, the behavior of clang with `-frounding-math` is no worse than when the rounding flag was completely ignored, so remove this unnecessary warning.

Reviewers: mibintc, chandlerc, echristo, rjmccall, kpn, erichkeane, rsmith, andrew.w.kaylor

Reviewed By: mibintc

Subscribers: merge_guards_bot, cfe-commits

Tags: #clang

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

4 years ago[lldb/Scripting] Simplify code by removing the #if.
Jonas Devlieghere [Thu, 19 Dec 2019 00:42:07 +0000 (16:42 -0800)]
[lldb/Scripting] Simplify code by removing the #if.

The "none" script interpreter does not depend on Python so it doesn't
make sense to have it withing the if-block. The only goal seems to be to
have a slightly different error for when there's no script interpreter,
but as per the comment this doesn't make sense for more than one
scripting language. I think the existing error is perfectly clear, so I
just removed this altogether.

4 years ago[Remarks][Driver] Place temporary remark files next to temporary object files
Francis Visoiu Mistrih [Wed, 18 Dec 2019 23:55:30 +0000 (15:55 -0800)]
[Remarks][Driver] Place temporary remark files next to temporary object files

On Darwin, when used for generating a linked binary from a source file
(through an intermediate object file), the driver will invoke `cc1` to
generate a temporary object file. The temporary remark file will now be
emitted next to the object file, which will then be picked up by
`dsymutil` and emitted in the .dSYM bundle.

This is available for all formats except YAML since by default, YAML
doesn't need a section and the remark file will be lost.

4 years ago[Docs] Fix indentation in remarks section
Francis Visoiu Mistrih [Wed, 18 Dec 2019 23:27:21 +0000 (15:27 -0800)]
[Docs] Fix indentation in remarks section

4 years agoDebugInfo: Don't use implicit zero addr_base
David Blaikie [Thu, 19 Dec 2019 00:19:17 +0000 (16:19 -0800)]
DebugInfo: Don't use implicit zero addr_base

(found when LLVM fails to emit addr_base for gmlt+DWARFv5)

4 years agoReapply "NFC: DebugInfo: Refactor RangeSpanList to be a struct, like DebugLocStream...
David Blaikie [Mon, 16 Dec 2019 23:19:25 +0000 (15:19 -0800)]
Reapply "NFC: DebugInfo: Refactor RangeSpanList to be a struct, like DebugLocStream::List"

Move these data structures closer together so their emission code can
eventually share more of its implementation.

Was an egregious bug (completely untested, evidently) where I hadn't
inverted a DWARFv5 test as needed, so it was doing the exact opposite of
what was required & thus tried to emit a DWARFv5 range list header in
DWARFv4.

Reapply 8e04896288d22ed8bef7ac367923374f96b753d6 which was
reverted in a8154e5e0c83d2f0f65f3b4fb1a0bc68785bd975.

4 years ago[compiler-rt] [fuzzer] Enable LSan in libFuzzer tests on NetBSD
Kamil Rytarowski [Thu, 19 Dec 2019 00:15:03 +0000 (01:15 +0100)]
[compiler-rt] [fuzzer] Enable LSan in libFuzzer tests on NetBSD

4 years agomake err msg in MachSymtabSectionInfo::GetSection clear about the file
Jason Molenda [Thu, 19 Dec 2019 00:11:06 +0000 (16:11 -0800)]
make err msg in MachSymtabSectionInfo::GetSection clear about the file

This error message didn't specify which file was malformed, so
there's some hunting-around required if it comes up.  We have the
filename; include it in the error message.

4 years ago[compiler-rt] [fuzzer] Include stdarg.h for va_list
Kamil Rytarowski [Thu, 19 Dec 2019 00:08:26 +0000 (01:08 +0100)]
[compiler-rt] [fuzzer] Include stdarg.h for va_list

Fixes build on NetBSD after 139e216e6610091b7ee3c30bc11114f5d73cbd3e.

4 years ago[libomptarget][amdgcn] Correct return type of extern __clock64 to unsigned
JonChesterfield [Thu, 19 Dec 2019 00:11:21 +0000 (00:11 +0000)]
[libomptarget][amdgcn] Correct return type of extern __clock64 to unsigned

4 years ago[lldb/test] Move script interpreter tests
Jonas Devlieghere [Wed, 18 Dec 2019 23:41:07 +0000 (15:41 -0800)]
[lldb/test] Move script interpreter tests

Create a new test for lldb launched without a script interpreter and
move it under a new `ScriptInterpreter` directory. Also move
crashlog.test there for consistency.

4 years ago[WebAssembly] Add avgr_u intrinsics and require nuw in patterns
Thomas Lively [Wed, 18 Dec 2019 05:53:46 +0000 (21:53 -0800)]
[WebAssembly] Add avgr_u intrinsics and require nuw in patterns

Summary:
The vector pattern `(a + b + 1) / 2` was previously selected to an
avgr_u instruction regardless of nuw flags, but this is incorrect in
the case where either addition may have an unsigned wrap. This CL
changes the existing pattern to require both adds to have nuw flags
and adds builtin functions and intrinsics for the avgr_u instructions
because the corrected pattern is not representable in C.

Reviewers: aheejin

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

Tags: #clang, #llvm

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

4 years ago[Docs] Fix a typo
Yuanfang Chen [Wed, 18 Dec 2019 23:19:01 +0000 (15:19 -0800)]
[Docs] Fix a typo

4 years agoRevert "[Orc][LLJIT] Use JITLink even if a custom JITTargetMachineBuilder is supplied."
Lang Hames [Wed, 18 Dec 2019 23:13:35 +0000 (15:13 -0800)]
Revert "[Orc][LLJIT] Use JITLink even if a custom JITTargetMachineBuilder is supplied."

This reverts commit 298e183e813c884dd22816383405bae3ef9ef278.

This commit caused some build failures -- reverting while I investigate.

4 years agoRevert concepts changes from D41910
Vedant Kumar [Wed, 18 Dec 2019 22:52:51 +0000 (14:52 -0800)]
Revert concepts changes from D41910

These changes caused LibcxxVariantDataFormatterTestCase in lldb to fail
with an assert:

Assertion failed: (Idx < size() && "Out-of-bounds Bit access."),
function operator[], file
/Users/buildslave/jenkins/workspace/lldb-cmake/llvm-project/llvm/include/llvm/ADT/SmallBitVector.h,
line 452.

In:

7  clang-10                 0x00000001094b79d9 isAtLeastAsSpecializedAs(clang::Sema&, clang::SourceLocation, clang::FunctionTemplateDecl*, clang::FunctionTemplateDecl*, clang::TemplatePartialOrderingContext, unsigned int) + 1865
8  clang-10                 0x00000001094b7111 clang::Sema::getMoreSpecializedTemplate(clang::FunctionTemplateDecl*, clang::FunctionTemplateDecl*, clang::SourceLocation, clang::TemplatePartialOrderingContext, unsigned int, unsigned int) + 97
9  clang-10                 0x000000010939bf88 clang::isBetterOverloadCandidate(clang::Sema&, clang::OverloadCandidate const&, clang::OverloadCandidate const&, clang::SourceLocation, clang::OverloadCandidateSet::CandidateSetKind) + 1128

Revert "[Concepts] Fix incorrect move out of temporary in D41910"

This reverts commit 11d5fa6e87e3584f72056ecc2b17f88c58323dde.

Revert "[Concepts] Fix crash in D41910"

This reverts commit 12038be20ee6a903cdbd3fddce65535ef683e31d.

Revert "[Concepts] Constrained partial specializations and function overloads."

This reverts commit fc0731b98a67c793862288f8ae334322666214dc.

4 years ago[X86] Add a simple hack to IsProfitableToFold to prevent vselect+strict fp operations...
Craig Topper [Wed, 18 Dec 2019 22:24:20 +0000 (14:24 -0800)]
[X86] Add a simple hack to IsProfitableToFold to prevent vselect+strict fp operations from being folded into masked instructions.

We really need to update the isel patterns to prevent this, but
that requires some tablegen de-tangling. So this hack will work
for correctness in the short term.

4 years ago[X86] Add test case to show incorrect formation of masked add from vselect+strict_fadd.
Craig Topper [Wed, 18 Dec 2019 22:19:55 +0000 (14:19 -0800)]
[X86] Add test case to show incorrect formation of masked add from vselect+strict_fadd.

The masked operation will suppress exceptions on masked out lanes.
But that's not what vselect+strict_fadd means.

4 years agoAdd method to ignore invisible AST nodes
Stephen Kelly [Sat, 4 May 2019 15:51:58 +0000 (16:51 +0100)]
Add method to ignore invisible AST nodes

Reviewers: aaron.ballman

Subscribers: mgorny, cfe-commits

Tags: #clang

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

4 years agoTrim trailing whitespace
Stephen Kelly [Wed, 18 Dec 2019 22:12:10 +0000 (22:12 +0000)]
Trim trailing whitespace

4 years agoOutput names in the AST in tests
Stephen Kelly [Wed, 18 Dec 2019 21:50:50 +0000 (21:50 +0000)]
Output names in the AST in tests

4 years ago[Remarks][Driver] Run dsymutil when remarks are enabled
Francis Visoiu Mistrih [Wed, 18 Dec 2019 19:13:46 +0000 (11:13 -0800)]
[Remarks][Driver] Run dsymutil when remarks are enabled

When clang is invoked with a source file without -c or -S, it creates a
cc1 job, a linker job and if debug info is requested, a dsymutil job. In
case of remarks, we should also create a dsymutil job to avoid losing
the remarks that will be generated in a tempdir that gets removed.

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

4 years ago[Remarks][Driver][NFC] Make shouldEmitRemarks more available in the Driver
Francis Visoiu Mistrih [Wed, 18 Dec 2019 21:16:09 +0000 (13:16 -0800)]
[Remarks][Driver][NFC] Make shouldEmitRemarks more available in the Driver

Move the function to Driver.h so that it can be re-used in other places.

4 years ago[analyzer] Teach MismatchedDealloc about initWithBytesNoCopy with deallocator.
Artem Dergachev [Wed, 18 Dec 2019 21:19:44 +0000 (13:19 -0800)]
[analyzer] Teach MismatchedDealloc about initWithBytesNoCopy with deallocator.

MallocChecker warns when memory is passed into -[NSData initWithBytesNoCopy]
but isn't allocated by malloc(), because it will be deallocated by free().
However, initWithBytesNoCopy has an overload that takes an arbitrary block
for deallocating the object. If such overload is used, it is no longer
necessary to make sure that the memory is allocated by malloc().

4 years agoAdd prototype for a function we call.
Jason Molenda [Wed, 18 Dec 2019 22:18:22 +0000 (14:18 -0800)]
Add prototype for a function we call.

4 years ago[Orc][LLJIT] Use JITLink even if a custom JITTargetMachineBuilder is supplied.
Lang Hames [Mon, 16 Dec 2019 10:45:51 +0000 (02:45 -0800)]
[Orc][LLJIT] Use JITLink even if a custom JITTargetMachineBuilder is supplied.

LLJITBuilder will now use JITLink on supported platforms even if a custom
JITTargetMachineBuilder is supplied, provided that neither the code model,
nor the relocation model, nor the ObjectLinkingLayerCreator is set.

4 years agoRefactor CompareReferenceRelationship and its callers in preparation for
Richard Smith [Wed, 18 Dec 2019 22:01:40 +0000 (14:01 -0800)]
Refactor CompareReferenceRelationship and its callers in preparation for
implementing the resolution of CWG2352.

No functionality change, except that we now convert the referent of a
reference binding to the underlying type of the reference in more cases;
we used to happen to preserve the type sugar from the referent if the
only type change was in the cv-qualifiers.

This exposed a bug in how we generate code for trivial assignment
operators: if the type sugar (particularly the may_alias attribute)
got lost during reference binding, we'd use the "wrong" TBAA information
for the load during the assignment.

4 years agoUse hasOffsetApplied to initialize member HasOffsetApplied
Akira Hatanaka [Wed, 18 Dec 2019 21:54:30 +0000 (13:54 -0800)]
Use hasOffsetApplied to initialize member HasOffsetApplied

This is NFC since none of the constructor calls in trunk pass
hasOffsetApplied=true.