Dimitry Andric [Wed, 2 Sep 2020 16:56:12 +0000 (18:56 +0200)]
Eliminate the sizing template parameter N from CoalescingBitVector
Since the parameter is not used anywhere, and the default size of 16
apparently causes PR47359, remove it. This ensures that IntervalMap will
automatically determine the optimal size, using its NodeSizer struct.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D87044
Walter Erquinigo [Thu, 3 Sep 2020 15:57:13 +0000 (08:57 -0700)]
[lldb-vscode] Fix TestVSCode_module
Caused by D86662. The fix is only checking some fields when the expect_debug_info_size flag is true. For some reason this was not failing on a local linux machine.
Dokyung Song [Fri, 31 Jul 2020 00:07:20 +0000 (00:07 +0000)]
[libFuzzer] Add an option to keep initial seed inputs around.
This patch adds an option "keep_seed" to keep all initial seed inputs in the
corpus. Previously, only the initial seed inputs that find new coverage were
added to the corpus, and all the other initial inputs were discarded. We
observed in some circumstances that useful initial seed inputs are discarded as
they find no new coverage, even though they contain useful fragments in them
(e.g., SQLITE3 FuzzBench benchmark). This newly added option provides a way to
keeping seed inputs in the corpus for those circumstances. With this patch, and
with -keep_seed=1, all initial seed inputs are kept in the corpus regardless of
whether they find new coverage or not. Further, these seed inputs are not
replaced with smaller inputs even if -reduce_inputs=1.
Differential Revision: https://reviews.llvm.org/D86577
Jamie Schmeiser [Thu, 3 Sep 2020 15:52:27 +0000 (15:52 +0000)]
Add new hidden option -print-changed which only reports changes to IR
A new hidden option -print-changed is added along with code to support
printing the IR as it passes through the opt pipeline in the new pass
manager. Only those passes that change the IR are reported, with others
only having the banner reported, indicating that they did not change the
IR, were filtered out or ignored. Filtering of output via the
-filter-print-funcs is supported and a new supporting hidden option
-filter-passes is added. The latter takes a comma separated list of pass
names and filters the output to only show those passes in the list that
change the IR. The output can also be modified via the -print-module-scope
function.
The code introduces a template base class that generalizes the comparison
of IRs that takes an IR representation as template parameter. The
constructor takes a series of lambdas that provide an event based API
for generalized reporting of IRs as they are changed in the opt pipeline
through the new pass manager.
The first of several instantiations is provided that prints the IR
in a form similar to that produced by -print-after-all with the above
mentioned filtering capabilities. This version, and the others to
follow will be introduced at the upcoming developer's conference.
See https://hotcrp.llvm.org/usllvm2020/paper/29 for more information.
Reviewed By: yrouban (Yevgeny Rouban)
Differential Revision: https://reviews.llvm.org/D86360
JF Bastien [Thu, 3 Sep 2020 15:44:27 +0000 (08:44 -0700)]
Step down from security group
Propose Ahmed as a replacement. He's fixed many security issues in LLVM for Apple in the last few years, as such he'll fit the "Individual contributors" description.
Differential Revision: https://reviews.llvm.org/D86742
Matt Morehouse [Thu, 3 Sep 2020 14:58:45 +0000 (07:58 -0700)]
[fuzzer] Create user provided fuzzer writeable directories when requested if they dont exist
Currently, libFuzzer will exit with an error message if a non-existent
directory is provided for any of the appropriate arguments. For cases
where libFuzzer is used in a specialized embedded environment, it would
be much easier to have libFuzzer create the directories for the user.
This patch accommodates for this scenario by allowing the user to provide
the argument `-create_missing_dirs=1` which makes libFuzzer attempt to
create the `artifact_prefix`, `exact_artifact_path`,
`features_dir` and/or corpus directory if they don't already exist rather
than throw an error and exit.
Split off from D84808 as requested [here](https://reviews.llvm.org/D84808#2208546).
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D86733
Simon Pilgrim [Thu, 3 Sep 2020 14:58:55 +0000 (15:58 +0100)]
GlobalISel/Utils.h - remove unused includes. NFCI.
Twine is unused, and TargetLowering can be reduced to a forward declaration and moved to Utils.cpp
Yitzhak Mandelbaum [Wed, 2 Sep 2020 14:10:22 +0000 (14:10 +0000)]
[libTooling] Provide overloads of `rewriteDescendants` that operate directly on an AST node.
The new overloads apply directly to a node, like the
`clang::ast_matchers::match` functions, Rather than generating an
`EditGenerator` combinator.
Differential Revision: https://reviews.llvm.org/D87031
Simon Pilgrim [Thu, 3 Sep 2020 14:17:30 +0000 (15:17 +0100)]
X86/X86TargetObjectFile.cpp - remove unused headers. NFCI.
Simon Pilgrim [Thu, 3 Sep 2020 14:11:56 +0000 (15:11 +0100)]
Fix spelling mistake. NFC.
Sanjay Patel [Thu, 3 Sep 2020 14:12:59 +0000 (10:12 -0400)]
[IR][GVN] add/allow commutative intrinsics with >2 args
Follow-up to D86798 and rGe25449f.
Sanjay Patel [Thu, 3 Sep 2020 13:27:16 +0000 (09:27 -0400)]
[GVN] add tests for >2 arg commutable intrinsics; NFC
Victor Huang [Thu, 3 Sep 2020 14:08:24 +0000 (09:08 -0500)]
[LLD][PowerPC][test] Fix out-of-memory issue running ppc64-pcrel-long-branch-error.s
Following 97febb1, fix the out-of-memory error associated with buffering the output
in-memory by writing to an allocated file with the minimum offset and running it
on ppc system-linux only.
Peer reviewed by: nemanjai
Benjamin Kramer [Thu, 3 Sep 2020 11:49:04 +0000 (13:49 +0200)]
[mlir][VectorOps] Fall back to a loop when accessing a vector from a strided memref
The scalar loop is slow but correct.
Differential Revision: https://reviews.llvm.org/D87082
Lei Zhang [Thu, 3 Sep 2020 13:44:37 +0000 (09:44 -0400)]
[mlir] Support default valued attribute in StructsGen
Its handling is similar to optional attributes, except for the
getter method.
Reviewed By: rsuderman
Differential Revision: https://reviews.llvm.org/D87055
Zhibin Li [Thu, 3 Sep 2020 13:29:07 +0000 (09:29 -0400)]
[spirv] Add SPIR-V GLSL extended Round op
Reviewed By: mravishankar, antiagainst
Differential Revision: https://reviews.llvm.org/D86914
Simon Pilgrim [Thu, 3 Sep 2020 13:39:57 +0000 (14:39 +0100)]
LowerEmuTLS.cpp - remove unused TargetLowering.h include. NFC.
We only needed llvm/IR/Constants.h.
Ling, Liyang [Thu, 3 Sep 2020 13:24:43 +0000 (09:24 -0400)]
[mlir] Add Acos, Asin, Atan, Sinh, Cosh, Pow to SPIRVGLSLOps
Reviewed By: mravishankar, antiagainst
Differential Revision: https://reviews.llvm.org/D86929
Simon Pilgrim [Thu, 3 Sep 2020 13:05:43 +0000 (14:05 +0100)]
[X86] Avoid llvm-qualified-auto warning by not using auto. NFC.
Try to consistently use the actual type name in the file.
Simon Pilgrim [Thu, 3 Sep 2020 12:52:40 +0000 (13:52 +0100)]
[X86] Fix llvm-qualified-auto warning by using auto*. NFC.
Simon Pilgrim [Thu, 3 Sep 2020 12:46:51 +0000 (13:46 +0100)]
[X86] Fix llvm-qualified-auto warning by using const auto*. NFC.
Sanjay Patel [Thu, 3 Sep 2020 13:04:49 +0000 (09:04 -0400)]
[EarlyCSE] add tests for fma/fmuladd; NFC
Florian Hahn [Thu, 3 Sep 2020 11:30:36 +0000 (12:30 +0100)]
[PassManager] Move load/store motion pass after DSE in LTO pipeline.
As far as I am aware, the placement of MergedLoadStoreMotion in the
pipeline is not heavily tuned currently. It seems to not matter much if
we do it after DSE in the LTO pipeline (no binary changes for -O3 -flto
on MultiSource/SPEC2000/SPEC2006). Moving it after DSE however has a
major benefit: MemorySSA is constructed by LICM and is consumed by DSE,
so if MergedLoadStoreMotion happens after DSE, we do not need to
preserve MemorySSA in it.
If there are any concerns with this move, I can also update
MergedLoadStoreMotion to preserve MemorySSA.
This patch together with D86651 (preserve MemSSA in MemCpyOpt) and
D86534 (preserve MemSSA in GVN) are the remaining patches to bring down
compile-time for DSE + MemorySSA to the levels outlined in
http://lists.llvm.org/pipermail/llvm-dev/2020-August/144417.html
Once they land, we should be able to start with flipping the switch on
enabling DSE + MmeorySSA.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D86967
David Spickett [Fri, 28 Aug 2020 11:30:56 +0000 (12:30 +0100)]
[lldb] Improve test failure reporting for expect()
This updates the errors reported by expect()
to something like:
```
Ran command:
"help"
Got output:
Debugger commands:
<...>
Expecting start string: "Debugger commands:" (was found)
Expecting end string: "foo" (was not found)
```
(see added tests for more examples)
This shows the user exactly what was run,
what checks passed and which failed. Along with
whether that check was supposed to pass.
(including what regex patterns matched)
These lines are also output to the test
trace file, whether the test passes or not.
Note that expect() will still fail at the first failed
check, in line with previous behaviour.
Also I have flipped the wording of the assert
message functions (.*_MSG) to describe failures
not successes. This makes more sense as they are
only shown on assert failures.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D86792
Simon Pilgrim [Thu, 3 Sep 2020 11:55:14 +0000 (12:55 +0100)]
[X86][SSE] Fold select(X > -1, A, B) -> select(0 > X, B, A) (PR47404)
Help PBLENDVB peek through to the sign bit source of the selection mask by swapping the select condition and inputs.
Ben Shi [Thu, 3 Sep 2020 12:01:23 +0000 (20:01 +0800)]
[NFC][RISCV] Simplify pass arg of RISCVMergeBaseOffsetOpt
Reviewed By: lenary, asb
Differential Revision: https://reviews.llvm.org/D87069
Max Kazantsev [Thu, 3 Sep 2020 11:18:40 +0000 (18:18 +0700)]
[Test] Add test showing some simple cases that IndVarSimplify does not cover
Florian Hahn [Thu, 3 Sep 2020 11:16:17 +0000 (12:16 +0100)]
[GVN] Preserve MemorySSA if it is available.
Preserve MemorySSA if it is available before running GVN.
DSE with MemorySSA will run closely after GVN. If GVN and 2 other
passes preserve MemorySSA, DSE can re-use MemorySSA used by LICM
when doing LTO.
Reviewed By: asbirlea
Differential Revision: https://reviews.llvm.org/D86534
Simon Pilgrim [Thu, 3 Sep 2020 11:05:35 +0000 (12:05 +0100)]
[X86][SSE] Add PR47404 test case
Simon Pilgrim [Thu, 3 Sep 2020 11:01:46 +0000 (12:01 +0100)]
[X86][AVX] Test SSE41 BLENDV combines on AVX targets as well
Show up any differences due to SSE41 variant being locked to use xmm0
David Green [Thu, 3 Sep 2020 11:01:51 +0000 (12:01 +0100)]
[MemCpyOptimizer] Change required analysis order for BasicAA/PhiValuesAnalysis
This is a followup to
1ccfb52a61748, which made a number of changes
including the apparently innocuous reordering of required passes in
MemCpyOptimizer. This however altered the creation order of BasicAA vs
Phi Values analysis, meaning BasicAA did not pick up PhiValues as a
cached result. Instead if we require MemoryDependence first it will
require PhiValuesAnalysis allowing BasicAA to use it for better results.
I don't claim this is an excellent design, but it fixes a nasty little
regressions where a query later in JumpThreading was getting worse
results.
Differential Revision: https://reviews.llvm.org/D87027
Stefan Pintilie [Wed, 2 Sep 2020 20:23:55 +0000 (15:23 -0500)]
[PowerPC] Fix missing TLS symbol type.
Previous implementations for the TLS models General Dynamic and Initial Exec
were missing the ELF::STT_TLS type on symbols that required the type. This patch
adds the type.
Reviewed By: sfertile, MaskRay
Differential Revision: https://reviews.llvm.org/D86777
Georgii Rymar [Wed, 2 Sep 2020 10:16:42 +0000 (13:16 +0300)]
[llvm-readelf] - Move a bit of common code to printDynamicRelocHeader(). NFC.
This helps to isolate printing of the relocation's summary header
in a single place.
Differential revision: https://reviews.llvm.org/D87042
Georgii Rymar [Tue, 1 Sep 2020 12:24:14 +0000 (15:24 +0300)]
[llvm-readobj/elf] - Improve warning messages, reported for .stack_sizes sections.
Instead of referring to stack sizes sections only by name, we can add
section indexes and types to warnings reported.
Differential revision: https://reviews.llvm.org/D86934
OCHyams [Thu, 3 Sep 2020 07:28:15 +0000 (08:28 +0100)]
Revert "Adding GDB PrettyPrinter for mlir::Identifier."
This reverts commit
9e9e6e698d8ef5dc5b7576058f2022aab2534a52.
This commit is causing builds that include the 'debuginfo-tests' project to
fail.
Apple has a public bot which shows the failure:
http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/23667/console
Cullen Rhodes [Thu, 3 Sep 2020 09:19:41 +0000 (09:19 +0000)]
[clang][aarch64] Drop experimental from __ARM_FEATURE_SVE_BITS macro
The __ARM_FEATURE_SVE_BITS feature macro is specified in the Arm C
Language Extensions (ACLE) for SVE [1] (version 00bet5). From the spec,
where __ARM_FEATURE_SVE_BITS==N:
When N is nonzero, indicates that the implementation is generating
code for an N-bit SVE target and that the arm_sve_vector_bits(N)
attribute is available.
This was defined in D83550 as __ARM_FEATURE_SVE_BITS_EXPERIMENTAL and
enabled under the -msve-vector-bits flag to simplify initial tests.
This patch drops _EXPERIMENTAL now there is support for the feature.
[1] https://developer.arm.com/documentation/100987/latest
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D86720
Florian Hahn [Thu, 3 Sep 2020 09:28:42 +0000 (10:28 +0100)]
Revert "[SCCP] Do not replace deref'able ptr with un-deref'able one."
This reverts commit
3542feeb2077f267bff1ab98fb4bf20099f44bb8.
This seems to be causing issues with a sanitizer build
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-msan/builds/21677
Florian Hahn [Thu, 3 Sep 2020 09:17:09 +0000 (10:17 +0100)]
[SCCP] Do not replace deref'able ptr with un-deref'able one.
Currently IPSCCP (and others like CVP/GVN) blindly propagate pointer
equalities. In certain cases, that leads to dereferenceable pointers
being replaced, as in the example test case.
I think this is not allowed, as it introduces an access of an
un-dereferenceable pointer. Note that the pointer is inbounds, but one
past the last element, so it is valid, but not dereferenceable.
This patch is mostly to highlight the issue and start a discussion.
Currently it only checks for specifically looking
one-past-the-last-element pointers with array typed bases.
This causes the mis-compile outlined in
https://stackoverflow.com/questions/
55754313/is-this-gcc-clang-past-one-pointer-comparison-behavior-conforming-or-non-standar
In the test case, if we replace %p with the GEP for the store, we
subsequently determine that the store and the load cannot alias, because
they are to different underlying objects.
Note that Alive2 seems to think that the replacement is valid:
https://alive2.llvm.org/ce/z/2rorhk
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D85332
Georgii Rymar [Wed, 2 Sep 2020 15:06:45 +0000 (18:06 +0300)]
[llvm-readelf/obj] - Cleanup the interface of `DumpStyle`. NFCI.
We have 2 DumpStyles currently:
`class GNUStyle : public DumpStyle<ELFT>` and `class LLVMStyle : public DumpStyle<ELFT>`.
The problem of `DumpStyle` interface is that almost for each method
we provide `const ELFFile<ELFT> *` as argument. But in fact each of
dump styles keeps `ELFDumper<ELFT> *Dumper` which can be used to get an object from.
But since we use the `Obj` too often, I've decided to introduce a one more reference member
instead of reading it from the `Dumper` each time:
`const ELFFile<ELFT> &Obj;` This is kind of similar to `FileName` member which we have already:
it is also used to store a the file name which can be read from `Dumper->getElfObject()->getFileName()`.
I had to adjust the code which previously worked with a pointer to an object
and now works with a reference.
In a follow-up I am going to try to get rid of `const ELFObjectFile<ELFT>` arguments
which are still passed to a set of functions.
Differential revision: https://reviews.llvm.org/D87040
Florian Hahn [Fri, 7 Aug 2020 12:21:53 +0000 (13:21 +0100)]
[SCCP] Add test where dereferenceable ptr is replaced with un-dereferenceable one
Med Ismail Bennani [Thu, 3 Sep 2020 08:05:51 +0000 (10:05 +0200)]
[lldb/Interpreter] Fix language detection for the REPL InitFile
Previously, before loading the REPL language-specific init file, lldb
checked the selected target language in which case it returned an unknown
language type with the REPL target.
Instead, the patch calls `Language::GetLanguagesSupportingREPLs` and
look for the first element of that set. In case lldb was not configured
with a REPL language, then, it will just stop sourcing the REPL init
file and fallback to the original logic (continuing with the default
init file).
rdar://
65836048
Differential Revision: https://reviews.llvm.org/D87076
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Raphael Isemann [Thu, 3 Sep 2020 08:26:33 +0000 (10:26 +0200)]
[lldb] Make symbol list output from `image dump symtab` not depend on internal ordering of DenseMap
`image dump symtab` seems to output the symbols in whatever order they appear in
the DenseMap that is used to filter out symbols with non-unique addresses. As
DenseMap is a hash map this order can change at any time so the output of this
command is pretty unstable. This also causes the `Breakpad/symtab.test` to fail
with enabled reverse iteration (which reverses the DenseMap order to find issues
like this).
This patch makes the DenseMap a std::vector and uses a separate DenseSet to do
the address filtering. The output order is now dependent on the order in which
the symbols are read (which should be deterministic). It might also avoid a bit
of work as all the work for creating the Symbol constructor parameters is only
done when we can actually emplace a new Symbol.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D87036
Martin Storsjö [Thu, 3 Sep 2020 08:19:40 +0000 (11:19 +0300)]
[lldb] Remove a stray semicolon, fixing pedantic GCC warnings. NFC.
Martin Storsjö [Sat, 15 Aug 2020 21:26:24 +0000 (00:26 +0300)]
[AArch64] Add asm directives for the remaining SEH unwind codes
Add support in llvm-readobj for displaying them and support in the
asm parsser, AArch64TargetStreamer and MCWin64EH for emitting them.
The directives for the remaining basic opcodes have names that
match the opcode in the documentation.
The directives for custom stack cases, that are named
MSFT_OP_TRAP_FRAME, MSFT_OP_MACHINE_FRAME, MSFT_OP_CONTEXT
and MSFT_OP_CLEAR_UNWOUND_TO_CALL, are given matching assembler
directive names that fit into the rest of the opcode naming;
.seh_trap_frame, .seh_context, .seh_clear_unwound_to_call
The opcode MSFT_OP_MACHINE_FRAME is mapped to the existing
opecode enum UOP_PushMachFrame that is used on x86_64, and also
uses the corresponding existing x86_64 directive name
.seh_pushframe.
Differential Revision: https://reviews.llvm.org/D86889
Raphael Isemann [Thu, 3 Sep 2020 07:54:37 +0000 (09:54 +0200)]
[lldb] Remove debugserver specific string from TestAbortExitCode check
The test only checks the exit code that the debug server sends back, but
not the following explanation which is different for debugserver and lldb-server.
Raphael Isemann [Thu, 3 Sep 2020 07:36:12 +0000 (09:36 +0200)]
Fix broken HUGE_VALF macro in llvm-c/DataTypes.h
Commit
3a29393b4709d15069130119cf1d136af4a92d77 removes the cmath/math.h
includes from the DataTypes.h header to speed up parsing. However the
DataTypes.h header was using this header to get the macro `HUGE_VAL` for its own
`HUGE_VALF` macro definition. Now the macro instead just expands into a plain
`HUGE_VAL` token which leads to compiler errors unless `math.h` was previously
included by the including source file. It also leads to compiler warnings with
enabled module builds which point out this inconsistency.
The correct way to fix this seems to be to just remove HUGE_VALF from the
header. llvm-c is not referencing that macro from what I can see and users
probably should just include the math headers if they need it (or define it on
their own for really old C versions).
Reviewed By: JDevlieghere
Differential Revision: https://reviews.llvm.org/D83761
Raphael Isemann [Thu, 3 Sep 2020 07:17:03 +0000 (09:17 +0200)]
[debugserver] Fix that debugserver's stop reply packets always return signal code 0
If our process terminates due to an unhandled signal, we are supposed to get the
signal code via WTERMSIG. However, we instead try to get the exit status via
WEXITSTATUS which just ends up always calculating signal code 0 (at least on the
macOS implementation where it just shifts the signal code bits away and we're
left with only 0 bits).
The exit status calculation on the LLDB side also seems a bit off as it claims
an exit status that is just the signal code (instead of for example 128 + signal
code), but that will be another patch.
Reviewed By: jasonmolenda
Differential Revision: https://reviews.llvm.org/D86336
Amara Emerson [Thu, 3 Sep 2020 06:17:48 +0000 (23:17 -0700)]
[StackProtector] Fix crash with vararg due to not checking LocationSize validity.
Differential Revision: https://reviews.llvm.org/D87074
Christian Sigg [Tue, 1 Sep 2020 13:43:38 +0000 (15:43 +0200)]
Adding GDB PrettyPrinter for mlir::Identifier.
This is the first bit from D73546. Primarily setting up the corresponding test. Will add more pretty printers in a separate revision.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D86937
Mehdi Amini [Thu, 3 Sep 2020 05:57:57 +0000 (05:57 +0000)]
Decouple OpPassManager from the the MLIRContext (NFC)
This is allowing to build an OpPassManager from a StringRef instead of an
Identifier, which enables building pipelines without an MLIRContext.
An identifier is still cached on-demand on the OpPassManager for efficiency
during the IR traversal.
Jakub Lichman [Wed, 2 Sep 2020 14:02:40 +0000 (14:02 +0000)]
[mlir][Linalg] Wrong tile size for convolutions fixed
Sizes of tiles (subviews) are bigger by 1 than they should. Let's consider
1D convolution without batches or channels. Furthermore let m iterate over
the output and n over the kernel then input is accessed with m + n. In tiling
subview sizes for convolutions are computed by applying requested tile size
together with kernel size to the above mentioned expression thus let's say
for tile size of 2 the subview size is 2 + size(n), which is bigger by one
than it should since we move kernel only once. The problem behind it is that
range is not turned into closed interval before the composition. This commit
fixes the problem by turning ranges first into closed intervals by substracting
1 and after the composition back to half open by adding 1.
Differential Revision: https://reviews.llvm.org/D86638
Jonas Devlieghere [Mon, 31 Aug 2020 22:13:49 +0000 (15:13 -0700)]
[lldb] Add reproducer verifier
Add a reproducer verifier that catches:
- Missing or invalid home directory
- Missing or invalid working directory
- Missing or invalid module/symbol paths
- Missing files from the VFS
The verifier is enabled by default during replay, but can be skipped by
passing --reproducer-no-verify.
Differential revision: https://reviews.llvm.org/D86497
Jonas Devlieghere [Thu, 3 Sep 2020 04:58:06 +0000 (21:58 -0700)]
[lldb] Pass -fno-objc-exceptions for objcxx targets
When compiling an Objective-C++ file, __has_feature(cxx_exceptions) will
return true with -fno-exceptions but without -fno-objc-exceptions. This
was causing LLVM_ENABLE_EXCEPTIONS to be defined for a subset of files.
Arthur Eubanks [Thu, 3 Sep 2020 04:34:20 +0000 (21:34 -0700)]
Revert "[NewPM][Lint] Port -lint to NewPM"
This reverts commit
883399c8402188520870f99e7d8b3244f000e698.
Arthur Eubanks [Wed, 2 Sep 2020 21:28:27 +0000 (14:28 -0700)]
[NewPM][Lint] Port -lint to NewPM
This also changes -lint from an analysis to a pass. It's similar to
-verify, and that is a normal pass, and lives in llvm/IR.
Reviewed By: ychen
Differential Revision: https://reviews.llvm.org/D87057
Jonas Devlieghere [Thu, 3 Sep 2020 03:48:50 +0000 (20:48 -0700)]
[lldb] Always record both the working and home directory.
Treat the home directory like the current working directory and always
capture both in the VFS.
Craig Topper [Thu, 3 Sep 2020 03:44:12 +0000 (20:44 -0700)]
[CodeGenPrepare][X86] Teach optimizeGatherScatterInst to turn a splat pointer into GEP with scalar base and 0 index
This helps SelectionDAGBuilder recognize the splat can be used as a uniform base.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D86371
Craig Topper [Thu, 3 Sep 2020 02:03:28 +0000 (19:03 -0700)]
[X86] Add a /tune: option for clang-cl
We recently added support for -mtune. This patch adds /tune: so we can specify the tune CPU from clang-cl. MSVC doesn't support this but icc does.
Differential Revision: https://reviews.llvm.org/D86820
Artur Bialas [Thu, 3 Sep 2020 02:52:29 +0000 (19:52 -0700)]
[mlir][spirv] Add block read and write from SPV_INTEL_subgroups
Added support to OpSubgroupBlockReadINTEL and OpSubgroupBlockWriteINTEL
Differential Revision: https://reviews.llvm.org/D86876
Jordan Rupprecht [Thu, 3 Sep 2020 02:42:54 +0000 (19:42 -0700)]
[lldb/Gui] zero-initialize children_stop_id
This is currently causing msan warnings in the API tests when run under msan, e.g. `commands/gui/basic/TestGuiBasic.py`.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D86825
Greg McGary [Thu, 3 Sep 2020 02:32:12 +0000 (19:32 -0700)]
Add code owners of new MachO port
Sunil Srivastava [Thu, 3 Sep 2020 02:12:24 +0000 (19:12 -0700)]
Fix for PR46384. Failure on weak dllimport.
Differential Revision: https://reviews.llvm.org/D86907
Jinsong Ji [Wed, 2 Sep 2020 20:41:15 +0000 (20:41 +0000)]
[compiler-rt] Don't build llvm-lit in RUNTIMES-BUILD
With runtimes-build, we lost map config for llvm-lit, so we can NOT run
lit from source dir anymore.
All the subdir target like: ninja check-llvm-codegen-powerpc will fail
too.
We will get some cfg error like:
File "../lvm-project/llvm/test/lit.cfg.py", line 21, in <module>
config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
AttributeError: 'NoneType' object has no attribute 'use_lit_shell'
This is reset of map config in llvm-lit rebuild.
We already have llvm-lit in runtimes-build, so don't build it.
Reviewed By: phosek
Differential Revision: https://reviews.llvm.org/D87002
Eli Friedman [Tue, 1 Sep 2020 23:20:18 +0000 (16:20 -0700)]
[InstCombine] Fix a couple crashes with extractelement on a scalable vector.
Differential Revision: https://reviews.llvm.org/D86989
Xing GUO [Thu, 3 Sep 2020 00:49:51 +0000 (08:49 +0800)]
[llvm-dwarfdump] Warn user when it encounters no null terminated strings.
When llvm-dwarfdump encounters no null terminated strings, we should
warn user about it rather than ignore it and print nothing.
Before this patch, when llvm-dwarfdump dumps a .debug_str section whose
content is "abc", it prints:
```
.debug_str contents:
```
After this patch:
```
.debug_str contents:
warning: no null terminated string at offset 0x0
```
Reviewed By: jhenderson, MaskRay
Differential Revision: https://reviews.llvm.org/D86998
Fangrui Song [Thu, 3 Sep 2020 00:34:35 +0000 (17:34 -0700)]
[asan_symbolize] Remove --use-symbol-table=true which is the default
Walter Erquinigo [Thu, 3 Sep 2020 00:05:19 +0000 (17:05 -0700)]
Revert
de6caf871be79dc7549aebe4e4fb57d52f6ed202 and
51128b670d4f757132e927c4f3dd78d257d37f70 (https://reviews.llvm.org/D84974)
The tests seem to be timing out in all linux bots. Need further analysis.
Revert "run in terminal"
This reverts commit
de6caf871be79dc7549aebe4e4fb57d52f6ed202.
Mehdi Amini [Wed, 2 Sep 2020 23:57:47 +0000 (23:57 +0000)]
Tweak `mlir-linalg-ods-gen` library dependency: only MLIRIR is needed, not the entire parser (NFC)
Diego Caballero [Wed, 2 Sep 2020 21:56:43 +0000 (00:56 +0300)]
[MLIR][Affine][VectorOps] Vectorize uniform values in SuperVectorizer
This patch adds basic support for vectorization of uniform values to SuperVectorizer.
For now, only invariant values to the target vector loops are considered uniform. This
enables the vectorization of loops that use function arguments and external definitions
to the vector loops. We could extend uniform support in the future if we implement some
kind of divergence analysis algorithm.
Reviewed By: nicolasvasilache, aartbik
Differential Revision: https://reviews.llvm.org/D86756
Louis Dionne [Wed, 2 Sep 2020 22:11:26 +0000 (18:11 -0400)]
[libc++] Avoid including <sys/cdefs.h> on non-Apple platforms in <ctime>
Nemanja Ivanovic [Wed, 2 Sep 2020 22:04:35 +0000 (17:04 -0500)]
[PowerPC] Fix broken kill flag after MI peephole
The test case in https://bugs.llvm.org/show_bug.cgi?id=47373 exposed
two bugs in the PPC back end. The first one was fixed in commit
27714075848e7f05a297317ad28ad2570d8e5a43 but the test case had to
be added without -verify-machineinstrs due to the second bug.
This commit fixes the use-after-kill that is left behind by the
PPC MI peephole optimization.
Walter Erquinigo [Wed, 2 Sep 2020 21:46:20 +0000 (14:46 -0700)]
Fix
de6caf871be79dc7549aebe4e4fb57d52f6ed202
Failure found in
http://lab.llvm.org:8011/builders/lldb-x86_64-debian/builds/16855
The issue is a header not being included
Huihui Zhang [Wed, 2 Sep 2020 22:02:04 +0000 (15:02 -0700)]
[VectorCombine][SVE] Do not fold bitcast shuffle for scalable type.
First, shuffle cost for scalable type is not known for scalable type;
Second, we cannot reason if the narrowed shuffle mask for scalable type
is a splat or not.
E.g., Bitcast splat vector from type <vscale x 4 x i32> to <vscale x 8 x i16>
will involve narrowing shuffle mask <vscale x 4 x i32> zeroinitializer to
<vscale x 8 x i32> with element sequence of <0, 1, 0, 1, ...>, which cannot be
reasoned if it's a valid splat or not.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D86995
Geoffrey Martin-Noble [Wed, 2 Sep 2020 22:00:26 +0000 (15:00 -0700)]
Improve error handling for SmallVector programming errors
This patch changes errors in `SmallVector::grow` that are independent of
memory capacity to be reported using report_fatal_error or
std::length_error instead of report_bad_alloc_error, which falsely signals
an OOM.
It also cleans up a few related things:
- makes report_bad_alloc_error to print the failure reason passed
to it.
- fixes the documentation to indicate that report_bad_alloc_error
calls `abort()` not "an assertion"
- uses a consistent name for the size/capacity argument to `grow`
and `grow_pod`
Reviewed By: mehdi_amini, MaskRay
Differential Revision: https://reviews.llvm.org/D86892
Mehdi Amini [Wed, 2 Sep 2020 20:09:07 +0000 (20:09 +0000)]
Use an Identifier instead of an OperationName internally for OpPassManager identification (NFC)
This allows to defers the check for traits to the execution instead of forcing it on the pipeline creation.
In particular, this is making our pipeline creation tolerant to dialects not being loaded in the context yet.
Reviewed By: rriddle, GMNGeoffrey
Differential Revision: https://reviews.llvm.org/D86915
Diego Caballero [Wed, 2 Sep 2020 21:29:04 +0000 (00:29 +0300)]
[mlir][Affine] Support affine vector loads/stores in LICM
Make use of affine memory op interfaces in AffineLoopInvariantCodeMotion so
that it can also work on affine.vector_load and affine.vector_store ops.
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D86986
Hongtao Yu [Wed, 2 Sep 2020 16:51:30 +0000 (09:51 -0700)]
[ThinLTO] Fix a metadata lost issue with DICompileUnit import.
For ThinLTO importing we don't need to import all the fields of the DICompileUnit, such as enums, macros, retained types lists. The importation of those fields were previously disabled by setting their value map entries to nullptr. Unfortunately a metadata node can be shared by multiple metadata operands. Setting the map entry to nullptr might result in not importing other metadata unexpectedly. The issue is fixed by explicitly setting the original DICompileUnit fields (still a copy of the source module metadata) to null.
Reviewed By: wenlei, dblaikie
Differential Revision: https://reviews.llvm.org/D86675
Walter Erquinigo [Wed, 2 Sep 2020 01:52:14 +0000 (18:52 -0700)]
run in terminal
Kostya Kortchinsky [Fri, 28 Aug 2020 18:44:39 +0000 (11:44 -0700)]
[scudo][standalone] Enable secondary cache release on Fuchsia
I had left this as a TODO, but it turns out it wasn't complicated.
By specifying `MAP_RESIZABLE`, it allows us to keep the VMO which we
can then use for release purposes.
`releasePagesToOS` also had to be called the "proper" way, as Fuchsia
requires the `Offset` field to be correct. This has no impact on
non-Fuchsia platforms.
Differential Revision: https://reviews.llvm.org/D86800
Adrian Prantl [Wed, 2 Sep 2020 20:48:44 +0000 (13:48 -0700)]
Perform an extra consistency check when searching ModuleManager's
cache for implicit modules.
The ModuleManager's use of FileEntry nodes as the keys for its map of
loaded modules is less than ideal. Uniqueness for FileEntry nodes is
maintained by FileManager, which in turn uses inode numbers on hosts
that support that. When coupled with the module cache's proclivity for
turning over and deleting stale PCMs, this means entries for different
module files can wind up reusing the same underlying inode. When this
happens, subsequent accesses to the Modules map will disagree on the
ModuleFile associated with a given file.
In general, it is not sufficient to resolve this conundrum with a type
like FileEntryRef that stores the name of the FileEntry node on first
access because of path canonicalization issues. However, the paths
constructed for implicit module builds are fully under Clang's
control. We *can*, therefore, rely on their structure being consistent
across operating systems and across subsequent accesses to the Modules
map.
To mitigate the effects of inode reuse, perform an extra name check when
implicit modules are returned from the cache. This has the effect of
forcing reused FileEntry nodes to stomp over existing-but-stale entries
in the cache, which simulates a miss - exactly the desired behavior.
rdar://
48443680
Patch by Robert Widmann!
Differential Revision: https://reviews.llvm.org/D86823
Adrian Prantl [Wed, 2 Sep 2020 21:14:26 +0000 (14:14 -0700)]
Revert "[clang] Add missing .def files to Clang's modulemap"
This reverts commit
e0e7eb2e2648aee83caf2ecfe2972ce2f653d306.
[the commit this fixes up was reverted]
Diego Caballero [Wed, 2 Sep 2020 19:26:57 +0000 (22:26 +0300)]
[mlir][Affine] Fix AffineLoopInvariantCodeMotion
Make sure that memory ops that are defined inside the loop are registered
as such in 'defineOp'. In the test provided, the 'mulf' op was hoisted
outside the loop nest even when its 'affine.load' operand was not.
Reviewed By: bondhugula
Differential Revision: https://reviews.llvm.org/D86982
Nemanja Ivanovic [Wed, 2 Sep 2020 20:30:19 +0000 (15:30 -0500)]
[PowerPC] Do not legalize vector FDIV without VSX
Quite a while ago, we legalized these nodes as we added custom
handling for reciprocal estimates in the back end. We have since
moved to target-independent combines but neglected to turn off
legalization. As a result, we can now get selection failures on
non-VSX subtargets as evidenced in the listed PR.
Fixes: https://bugs.llvm.org/show_bug.cgi?id=47373
Jay Foad [Wed, 2 Sep 2020 15:14:58 +0000 (16:14 +0100)]
[APInt] New member function setBitVal
Differential Revision: https://reviews.llvm.org/D87033
Ahsan Saghir [Wed, 2 Sep 2020 19:13:23 +0000 (14:13 -0500)]
[PowerPC] Update MemorySanitizer test to cater for number of CPUs > 1024
MemorySanitizer test fails on systems with more than 1024 CPUs.
This patch updates the test to make it work for machines that
have more than 1024 CPUs. This helps to fix errors on the PowerPC
sanitizer bot.
Reviewed By: #powerpc, nemanjai
Differential Revision: https://reviews.llvm.org/D87053
Yaxun (Sam) Liu [Wed, 2 Sep 2020 18:53:06 +0000 (14:53 -0400)]
Revert "[HIP] Change default --gpu-max-threads-per-block value to 1024"
Temporarily revert commit
04abbb3a78186aa92809866b43217c32cba90b71
due to regressions in some HIP apps due backend issues revealed by
this change.
Will re-commit it when backend issues are fixed.
peter klausler [Wed, 2 Sep 2020 17:37:48 +0000 (10:37 -0700)]
[flang] Implement nonstandard OPEN statement CARRIAGECONTROL specifier
Differential Revision: https://reviews.llvm.org/D87052
Eric Astor [Wed, 2 Sep 2020 20:03:01 +0000 (16:03 -0400)]
Make sure that llvm-ml uses MASM integer lexing when in --as-lex mode
Michael Schellenberger Costa [Wed, 2 Sep 2020 19:42:56 +0000 (21:42 +0200)]
[libcxx] Fix whitespace error
Med Ismail Bennani [Wed, 2 Sep 2020 19:31:09 +0000 (21:31 +0200)]
[lldb/test] Fix TestPlatform*.py Windows failures (NFC)
This patch fixes the windows failures introduced by `addb514`:
http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/18671/steps/test/logs/stdio
This macro, used in the test to check the platform, was missing a `_`,
making the test behave like it was run from a UNIX platform.
Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
Yitzhak Mandelbaum [Wed, 2 Sep 2020 18:47:29 +0000 (18:47 +0000)]
[libTooling] Restore defaults for matchers in makeRule.
This patch restores the default traversal for Transformer's `makeRule` to
`TK_AsIs`. The implicit mode has proven problematic.
Differential Revision: https://reviews.llvm.org/D87048
Fangrui Song [Wed, 2 Sep 2020 19:21:06 +0000 (12:21 -0700)]
[GCDAProfiling] Suppress -Wprio-ctor-dtor for GCC>=9 and remove unused write_string/length_of_string
The `__attribute__((destructor(100)))` diagnostic does not have a
warning option in GCC 8 (before r264853) and thus cannot be suppressed.
Michael Schellenberger Costa [Wed, 2 Sep 2020 19:20:33 +0000 (21:20 +0200)]
Add constexpr to pair
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D80558
Albion Fung [Wed, 2 Sep 2020 19:16:09 +0000 (14:16 -0500)]
[PowerPC] Implemented Vector Multiply Builtins
This patch implements the builtins for Vector Multiply Builtins (vmulxxd family of instructions), and adds the appropriate test cases for these builtins. The builtins utilize the vector multiply instructions itnroduced with ISA 3.1.
Differential Revision: https://reviews.llvm.org/D83955
Mehdi Amini [Wed, 2 Sep 2020 19:10:36 +0000 (19:10 +0000)]
Store an Identifier instead of a StringRef for the OperationName inside an AbstractOperation (NFC)
Instead of storing a StringRef, we keep an Identifier which otherwise requires a lock on the context to retrieve.
This will allow to get an Identifier for any registered Operation for "free".
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D86994
Erik Pilkington [Wed, 2 Sep 2020 17:30:27 +0000 (13:30 -0400)]
Fix a -Wparenthesis warning in
8ff44e644bb7, NFC
Erik Pilkington [Wed, 2 Sep 2020 16:23:17 +0000 (12:23 -0400)]
[AST] Fix handling of long double and bool in __builtin_bit_cast
On x86, long double has 6 unused trailing bytes. This patch changes the
constant evaluator to treat them as though they were padding bytes, so reading
from them results in an indeterminate value, and nothing is written for them.
Also, fix a similar bug with bool, but instead of treating the unused bits as
padding, enforce that they're zero.
Differential revision: https://reviews.llvm.org/D76323
Raphael Isemann [Wed, 2 Sep 2020 16:01:18 +0000 (18:01 +0200)]
[clang] Add missing .def files to Clang's modulemap
These new .def files weren't marked as textual so they ended up being compiled
into the Clang module (which completely defeats the purpose of .def files).
Nico Weber [Wed, 2 Sep 2020 18:28:42 +0000 (14:28 -0400)]
[gn build] Fix COMPILER_RT_HAS_* defines for libclang_rt.profile
The cmake build uses COMPILER_RT_TARGET_HAS_* in the CMakeLists.txt
but then translates it to -DCOMPILER_RT_HAS_* flags which the
c++ code checks for. So we need to define the latter, not the former.
Julian Lettner [Wed, 2 Sep 2020 18:20:47 +0000 (11:20 -0700)]
[TSan][libdispatch] Fix compilation error on Linux
The interceptor for the block variants of the API references the
function versions (via `REAL(name##_f)`). On Linux, this accesses the
underlying "real pointer", defined by the interceptor macro. So we need
to declare interceptors in the right order to avoid undefined symbol
compiler error:
```
error: no member named 'real_dispatch_async_and_wait_f' in namespace '__tsan::__interception'
```
rdar://
68181542