Jon Chesterfield [Sun, 27 Oct 2019 05:01:24 +0000 (05:01 +0000)]
[nfc][libomptarget] Decrease coupling between files
Summary:
[nfc][libomptarget] Decrease coupling between files
debug.h used the symbol omptarget_device_environment so implicitly required
an include of omptarget-nvptx.h to compile. Similarly interface.h uses size_t.
Moving this declaration to a new header means cancel, critical can now build
without omptarget-nvptx.h. After this change, debug.h, cancel.cu, critical.cu
could move under a common source directory.
Reviewers: ABataev, jdoerfert, grokos
Subscribers: openmp-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D69473
Jon Chesterfield [Sun, 27 Oct 2019 03:32:36 +0000 (03:32 +0000)]
[nfc][libomptarget] Inline option into target_impl
Summary:
[nfc][libomptarget] Inline option into target_impl
Subset of D69423. The macros that were in option.h are all target dependent.
Inlining the header simplifies the dependency graph when looking to move code
into a common subdir.
Reviewers: ABataev, jdoerfert, grokos
Subscribers: openmp-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D69472
Greg Bedwell [Sun, 27 Oct 2019 10:06:22 +0000 (10:06 +0000)]
[MCA] Fix a spelling mistake in a comment. NFC
Greg Bedwell [Sun, 27 Oct 2019 09:39:45 +0000 (09:39 +0000)]
Fix a spelling mistake in a couple of intrinsic description comments. NFC
Jon Chesterfield [Sat, 26 Oct 2019 18:19:50 +0000 (19:19 +0100)]
[NFC][libomptarget]Remove TRUE,FALSE macros from option.h
Summary:
[NFC][libomptarget]Remove TRUE,FALSE macros from option.h
Subset of D69423. Patch series ends with removing option.h.
Reviewers: ABataev, jdoerfert, grokos
Subscribers: openmp-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D69463
Craig Topper [Sat, 26 Oct 2019 17:26:04 +0000 (10:26 -0700)]
[X86] Only look up boolean reduction cost tables if the reduction is not pairwise.
Summary:
We don't pattern match pairwise shuffles in SelectionDAG. So we
should only return the optimized costs if its not a pairwise
shuffle.
I think SLP vectorizer gives priority to non pairwise shuffle if
the cost is the same. And the look up for reduction intrinsics
passes false for the pairwise flag. So this probably has no real
effect today.
Reviewers: RKSimon
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69083
Roman Lebedev [Sat, 26 Oct 2019 19:46:09 +0000 (22:46 +0300)]
[APInt] Introduce APIntOps::GetMostSignificantDifferentBit()
Summary:
Compare two values, and if they are different, return the position of the
most significant bit that is different in the values.
Needed for D69387.
Reviewers: nikic, spatel, sanjoy, RKSimon
Reviewed By: nikic
Subscribers: xbolva00, hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69439
David Zarzycki [Thu, 17 Oct 2019 09:38:15 +0000 (12:38 +0300)]
[X86] Prefer KORTEST on Knights Landing or later for memcmp()
PTEST and especially the MOVMSK instructions are slow on Knights Landing
or later. As a bonus, this patch increases instruction parallelism by
emitting:
KORTEST(PCMPNEQ(a, b), PCMPNEQ(c, d)) == 0
Instead of:
KORTEST(AND(PCMPEQ(a, b), PCMPEQ(c, d))) == ~0
https://reviews.llvm.org/D69157
David Zarzycki [Sun, 20 Oct 2019 09:21:11 +0000 (12:21 +0300)]
[X86] NFC: expand inline memcmp test coverage
1) Adds SSE4.1 coverage.
2) Adds prefer-256-bit or not coverage.
3) Adds more power-of-two tests up to 512 bytes.
4) Adds power-of-two-minus-one tests to verify overlapping loads.
5) Adds power-of-two-plus-one-half tests (48, 96, 192, and 384).
6) Adds greater-than/less-than tests from 16 to 512 bytes.
https://reviews.llvm.org/D69222
marshall [Tue, 22 Oct 2019 23:57:02 +0000 (16:57 -0700)]
Add all the issues to be voted upon in Belfast
Luboš Luňák [Sat, 26 Oct 2019 13:34:45 +0000 (15:34 +0200)]
fix lldb build with -DLLVM_ENABLE_MODULES=On (missing #include)
The error message says to add the #include.
Georgii Rymar [Sat, 26 Oct 2019 12:08:49 +0000 (15:08 +0300)]
[ObjectYAML] - Do not use auto. NFC.
Using 'auto' when the type is not obvious is undesired.
(it is just a test commit actually)
georgerim [Sat, 26 Oct 2019 11:52:12 +0000 (14:52 +0300)]
[YAMLTraits] - Revert a change committed by a mistake in D68983
I've accidentally reverted one of my previous patches.
It was not catched by bots because (I guess) they do not
build in debug (we have a test case which triggers an assert
in MSVS when runs without this change).
More info: https://reviews.llvm.org/D68983#inline-624235
Reported by Jordan Rupprecht.
cdevadas [Sat, 26 Oct 2019 09:03:36 +0000 (14:33 +0530)]
[AMDGPU] Fix Vreg_1 PHI lowering in SILowerI1Copies.
There is a minor flaw in the implementation of function lowerPhis.
This function replaces values of regclass Vreg_1 (boolean values)
involved in PHIs into an SGPR. Currently it iterates over the MBBs
and performs an inplace lowering of PHIs and fails to lower any
incoming value that itself is another PHI of Vreg_1 regclass.
The failure occurs only when the MBB where the incoming PHI value
belongs is not visited/lowered yet.
To fix this problem, collect all Vreg_1 PHIs upfront and then
perform the lowering.
Differential Revision: https://reviews.llvm.org/D69182
Shu-Chun Weng [Sat, 26 Oct 2019 08:36:50 +0000 (10:36 +0200)]
Correct size_t format specifier
Differential Revision: https://reviews.llvm.org/D69455
Craig Topper [Fri, 25 Oct 2019 07:13:52 +0000 (00:13 -0700)]
[X86][GISel] Fix typo in comment. NFC
Sergey Dmitriev [Sat, 31 Aug 2019 02:46:15 +0000 (19:46 -0700)]
Reland "[Clang][Bundler] Error reporting improvements"
- Changed FileHandler read/write methods to return llvm::Error
- Using unified way of reporting errors
- Removed trailing '.' from the error messages
Differential Revision: https://reviews.llvm.org/D67031
Lang Hames [Sat, 26 Oct 2019 00:59:17 +0000 (17:59 -0700)]
[ORC] Avoid SymbolStringPtr copies in DynamicLibrarySearchGenerator predicate.
Pass SymbolStringPtr by const-ref to avoid copies (which require atomic
ref-count operations).
Sergey Dmitriev [Sat, 26 Oct 2019 00:54:27 +0000 (17:54 -0700)]
Revert "[Clang][Bundler] Error reporting improvements"
This reverts commit
dd501045cdea1c80b6788f0266d2a79f8b412eea.
John McCall [Fri, 25 Oct 2019 23:28:03 +0000 (16:28 -0700)]
[NFC] Add a tablegen node for the root of the AST node hierarchies.
This is useful for the property databases we want to add for abstract
serialization, since root classes can have interesting properties.
John McCall [Fri, 25 Oct 2019 23:23:17 +0000 (16:23 -0700)]
Add Record::getValueAsOptionalDef().
Using `?` as an optional marker is very useful in Clang's AST-node
emitters because otherwise we need a separate class just to encode
the presence or absence of a base node reference.
Sergey Dmitriev [Sat, 31 Aug 2019 02:46:15 +0000 (19:46 -0700)]
[Clang][Bundler] Error reporting improvements
- Changed FileHandler read/write methods to return llvm::Error
- Using unified way of reporting errors
- Removed trailing '.' from the error messages
Differential Revision: https://reviews.llvm.org/D67031
Sanjay Patel [Fri, 25 Oct 2019 23:21:44 +0000 (19:21 -0400)]
[SDAG] fold extract_vector_elt with undef index
This makes the DAG behavior consistent with IR's extractelement after:
rGb32e4664a715
https://bugs.llvm.org/show_bug.cgi?id=42689
I've tried to maintain test intent for WebAssembly.
The AMDGPU test is trying to test for crashing or other bad behavior,
but I'm not sure if that's possible after this change.
Julian Lettner [Thu, 21 Feb 2019 05:09:19 +0000 (21:09 -0800)]
[lit] Move sharding logic into separate function
Matt Morehouse [Fri, 25 Oct 2019 23:12:59 +0000 (16:12 -0700)]
[libFuzzer] Enable extra counters for Fuchsia.
Adrian McCarthy [Fri, 25 Oct 2019 22:50:42 +0000 (15:50 -0700)]
Fix after
738af7a6241c98164625b9cd1ba9f8af4e36f197
Default implementation of a new virtual method wasn't returning a value.
Reid Kleckner [Fri, 25 Oct 2019 22:43:26 +0000 (15:43 -0700)]
Use __builtin_strlen in constexpr StringRef ctor with MSVC
MSVC supports it. Fixes the major MSVC compile time regression
introduced in r369961. Now
clang/lib/StaticAnalyzer/Frontend/CheckerRegistry.cpp compiles in 18s
instead of 7+ minutes.
Fixes PR43369
Daniel Sanders [Fri, 25 Oct 2019 22:50:36 +0000 (15:50 -0700)]
[globalisel] Restructure the GlobalISel documentation
There's a couple minor deletions amongst this but 99% of it is just moving
the documentation around to prepare the way for more meaningful changes.
Jonas Devlieghere [Fri, 25 Oct 2019 22:46:24 +0000 (15:46 -0700)]
[LLDB] Fix inline variable only used in assertion. (NFC)
This prevents unused variable warning/error in -DNDEBUG builds. The
variable was introduced in
5934cd11ea3e.
Patch by: Shu-Chun Weng
Differential revision: https://reviews.llvm.org/D69451
Michael Spencer [Fri, 25 Oct 2019 22:43:57 +0000 (15:43 -0700)]
[clang][DependencyScanning] 80-col.
Pavel Labath [Fri, 25 Oct 2019 22:18:51 +0000 (22:18 +0000)]
lldb/minidump: Refactor memory region computation code
The goal of this refactor is to enable ProcessMinidump to take into
account the loaded modules and their sections when computing the
permissions of various ranges of memory, as discussed in D66638.
This patch moves some of the responsibility for computing the ranges
from MinidumpParser into ProcessMinidump. MinidumpParser still does the
parsing, but ProcessMinidump becomes responsible for answering the
actual queries about memory ranges. This will enable it (in a follow-up
patch) to augment the information obtained from the parser with data
obtained from actual object files.
The changes in the actual code are fairly straight-forward and just
involve moving code around. MinidumpParser::GetMemoryRegions is renamed
to BuildMemoryRegions to emphasize that it does no caching. The only new
thing is the additional bool flag returned from this function. This
indicates whether the returned regions describe all memory mapped into
the target process. Data obtained from /proc/maps and the MemoryInfoList
stream is considered to be exhaustive. Data obtained from Memory(64)List
is not. This will be used to determine whether we need to augment the
data or not.
This reshuffle means that it is no longer possible/easy to test some of
this code via unit tests, as constructing a ProcessMinidump instance is
hard. Instead, I update the unit tests to only test the parsing of the
actual data, and test the answering of queries through a lit test using
the "memory region" command. The patch also includes some tweaks to the
MemoryRegion class to make the unit tests easier to write.
Reviewers: amccarth, clayborg
Subscribers: lldb-commits
Differential Revision: https://reviews.llvm.org/D69035
Joel E. Denny [Fri, 18 Oct 2019 16:53:45 +0000 (12:53 -0400)]
[lit] Don't fail when printing test output with special chars
This addresses a UnicodeEncodeError when using Python 3.6.5 in Windows
10.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D69207
Pavel Labath [Fri, 25 Oct 2019 21:44:46 +0000 (21:44 +0000)]
lldb/COFF: Create a separate "section" for the file header
In an attempt to ensure that every part of the module's memory image is
accounted for, D56537 created a special "container section" spanning the
entire image. While that seemed reasonable at the time (and it still
mostly does), it did create a problem of what to put as the "file size"
of the section, because the image is not continuous on disk, as we
generally assume (which is why I put zero there). Additionally, this
arrangement makes it unclear what kind of permissions should be assigned
to that section (which is what my next patch does).
To get around these, this patch partially reverts D56537, and goes back
to top-level sections. Instead, what I do is create a new "section" for
the object file header, which is also being loaded into memory, though
its not considered to be a section in the strictest sense. This makes it
possible to correctly assign file size section, and we can later assign
permissions to it as well.
Reviewers: amccarth, mstorsjo
Subscribers: lldb-commits
Differential Revision: https://reviews.llvm.org/D69100
Stanislav Mekhanoshin [Fri, 25 Oct 2019 19:40:16 +0000 (12:40 -0700)]
[AMDGPU] Enable SGPR copy folding
That used to fail in the last testcase function because after
%0:sreg_64.sub0 was folded into %3:sreg_32_xm0_xexec COPY, it
was further folded into S_STORE_DWORD_IMM. Its legal effective
subreg class is SReg_32 while instruction expects more restricted
SReg_32_XM0_EXEC. However, SIInstrInfo::isLegalRegOperand()
passed the legality check and it was caught in the verifier.
Borrowed code from the verifier to check for RC legality.
Differential Revision: https://reviews.llvm.org/D69445
Daniel Sanders [Fri, 25 Oct 2019 22:01:14 +0000 (15:01 -0700)]
[globalisel] Fix typo in 'Add LLVMDev 2019 talks and links for the 2017 talks'
Daniel Sanders [Fri, 25 Oct 2019 21:52:14 +0000 (14:52 -0700)]
[globalisel] Add LLVMDev 2019 talks and links for the 2017 talks
Yonghong Song [Fri, 25 Oct 2019 05:57:06 +0000 (22:57 -0700)]
[BPF] fix a CO-RE issue with -mattr=+alu32
Ilya Leoshkevich (<iii@linux.ibm.com>) reported an issue that
with -mattr=+alu32 CO-RE has a segfault in BPF MISimplifyPatchable
pass.
The pattern will be transformed by MISimplifyPatchable
pass looks like below:
r5 = ld_imm64 @"b:0:0$0:0"
r2 = ldw r5, 0
... r2 ... // use r2
The pass will remove the intermediate 'ldw' instruction
and replacing all r2 with r5 likes below:
r5 = ld_imm64 @"b:0:0$0:0"
... r5 ... // use r5
Later, the ld_imm64 insn will be replaced with
r5 = <patched immediate>
for field relocation purpose.
With -mattr=+alu32, the input code may become
r5 = ld_imm64 @"b:0:0$0:0"
w2 = ldw32 r5, 0
... w2 ... // use w2
Replacing "w2" with "r5" is incorrect and will
trigger compiler internal errors.
To fix the problem, if the register class of ldw* dest
register is sub_32, we just replace the original ldw*
register with:
w2 = w5
Directly replacing all uses of w2 with in-place
constructed w5 for the use operand seems not working in all cases.
The latest kernel will have -mattr=+alu32 on by default,
so added this flag to all CORE tests.
Tested with latest kernel bpf-next branch as well with this patch.
Differential Revision: https://reviews.llvm.org/D69438
Sanjay Patel [Fri, 25 Oct 2019 19:58:35 +0000 (15:58 -0400)]
[x86] add tests for extractelement with undef index (PR42689); NFC
David Tenty [Fri, 25 Oct 2019 17:54:29 +0000 (13:54 -0400)]
Update version number in llvm python bindings
Summary:
The version number has come out of sync with what is in CMakeLists.txt,
causing loading the bindings to fail.
Reviewers: AustinWells, abhina.sree
Reviewed By: AustinWells
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69436
Jim Ingham [Fri, 25 Oct 2019 21:05:07 +0000 (14:05 -0700)]
Add the ability to pass extra args to a Python breakpoint callback.
For example, it is pretty easy to write a breakpoint command that implements "stop when my caller is Foo", and
it is pretty easy to write a breakpoint command that implements "stop when my caller is Bar". But there's no
way to write a generic "stop when my caller is..." function, and then specify the caller when you add the
command to a breakpoint.
With this patch, you can pass this data in a SBStructuredData dictionary. That will get stored in
the PythonCommandBaton for the breakpoint, and passed to the implementation function (if it has the right
signature) when the breakpoint is hit. Then in lldb, you can say:
(lldb) break com add -F caller_is -k caller_name -v Foo
More generally this will allow us to write reusable Python breakpoint commands.
Differential Revision: https://reviews.llvm.org/D68671
Jian Cai [Fri, 25 Oct 2019 21:03:07 +0000 (14:03 -0700)]
Revert "[ARM] Uses "Sun Style" syntax for section switching"
This reverts commit
03de2f84fc4acf06c719cd007b5459c9d4d0a20c.
Stanislav Mekhanoshin [Fri, 25 Oct 2019 20:33:40 +0000 (13:33 -0700)]
[AMDGPU] Fixed asan failure in SIFoldOperands
Both tryFoldOMod() and tryFoldClamp() remove original instruction,
so the check MI.modifiesRegister() may use a deleted MI.
Differential Revision: https://reviews.llvm.org/D69448
Matt Arsenault [Tue, 1 Oct 2019 19:51:37 +0000 (15:51 -0400)]
GlobalISel: Implement widenScalar for G_INSERT_VECTOR_ELT
Guillaume Chatelet [Fri, 25 Oct 2019 20:26:23 +0000 (22:26 +0200)]
[Alignment][NFC] Convert AllocaInst to MaybeAlign
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
Reviewed By: courbet
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69301
Jian Cai [Fri, 25 Oct 2019 18:05:31 +0000 (11:05 -0700)]
[ARM] Uses "Sun Style" syntax for section switching
Summary:
Support "Sun Style" syntax for section switching ("#alloc,#write" etc).
https://bugs.llvm.org/show_bug.cgi?id=43759
Reviewers: peter.smith, eli.friedman, kristof.beyls, t.p.northover
Reviewed By: peter.smith
Subscribers: MaskRay, llozano, manojgupta, nickdesaulniers, kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69296
Matt Arsenault [Tue, 8 Oct 2019 17:04:41 +0000 (10:04 -0700)]
AMDGPU/GlobalISel: Handle flat/global G_ATOMIC_CMPXCHG
Custom lower this to a target instruction with the merge operands. I
think it might be better to directly select this and emit a
REG_SEQUENCE, but this would be more work since it would require
splitting the tablegen patterns for these cases from the other
atomics.
Changpeng Fang [Fri, 25 Oct 2019 20:08:04 +0000 (13:08 -0700)]
AMDGPU: Fix the broken dominator tree when creating waterfall loop for resource descriptor
Summary:
In loadSRsrcFromVGPR, if MBB is the same as Succ, Remiander is not the immediate dominator of Succ.
Reviewer:
arsenm
Differential Revision:
https://reviews.llvm.org/D69358
Daniel Sanders [Fri, 4 Oct 2019 01:49:27 +0000 (18:49 -0700)]
[gicombiner] Add parse failure tests for defs/match
Amy Huang [Fri, 25 Oct 2019 19:40:38 +0000 (12:40 -0700)]
Revert "Add an instruction marker field to the ExtraInfo in MachineInstrs."
Reverting commit
b85b4e5a6f8579c137fecb59a4d75d7bfb111f79 due to some
buildbot failures/ out of memory errors.
Teresa Johnson [Fri, 25 Oct 2019 15:40:24 +0000 (08:40 -0700)]
[LLD][ThinLTO] Handle GUID collision in import global processing
Summary:
If there are a GUID collision between two globals checking the
summarylist from the import index to make assumption can be dangerous.
Do not assume that a GlobalValue that has a GlobalVarSummary
actually is a GlobalVariable as it can be another GlobalValue with
the same GUID that the summary is connected to.
Patch by Joel Klinghed (the_jk@opera.com)
Reviewers: evgeny777, tejohnson
Reviewed By: tejohnson
Subscribers: tejohnson, dblaikie, MaskRay, mehdi_amini, inglorion, hiraditya, steven_wu, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67322
Guillaume Chatelet [Tue, 22 Oct 2019 15:16:52 +0000 (17:16 +0200)]
[Alignment][NFC] getMemoryOpCost uses MaybeAlign
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: nemanjai, hiraditya, kbarton, MaskRay, jsji, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69307
Sanjay Patel [Fri, 25 Oct 2019 18:51:31 +0000 (14:51 -0400)]
[CVP] add test for poison propagation bug (PR43802); NFC
Saleem Abdulrasool [Fri, 25 Oct 2019 17:57:52 +0000 (10:57 -0700)]
build: remove `LLVM_CXX_STD` extension point
This extension point is not needed. Provide the equivalent option
through `CMAKE_CXX_STANDARD` which mirrors the previous extension point. Rely on
CMake to provide the check for the compiler instead.
Alexander Shaposhnikov [Fri, 25 Oct 2019 00:35:10 +0000 (17:35 -0700)]
[llvm-objcopy][MachO] Add support for min os version load commands
Add support for min os version load commands.
Test plan: make check-all
Differential revision: https://reviews.llvm.org/D69419
Stanislav Mekhanoshin [Thu, 24 Oct 2019 19:36:24 +0000 (12:36 -0700)]
[AMDGPU] Fold AGPR reg_sequence initializers
Differential Revision: https://reviews.llvm.org/D69413
vpykhtin [Fri, 25 Oct 2019 17:42:52 +0000 (20:42 +0300)]
[AMDGPU] Disallow dpp combining for dpp instructions without Src2 operand (when Src2 is required)
Differential revision: https://reviews.llvm.org/D69430
Vedant Kumar [Thu, 24 Oct 2019 20:15:37 +0000 (13:15 -0700)]
[Driver] Force llvm to install its handlers before lldb's
Install llvm's signal handlers up front to prevent lldb's handlers from being
ignored. This is (hopefully) a stopgap workaround.
When lldb invokes an llvm API that installs signal handlers (e.g.
llvm::sys::RemoveFileOnSignal, possibly via a compiler embedded within lldb),
lldb's signal handlers are overriden if llvm is installing its handlers for the
first time.
To work around llvm's behavior, force it to install its handlers up front, and
*then* install lldb's handlers. In practice this is used to prevent lldb test
processes from exiting due to IO_ERR when SIGPIPE is received.
Note that when llvm installs its handlers, it 1) records the old handlers it
replaces and 2) re-installs the old handlers when its new handler is invoked.
That means that a signal not explicitly handled by lldb can fall back to being
handled by llvm's handler the first time it is received, and then by the
default handler the second time it is received.
Differential Revision: https://reviews.llvm.org/D69403
Vedant Kumar [Fri, 25 Oct 2019 18:16:51 +0000 (11:16 -0700)]
Fix compilation error in ObjectFileMachO::ParseSymtab
Craig Topper [Fri, 25 Oct 2019 00:41:05 +0000 (17:41 -0700)]
[X86] Add a check for SSE2 to the top of combineReductionToHorizontal.
Without this, we can create a PSADBW node that isn't legal.
Sanjay Patel [Fri, 25 Oct 2019 17:34:40 +0000 (13:34 -0400)]
[DAGCombiner] widen zext of popcount based on target support
zext (ctpop X) --> ctpop (zext X)
This is a prerequisite step for canonicalizing in the other direction (narrow the popcount) in IR - PR43688:
https://bugs.llvm.org/show_bug.cgi?id=43688
I'm not sure if any other targets are affected, but I found a missing fold for PPC, so added tests based on that.
The reason we widen all the way to 64-bit in these tests is because the initial DAG looks something like this:
t5: i8 = ctpop t4
t6: i32 = zero_extend t5 <-- created based on IR, but unused node?
t7: i64 = zero_extend t5
Differential Revision: https://reviews.llvm.org/D69127
Austin Kerbow [Wed, 23 Oct 2019 00:39:26 +0000 (17:39 -0700)]
AMDGPU/GlobalISel: Legalize FDIV16
Reviewers: arsenm
Reviewed By: arsenm
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, dstuttard, tpr, t-tye, hiraditya, volkan, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69347
Sterling Augustine [Fri, 25 Oct 2019 18:04:56 +0000 (11:04 -0700)]
Crt files are special cased by name when dealing with ctor and dtor
sections, but the current code misses certain variants. In particular, those
named when clang takes the code path in
clang/lib/Driver/ToolChain.cpp:416, where crtfiles are named:
clang_rt.<component>-<arch>-<env>.<suffix>
Previously, the code only handled:
clang_rt.<component>.<suffix>
<component>.<suffix>
This revision fixes that.
Jon Chesterfield [Fri, 25 Oct 2019 06:20:46 +0000 (07:20 +0100)]
[NFC][libomptarget] move remaining device specific code out of omptarget-nvptx.h
Summary:
[NFC][libomptarget] move remaining device specific code out of omptarget-nvptx.h
Strictly there is one remaining difference wrt amdgcn - parallelLevel is
volatile qualified on amdgcn and not on nvptx. Determining whether this is
correct - and how to represent the different semantics of 'volatile' under
various conditions - is beyond the scope of this code motion patch.
Reviewers: ABataev, jdoerfert, grokos
Subscribers: openmp-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D69424
Pavel Labath [Mon, 21 Oct 2019 17:41:42 +0000 (10:41 -0700)]
ValueObject: Fix a crash related to children address type computation
Summary:
This patch fixes a crash encountered when debugging optimized code. If some
variable has been completely optimized out, but it's value is nonetheless known,
the compiler can replace it with a DWARF expression computing its value. The
evaluating these expressions results in a eValueTypeHostAddress Value object, as
it's contents are computed into an lldb buffer. However, any value that is
obtained by dereferencing pointers in this object should no longer have the
"host" address type.
Lldb had code to account for this, but it was only present in the
ValueObjectVariable class. This wasn't enough when the object being described
was a struct, as then the object holding the actual pointer was a
ValueObjectChild. This caused lldb to dereference the contained pointer in the
context of the host process and crash.
Though I am not an expert on ValueObjects, it seems to me that this children
address type logic should apply to all types of objects (and indeed, applying
applying the same logic to ValueObjectChild fixes the crash). Therefore, I move
this code to the base class, and arrange it to be run everytime the value is
updated.
The test case is a reduced and simplified version of the original debug info
triggering the crash. Originally we were dealing with a local variable, but as
these require a running process to display, I changed it to use a global one
instead.
Reviewers: jingham, clayborg
Subscribers: aprantl, lldb-commits
Differential Revision: https://reviews.llvm.org/D69273
Philip Reames [Fri, 25 Oct 2019 17:32:48 +0000 (10:32 -0700)]
[SCEV] Add a clarifying comment around ExitLimit construction
David Goldman [Fri, 25 Oct 2019 17:15:25 +0000 (13:15 -0400)]
[Sema][Typo Correction] Fix another infinite loop on ambiguity
See also: D67515
- For the given call expression we would end up repeatedly
trying to transform the same expression over and over again
- Fix is to keep the old TransformCache when checking for ambiguity
Differential Revision: https://reviews.llvm.org/D69060
Jonas Devlieghere [Fri, 25 Oct 2019 17:17:09 +0000 (10:17 -0700)]
[TableGen] Add asserts to make sure default values match property type
This adds a few asserts to the property TableGen backend to prevent
mismatches between property types and their default values. This
would've prevented a copy-paste mistake we discovered downstream.
Kevin P. Neal [Tue, 22 Oct 2019 17:07:15 +0000 (13:07 -0400)]
[FPEnv] Teach the IRBuilder about correct use of the strictfp attribute.
The IRBuilder needs to add the strictfp attribute to function
definitions and calls when constrained floating point is enabled.
Since so far all front ends have had to do is flip the constrained
switch, I've made this patch always add the required attributes
when said constrained switch is enabled. This continues to keep
changes to front ends minimal.
Differential Revision: D69312
LLVM GN Syncbot [Fri, 25 Oct 2019 16:49:07 +0000 (16:49 +0000)]
gn build: Merge
8e567b0730f
Louis Dionne [Fri, 25 Oct 2019 16:46:35 +0000 (09:46 -0700)]
[libcxx] [test] Run `chmod +x` on executables when testing via SSH
When running libc++ tests on a remote machine via SSH, we can encounter
a 'Permission denied' error.
Fix this with plain old 'chmod +x <executable>'.
Thanks to Sergej Jaskiewicz for the patch.
Differential Revision: https://reviews.llvm.org/D69170
Sanjay Patel [Fri, 25 Oct 2019 16:42:06 +0000 (12:42 -0400)]
[PowerPC] add test for popcnt with any_extend; NFC
A zext-specific variation of this case is proposed in D69127.
Kadir Cetinkaya [Fri, 25 Oct 2019 16:40:01 +0000 (18:40 +0200)]
[clangd] Revert define-inline action changes to un-break windows build-bots
Amy Huang [Wed, 16 Oct 2019 23:50:18 +0000 (16:50 -0700)]
Add an instruction marker field to the ExtraInfo in MachineInstrs.
Summary:
Add instruction marker to MachineInstr ExtraInfo. This does almost the
same thing as Pre/PostInstrSymbols, except that it doesn't create a label until
printing instructions. This allows for labels to be put around instructions that
are deleted/duplicated somewhere.
Also undo the workaround in r375137.
Reviewers: rnk
Subscribers: MatzeB, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69136
Saleem Abdulrasool [Fri, 25 Oct 2019 15:54:39 +0000 (08:54 -0700)]
build: reindent text (NFC)
Replace some hard tabs with spaces. NFC.
Scott Linder [Fri, 25 Oct 2019 15:36:07 +0000 (11:36 -0400)]
[AMDGPU] Remove update_llc_test_checks for a test
The test split-arg-dbg-value.ll has a host-specific path in the
full output captured by update_llc_test_checks.
Fix for test failures introduced in https://reviews.llvm.org/D69402
Tags: #llvm
Sanjay Patel [Thu, 24 Oct 2019 13:55:07 +0000 (09:55 -0400)]
[SLP] adjust code comment; NFC
(check commit access)
Roman Lebedev [Fri, 25 Oct 2019 15:17:48 +0000 (18:17 +0300)]
[APInt] Add saturating left-shift ops
Summary:
There are `*_ov()` functions already, so at least for consistency it may be good to also have saturating variants.
These may or may not be needed for `ConstantRange`'s `shlWithNoWrap()`
Reviewers: spatel, nikic
Reviewed By: nikic
Subscribers: hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69398
Roman Lebedev [Fri, 25 Oct 2019 15:17:38 +0000 (18:17 +0300)]
[APInt] Add saturating multiply ops
Summary:
There are `*_ov()` functions already, so at least for consistency it may be good to also have saturating variants.
These may or may not be needed for `ConstantRange`'s `mulWithNoWrap()`
Reviewers: spatel, nikic
Reviewed By: nikic
Subscribers: hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69397
Itay Bookstein [Fri, 25 Oct 2019 15:10:41 +0000 (18:10 +0300)]
[CodeGen][SelectionDAG] Fix tiny bug in ExpandIntRes_UADDSUBO
Summary:
Ternary expression checks for ISD::ADD instead of ISD::UADDO inside DAGTypeLegalizer::ExpandIntRes_UADDSUBO.
This means the ternary expression will evaluate to ISD::SUBCARRY for both ISD::UADDO and ISD::USUBO nodes.
Targets are likely to implement both, so impact will be very limited in practice.
Reviewers: bogner, lebedev.ri
Reviewed By: lebedev.ri
Subscribers: lebedev.ri, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D68123
paulhoad [Fri, 25 Oct 2019 13:45:19 +0000 (14:45 +0100)]
[clang-format] [NFC] update the documentation in Format.h to allow dump_format_style.py to get a little closer to being correct.
Summary:
Running dump_format_style.py on the tip of the trunk causes ClangFormatStyleOptions.rst to have changes, which I think ideally it shouldn't.
Some recent commits have meant Format.h and ClangFormatStyleOptions.rst have become out of sync such that dump_format_style.py either couldn't be run or generated incorrect .rst files.
It's also important to remember to edit the IncludeStyles from Tooling.
Make a couple of changes {D6833} {D64695} which came from recent clang-format commits that missed this step. There are still a couple of other changes from commit {D67541} {D68296} which also need to be looked at, but I'd like to park these first two changes first.
The authors of these original commits I've included in the reviewers, I'm happy to work on the changes, just really need to know which is the ground truth of the changes you want to keep (whats in the Format.h) or what is in the ClangFormatStyleOptions.rst
Reviewers: klimek, mitchell-stellar, owenpan, jvoung, Manikishan, sammccall
Reviewed By: mitchell-stellar
Subscribers: cfe-commits
Tags: #clang-format, #clang
Differential Revision: https://reviews.llvm.org/D69404
David Tenty [Thu, 24 Oct 2019 20:18:26 +0000 (16:18 -0400)]
[NFC] Rename LLVM_NO_DEAD_STRIP
Summary:
The variable LLVM_NO_DEAD_STRIP is set in LLVM cmake files when building executables that might make use of plugins .The name of the variable does not convey the actual intended usage (i.e. for use with tools that have plugins), just what the eventual effect of setting in on some (i.e. not garbage collecting unused symbols).
This patch renames it to LLVM_SUPPORT_PLUGINS to convey the intended usage, which will allow subsequent patches to add behavior to support that in different ways without confusion about whether it will do on, for example, non-gnu platforms.
Reviewers: hubert.reinterpretcast, stevewan
Reviewed By: stevewan
Subscribers: cfe-commits, mgorny, llvm-commits
Tags: #llvm, #clang
Differential Revision: https://reviews.llvm.org/D69356
AndreyChurbanov [Fri, 25 Oct 2019 12:59:07 +0000 (15:59 +0300)]
OpenMP Tasks dependencies hash re-sizing fixed.
Details:
- nconflicts field initialized;
- formatting fix (moved declaration out of the long line);
- count conflicts in new hash as opposed to old one.
Differential Revision: https://reviews.llvm.org/D68036
Luís Marques [Fri, 25 Oct 2019 12:52:40 +0000 (13:52 +0100)]
[RISCV] Add support for half-precision floats
Complete fp16 support by ensuring that load extension / truncate store
operations are properly expanded.
Reviewers: asb, lenary
Reviewed By: lenary
Differential Revision: https://reviews.llvm.org/D69246
Kadir Cetinkaya [Fri, 25 Oct 2019 13:01:08 +0000 (15:01 +0200)]
[clangd][NFC] Get rid of raw string literals in macros to make stage1 compiler happy
Petar Avramovic [Fri, 25 Oct 2019 12:45:14 +0000 (14:45 +0200)]
[MIPS GlobalISel] Select MSA vector generic and builtin fsqrt
selectImpl is able to select G_FSQRT when we set bank for vector
operands to fprb. Add detailed tests.
Note: G_FSQRT is generated from llvm-ir intrinsics llvm.sqrt.*,
and at the moment MIPS is not able to generate this intrinsic for
vector type (some targets generate vector llvm.sqrt.* from calls
to a builtin function).
__builtin_msa_fsqrt_<format> will be transformed into G_FSQRT
in legalizeIntrinsic and selected in the same way.
Differential Revision: https://reviews.llvm.org/D69376
Haojian Wu [Fri, 25 Oct 2019 12:22:21 +0000 (14:22 +0200)]
[clang-rename] NFC, make getCanonicalSymbolDeclaration robust on nullptr input.
Kadir Cetinkaya [Fri, 25 Oct 2019 12:15:48 +0000 (14:15 +0200)]
Fix compilation error in clangd/refactor/tweaks/ExpandAutoType.cpp
Summary:
During the compilation of the `clangd/refactor/tweaks/ExpandAutoType.cpp`, MSVC returns the following error:
llvm-monorepo\llvm\tools\clang\tools\extra\clangd\refactor\tweaks\ExpandAutoType.cpp(85): error C2146: syntax error: missing ')' before identifier 'and'
llvm-monorepo\llvm\tools\clang\tools\extra\clangd\refactor\tweaks\ExpandAutoType.cpp(85): error C2065: 'and': undeclared identifier
llvm-monorepo\llvm\tools\clang\tools\extra\clangd\refactor\tweaks\ExpandAutoType.cpp(86): error C2143: syntax error: missing ';' before '<template-id>'
llvm-monorepo\llvm\tools\clang\tools\extra\clangd\refactor\tweaks\ExpandAutoType.cpp(73): fatal error C1075: '{': no matching token found
So, && must be used instead of `and`.
Patch By Pavel Samolysov (@psamolysov) !
Reviewers: kadircet
Reviewed By: kadircet
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang, #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D69427
Simon Tatham [Fri, 25 Oct 2019 09:57:47 +0000 (10:57 +0100)]
[clang] Switch arm-mve-intrinsics tests to use %clang_cc1.
It isn't really necessary for them to run the clang driver, and it's
more efficient not to (and also more stable against driver changes).
Now they invoke cc1 directly, more like the analogous NEON tests.
Reviewers: dmgreen
Subscribers: kristof.beyls, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69426
georgerim [Fri, 25 Oct 2019 10:40:44 +0000 (13:40 +0300)]
[LLD][ELF] - Update test case after yaml2obj change.
SHT_NOTE needs at least an empty "Content" in the YAML description.
Should fix http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast
georgerim [Fri, 25 Oct 2019 10:03:19 +0000 (13:03 +0300)]
[yaml2obj, obj2yaml] - Add support for SHT_NOTE sections.
SHT_NOTE is the section that consists of
namesz, descsz, type, name + padding, desc + padding data.
This patch teaches yaml2obj, obj2yaml to dump and parse them.
This patch implements the section how it is described here:
https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-18048.html
Which says: "For 64–bit objects and 32–bit objects, each entry is an array of 4-byte words in
the format of the target processor"
The official specification is different
http://www.sco.com/developers/gabi/latest/ch5.pheader.html#note_section
And says: "n 64-bit objects (files with e_ident[EI_CLASS] equal to ELFCLASS64), each entry is an array
of 8-byte words in the format of the target processor. In 32-bit objects (files with e_ident[EI_CLASS]
equal to ELFCLASS32), each entry is an array of 4-byte words in the format of the target processor"
Since LLVM uses the first, 32-bit way, this patch follows it.
Differential revision: https://reviews.llvm.org/D68983
Kadir Cetinkaya [Fri, 18 Oct 2019 12:57:11 +0000 (14:57 +0200)]
[clangd] Store Index in Tweak::Selection
Summary:
Incoming define out-of-line tweak requires access to index.
This patch simply propogates the index in ClangdServer to Tweak::Selection while
passing the AST. Also updates TweakTest to accommodate this change.
Reviewers: ilya-biryukov
Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D69165
Kadir Cetinkaya [Wed, 25 Sep 2019 09:35:38 +0000 (11:35 +0200)]
[clangd] Implement GetEligiblePoints
Summary:
This is an helper for incoming move definition out-of-line action to
figure out possible insertion locations for definition of a qualified name.
Reviewers: hokein, ilya-biryukov
Subscribers: MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D68024
LLVM GN Syncbot [Fri, 25 Oct 2019 10:01:34 +0000 (10:01 +0000)]
gn build: Merge
74d39a42f10
Kadir Cetinkaya [Fri, 6 Sep 2019 07:49:40 +0000 (09:49 +0200)]
[clangd] DefineInline action apply logic with fully qualified names
Summary:
Initial version of DefineInline action that will fully qualify every
name inside function body.
Reviewers: sammccall, ilya-biryukov, hokein
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66647
Kadir Cetinkaya [Thu, 5 Sep 2019 12:10:43 +0000 (14:10 +0200)]
[clangd] DefineInline action availability checks
Summary:
Introduces DefineInline action and initial version of
availability checks.
Reviewers: sammccall, ilya-biryukov, hokein
Tags: #clang
Differential Revision: https://reviews.llvm.org/D65433
georgerim [Fri, 25 Oct 2019 09:28:33 +0000 (12:28 +0300)]
[obj2yaml] - Better dumping for relocations without symbols associated.
This just reorders the code and removes an assignment
of an empty string for the case when a relocation has
no symbol associated. With this our output becomes
cleaner and shorter.
Differential revision: https://reviews.llvm.org/D69255
georgerim [Fri, 25 Oct 2019 08:55:11 +0000 (11:55 +0300)]
[llvm/Object] - Fix the error message reported for a broken SHT_SYMTAB_SHNDX section.
SHT_SYMTAB_SHNDX should have the same number of entries as the symbol table
associated (https://www.sco.com/developers/gabi/latest/ch4.sheader.html)
We currently can report the following message:
"SHT_SYMTAB_SHNDX section has sh_size (24) which is not equal to the number of symbols (2)"
It is just broken. This patch refines/fixes it.
Differential revision: https://reviews.llvm.org/D69305
David Stenberg [Fri, 25 Oct 2019 09:21:11 +0000 (11:21 +0200)]
Fix a variable typo in LiveDebugValues [NFC]
Simon Atanasyan [Fri, 25 Oct 2019 09:16:22 +0000 (12:16 +0300)]
[docs] Update Mips feature table in CodeGenerator.rst
Patch by Miloš Stojanović
Differential Revision: https://reviews.llvm.org/D69381
Simon Tatham [Fri, 25 Oct 2019 08:14:14 +0000 (09:14 +0100)]
Fix file-ordering nit in D67161.
Re-sorted the module names in clang/utils/TableGen/CMakeLists.txt back
into alphabetical order.