Ayal Zaks [Thu, 19 Dec 2019 22:04:49 +0000 (00:04 +0200)]
[LV] Strip wrap flags from vectorized reductions
A sequence of additions or multiplications that is known not to wrap, may wrap
if it's order is changed (i.e., reassociated). Therefore when vectorizing
integer sum or product reductions, their no-wrap flags need to be removed.
Fixes PR43828
Patch by Denis Antrushin
Differential Revision: https://reviews.llvm.org/D69563
Johannes Altmanninger [Fri, 20 Dec 2019 12:25:27 +0000 (13:25 +0100)]
[lldb] Fix test using lld on non-linux systems
Cullen Rhodes [Wed, 4 Dec 2019 14:20:33 +0000 (14:20 +0000)]
[AArch64][SVE] Fold constant multiply of element count
Summary:
E.g.
%0 = tail call i64 @llvm.aarch64.sve.cntw(i32 31)
%mul = mul i64 %0, <const>
Should emit:
cntw x0, all, mul #<const>
For <const> in the range 1-16.
Patch by Kerry McLaughlin
Reviewers: sdesmalen, huntergr, dancgr, rengolin, efriedma
Reviewed By: sdesmalen
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71014
Raphael Isemann [Fri, 20 Dec 2019 11:38:49 +0000 (12:38 +0100)]
[lldb] Make that we can call HostInfo::Initialize and HostInfo::Terminate multiple times
Summary:
HostInfo's state isn't actually fully rested after calling ::Terminate. Currently we only reset the
values of all the `HostInfoBaseFields` but not all the variables with static storage that
keep track of whether the fields need to be initialised. This breaks random unit tests as running
them twice (or running multiple test instances in one run) will cause that the second time
we ask HostInfo for any information we get the default value back for any field.
This patch moves all the once_flag's into the `HostInfoBaseFields` so that they also get reseted
by ::Terminate and removes all the `success` bools. We should also rewrite half this code but
I would prefer if my tests aren't broken over the holidays so let's just put some duct tape on it
for now.
Reviewers: labath
Reviewed By: labath
Subscribers: abidh, JDevlieghere, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71748
Andrzej Warzynski [Fri, 20 Dec 2019 10:51:25 +0000 (10:51 +0000)]
[AArch64][SVE] Add intrnisics for saturating scalar arithmetic
Summary:
The following intrnisics are added:
* @llvm.aarch64.sve.sqdec{b|h|w|d|p}
* @llvm.aarch64.sve.sqinc{b|h|w|d|p}
* @llvm.aarch64.sve.uqdec{b|h|w|d|p}
* @llvm.aarch64.sve.uqinc{b|h|w|d|p}
For every intrnisic there a scalar variants (with n32 or n64 suffix) and
vector variants (no suffix).
Reviewers: sdesmalen, rengolin, efriedma
Reviewed By: sdesmalen, efriedma
Subscribers: eli.friedman, tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71252
Cullen Rhodes [Wed, 4 Dec 2019 16:33:49 +0000 (16:33 +0000)]
Recommit "[AArch64][SVE] Add permutation and selection intrinsics"
Recommit
23c28c40436143006be740533375c036d11c92cd (reverted in
dcb48f50bdfa0fa47b62d089b6ed999d857fc9f8) with a fix for an assert
"Request for a fixed size on a scalable object" being triggered in
`LowerSVEIntrinsicEXT`. The fix is to call `getKnownMinSize` on the
TypeSize object.
Andrzej Warzynski [Fri, 20 Dec 2019 09:27:10 +0000 (09:27 +0000)]
[AArch64][SVE] Add intrinsics for binary narrowing operations
Summary:
The following intrinsics for binary narrowing shift righ operations are
added:
* @llvm.aarch64.sve.shrnb
* @llvm.aarch64.sve.uqshrnb
* @llvm.aarch64.sve.sqshrnb
* @llvm.aarch64.sve.sqshrunb
* @llvm.aarch64.sve.uqrshrnb
* @llvm.aarch64.sve.sqrshrnb
* @llvm.aarch64.sve.sqrshrunb
* @llvm.aarch64.sve.shrnt
* @llvm.aarch64.sve.uqshrnt
* @llvm.aarch64.sve.sqshrnt
* @llvm.aarch64.sve.sqshrunt
* @llvm.aarch64.sve.uqrshrnt
* @llvm.aarch64.sve.sqrshrnt
* @llvm.aarch64.sve.sqrshrunt
Reviewers: sdesmalen, rengolin, efriedma
Reviewed By: efriedma
Subscribers: tschuett, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71552
Kadir Cetinkaya [Thu, 19 Dec 2019 21:22:01 +0000 (22:22 +0100)]
[clang][Tooling] Prefer -x over -std when interpolating
Summary:
Currently interpolation logic prefers -std over -x. But the latter is a
more strong signal, so this patch inverts the order and only makes use of -std
if -x didn't exist.
Fixes https://github.com/clangd/clangd/issues/185
Thanks @sammccall for tracking this down!
Reviewers: sammccall
Subscribers: ilya-biryukov, usaxena95, cfe-commits, sammccall
Tags: #clang
Differential Revision: https://reviews.llvm.org/D71727
Raphael Isemann [Fri, 20 Dec 2019 10:07:27 +0000 (11:07 +0100)]
[lldb] Added test for objc_direct calls with categories
As pointed out in D71694 this wasn't tested before in LLDB.
Sam Parker [Fri, 20 Dec 2019 09:32:36 +0000 (09:32 +0000)]
[ARM][MVE] Fixes for tail predication.
1) Fix an issue with the incorrect value being used for the number of
elements being passed to [d|w]lstp. We were trying to check that
the value was available at LoopStart, but this doesn't consider
that the last instruction in the block could also define the
register. Two helpers have been added to RDA for this.
2) Insert some code to now try to move the element count def or the
insertion point so that we can perform more tail predication.
3) Related to (1), the same off-by-one could prevent us from
generating a low-overhead loop when a mov lr could have been
the last instruction in the block.
4) Fix up some instruction attributes so that not all the
low-overhead loop instructions are labelled as branches and
terminators - as this is not true for dls/dlstp.
Differential Revision: https://reviews.llvm.org/D71609
David Spickett [Fri, 20 Dec 2019 09:11:07 +0000 (09:11 +0000)]
Re-land "[cmake] Add dependency on llvm-dwarfdump to llvm-locstats"
This reverts commit
f8e2ab3cd347cb7fb959ea0ece795f4eb347094c.
Pavel Labath [Fri, 20 Dec 2019 09:03:01 +0000 (10:03 +0100)]
[lldb] Remove XFAIL from TestDeadStrip.py
Fixed by 92211b.
Sam Parker [Fri, 20 Dec 2019 08:42:11 +0000 (08:42 +0000)]
[ARM][MVE] Tail predicate in the presence of vcmp
Record the discovered VPT blocks while checking for validity and, for
now, only handle blocks that begin with VPST and not VPT. We're now
allowing more than one instruction to define vpr, but each block must
somehow be predicated using the vctp. This leaves us with several
scenarios which need fixing up:
1) A VPT block with is only predicated by the vctp and has no
internal vpr defs.
2) A VPT block which is only predicated by the vctp but has an
internal vpr def.
3) A VPT block which is predicated upon the vctp as well as another
vpr def.
4) A VPT block which is not predicated upon a vctp, but contains it
and all instructions within the block are predicated upon in.
The changes needed are, for:
1) The easy one, just remove the vpst and unpredicate the
instructions in the block.
2) Remove the vpst and unpredicate the instructions up to the
internal vpr def. Need insert a new vpst to predicate the
remaining instructions.
3) No nothing.
4) The vctp will be inside a vpt and the instruction will be removed,
so adjust the size of the mask on the vpst.
Differential Revision: https://reviews.llvm.org/D71107
Sam Parker [Fri, 13 Dec 2019 14:41:08 +0000 (14:41 +0000)]
[ARM][MVE] Tail predicate bottom/top muls.
Add VMULL and VQDMULL variants to our tail predication white list.
Differential Revision: https://reviews.llvm.org/D71465
Karl-Johan Karlsson [Fri, 20 Dec 2019 07:07:22 +0000 (08:07 +0100)]
[clang] Fix the canonicalization of paths in -fdiagnostics-absolute-paths
In the current implementation of clang the canonicalization of paths in
diagnostic messages (when using -fdiagnostics-absolute-paths) only works
if the symbolic link is in the directory part of the filename, not if
the file itself is a symbolic link to another file.
This patch adds support to canonicalize the complete path including the
file.
Reviewers: rsmith, hans, rnk, ikudrin
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D70527
Johannes Altmanninger [Wed, 27 Nov 2019 21:48:15 +0000 (22:48 +0100)]
[LLDB] Fix address computation for inline function
Summary:
Fixes PR41237 - SIGSEGV on call expression evaluation when debugging clang
When linking multiple compilation units that define the same functions,
the functions is merged but their debug info is not. This ignores debug
info entries for functions in a non-executable sections; those are
functions that were definitely dropped by the linker.
Reviewers: spyffe, clayborg, jasonmolenda
Reviewed By: clayborg
Subscribers: labath, aprantl, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71487
Craig Topper [Fri, 20 Dec 2019 06:30:23 +0000 (22:30 -0800)]
[X86] Make EmitCmp into a static function and explicitly return chain result for STRICT_FCMP. NFCI
The only thing its getting from the X86TargetLowering class is
the subtarget which we can easily pass. This function only has
one call site now since this might help the compiler inline it.
Explicitly return both the flag result and the chain result for
STRICT_FCMP nodes. This removes an assumption in the caller that
getValue(1) is the right way to get the chain.
Craig Topper [Fri, 20 Dec 2019 04:41:02 +0000 (20:41 -0800)]
[X86] Directly call EmitTest in two places instead of creating a null constant and calling EmitCmp. NFCI
EmitCmp will just immediately call EmitTest and discard the null
constant only to have EmitTest create it again if it doesn't fold.
So just skip all that and go directly to EmitTest.
Lang Hames [Fri, 20 Dec 2019 04:42:26 +0000 (20:42 -0800)]
[Orc][LLJIT] Re-apply
298e183e813 (use JITLink for LLJIT where supported).
Patch
d9220b580b3 fixed the underlying issue that casued
298e183e813 to fail.
Lang Hames [Fri, 20 Dec 2019 04:41:59 +0000 (20:41 -0800)]
[JITLink][MachO] Fix common symbol size plumbing.
This fixes the underlying bug that was exposed by
298e183e813.
Richard Smith [Thu, 19 Dec 2019 19:15:47 +0000 (11:15 -0800)]
CWG2352: Allow qualification conversions during reference binding.
The language wording change forgot to update overload resolution to rank
implicit conversion sequences based on qualification conversions in
reference bindings. The anticipated resolution for that oversight is
implemented here -- we order candidates based on qualification
conversion, not only on top-level cv-qualifiers.
For OpenCL/C++, this allows reference binding between pointers with
differing (nested) address spaces. This makes the behavior of reference
binding consistent with that of implicit pointer conversions, as is the
purpose of this change, but that pre-existing behavior for pointer
conversions is itself probably not correct. In any case, it's now
consistently the same behavior and implemented in only one place.
River Riddle [Fri, 20 Dec 2019 00:57:03 +0000 (16:57 -0800)]
[CommandLine] Add template instantiations of cl::parser for long and long long.
This allows cl::opt<int64_t>.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D71729
Craig Topper [Fri, 20 Dec 2019 00:03:11 +0000 (16:03 -0800)]
[X86] Add test case for miscompilation of a vector setcc on KNL target. NFC
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'
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
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.
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
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
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.
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.
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
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.
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.
LLVM GN Syncbot [Thu, 19 Dec 2019 21:33:15 +0000 (21:33 +0000)]
[gn build] Port
3075cd5c9fc
Sylvestre Ledru [Thu, 19 Dec 2019 21:30:55 +0000 (22:30 +0100)]
Fix the links to clang analyzers checkers
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.
Sylvestre Ledru [Thu, 19 Dec 2019 20:54:38 +0000 (21:54 +0100)]
Fix some typos in the clang-tools-extra doc
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
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...] {};
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.
Kadir Cetinkaya [Thu, 19 Dec 2019 20:50:32 +0000 (21:50 +0100)]
[clangd] Fix write past end pointer
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.
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.
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
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.
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
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
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
Alexey Bataev [Thu, 19 Dec 2019 18:33:10 +0000 (13:33 -0500)]
[SLP]Fix test arguments, NFC.
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
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
Alexey Bataev [Thu, 19 Dec 2019 17:49:01 +0000 (12:49 -0500)]
[SLP]Added test for gathering reused extracts from narrow vector, NFC.
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
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.
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.
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
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
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
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
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
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
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
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.
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.
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
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
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
LLVM GN Syncbot [Thu, 19 Dec 2019 12:43:20 +0000 (12:43 +0000)]
[gn build] Port
abc7f6800df
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
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
David Green [Thu, 19 Dec 2019 10:40:17 +0000 (10:40 +0000)]
[Instcombine] Add select canonicalization tests. NFC
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
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
Jay Foad [Thu, 19 Dec 2019 11:19:36 +0000 (11:19 +0000)]
Make more use of MachineInstr::mayLoadOrStore.
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
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
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
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
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
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.
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
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
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
czhengsz [Thu, 19 Dec 2019 09:11:45 +0000 (04:11 -0500)]
[SCEV] NFC - add testcase for get accurate range for AddExpr
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
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
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
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
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
David Blaikie [Thu, 19 Dec 2019 03:00:40 +0000 (19:00 -0800)]
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.
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
JonChesterfield [Thu, 19 Dec 2019 02:00:26 +0000 (02:00 +0000)]
[libomptarget][nvptx] Fix build, second symbol reordering
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.
Jon Chesterfield [Thu, 19 Dec 2019 01:50:06 +0000 (01:50 +0000)]
[libomptarget][nvptx] Fix build, symbol ordering in target_impl.h
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.
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
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.
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.
Francis Visoiu Mistrih [Wed, 18 Dec 2019 23:27:21 +0000 (15:27 -0800)]
[Docs] Fix indentation in remarks section