Rahul Joshi [Fri, 7 Aug 2020 21:02:19 +0000 (14:02 -0700)]
[MLIR][TableGen] Fix ambiguous build methods when inferring result types.
- Fix ODS framework to suppress build methods that infer result types and are
ambiguous with collective variants. This applies to operations with a single variadic
inputs whose result types can be inferred.
- Extended OpBuildGenTest to test these kinds of ops.
Differential Revision: https://reviews.llvm.org/D85060
Jonas Devlieghere [Mon, 10 Aug 2020 17:00:02 +0000 (10:00 -0700)]
[lldb] Skip TestSimulatorPlatform with out-of-tree debugserver
Artur Bialas [Mon, 10 Aug 2020 16:39:27 +0000 (09:39 -0700)]
[mlir][spirv] Add OpGroupBroadcast
OpGroupBroadcast added to SPIRV dialect
Differential Revision: https://reviews.llvm.org/D85435
Adam Czachorowski [Mon, 25 May 2020 12:43:43 +0000 (14:43 +0200)]
[clangd] Fix crash-bug in preamble indexing when using modules.
Summary:
When preamble contains #undef, indexing code finds the matching #define
and uses that during indexing. However, it would only look for local
definitions. If the macro was defined in a module, MacroInfo
would be nullptr and clangd would crash.
This change makes clangd ignore any #undef without a matching #define
inside the same TU.
The indexing of macros happens for preamble only, so then #undef must be
in the preamble, which is why we need two .h files in a test.
Note that clangd is currently not ready for module support, but this
brings us one step closer.
Reviewers: sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D80525
Jonas Devlieghere [Mon, 10 Aug 2020 16:38:14 +0000 (09:38 -0700)]
[lldb] Fix NSArray0 data formatter and add test
Fixes PR47089
Mircea Trofin [Mon, 10 Aug 2020 16:32:21 +0000 (09:32 -0700)]
[NFC][MLInliner] remove curly braces for a few sinle-line loops
Mircea Trofin [Mon, 10 Aug 2020 16:22:17 +0000 (09:22 -0700)]
[NFC][MLInliner] Set up the logger outside the development mode advisor
This allows us to subsequently configure the logger for the case when we
use a model evaluator and want to log additional outputs.
Differential Revision: https://reviews.llvm.org/D85577
Fangrui Song [Sun, 9 Aug 2020 04:23:03 +0000 (21:23 -0700)]
[PGO] Delete dead comdat renaming code related to GlobalAlias. NFC
A GlobalAlias is an address-taken user of its aliased function.
canRenameComdatFunc has excluded such cases.
Reviewed By: davidxl
Differential Revision: https://reviews.llvm.org/D85597
Thomas Raoux [Mon, 10 Aug 2020 15:54:19 +0000 (08:54 -0700)]
[mlir][vector] Relax transfer_read/transfer_write restriction on memref operand
Relax the verifier for transfer_read/transfer_write operation so that it can
take a memref with a different element type than the vector being read/written.
This is based on the discourse discussion:
https://llvm.discourse.group/t/memref-cast/1514
Differential Revision: https://reviews.llvm.org/D85244
LLVM GN Syncbot [Mon, 10 Aug 2020 15:55:00 +0000 (15:55 +0000)]
[gn build] Port
e2d61ae5733
Adam Czachorowski [Fri, 7 Aug 2020 15:08:38 +0000 (17:08 +0200)]
Correctly set CompilingPCH in PrecompilePreambleAction.
This fixes a crash bug in clangd when used with modules. ASTWriter would
end up writing references to submodules into the PCH file, but upon
reading the submodules would not exists and
HeaderFileInfoTrait::ReadData would crash.
Differential Revision: https://reviews.llvm.org/D85532
Eduardo Caldas [Fri, 7 Aug 2020 18:42:35 +0000 (18:42 +0000)]
[SyntaxTree] Expand support for `NestedNameSpecifier`
Summary:
We want NestedNameSpecifier syntax nodes to be generally supported, not
only for `DeclRefExpr` and `DependentScopedDeclRefExpr`.
To achieve this we:
* Use the `RecursiveASTVisitor`'s API to traverse
`NestedNameSpecifierLoc`s and automatically create its syntax nodes
* Add links from the `NestedNameSpecifierLoc`s to their syntax nodes.
In this way, from any semantic construct that has a `NestedNameSpecifier`,
we implicitly generate its syntax node via RAV and we can easily access
this syntax node via the links we added.
Krzysztof Parzyszek [Mon, 10 Aug 2020 15:32:38 +0000 (10:32 -0500)]
[Hexagon] Avoid creating an empty target feature
If the CPU string is empty, the target feature map may end up having
an empty string inserted to it. The symptom of the problem is a warning
message:
'+' is not a recognized feature for this target (ignoring feature)
Also, the target-features attribute in the module will have an empty
string in it.
Fangrui Song [Mon, 10 Aug 2020 15:15:33 +0000 (08:15 -0700)]
[llvm-symbolizer] Add back --version and add a -v alias
The switch from llvm::cl to OptTable (D83530) dropped --version, which
is needed by some users.
This patch also adds a -v alias, which is available in GNU addr2line.
The version dumping is similar to llvm-objcopy --version (exotic):
```
llvm-symbolizer
LLVM (http://llvm.org/):
LLVM version 12.0.0git
Optimized build with assertions.
Default target: x86_64-unknown-linux-gnu
Host CPU: skylake-avx512
```
Reviewed By: dyung, jhenderson
Differential Revision: https://reviews.llvm.org/D85624
Camille Coti [Mon, 10 Aug 2020 15:16:35 +0000 (16:16 +0100)]
[flang] Version information in flang/f18
Fixed some version information in flang/f18:
- fixed the behavior of the -v switch: this flag enables verbosity with used with arguments, but just displays the version when used alone (related to this bug: https://bugs.llvm.org/show_bug.cgi?id=46017)
- added __FLANG, __FLANG_MAJOR__, __FLANG_MINOR__ and __FLANG_PATCHLEVEL__ (similar to their __F18* counterparts) for compatibility purpose
Reviewed By: sscalpone, AlexisPerry, richard.barton.arm, tskeith
Differential Revision: https://reviews.llvm.org/D84334
Sam Clegg [Fri, 7 Aug 2020 23:12:33 +0000 (16:12 -0700)]
[lld][WebAssembly] Handle weakly referenced symbols when lazy (archive) version is see first
When a weak reference of a lazy symbol occurs we were not correctly
updating the lazy symbol. We need to tag the existing lazy symbol
as weak and, in the case of a function symbol, give it a signature.
Without the signature we can't then create the dummy function which
is needed when an weakly undefined function is called.
We had tests for weakly referenced lazy symbols but we were only
tests in the case where the reference was seen before the lazy
symbol.
See: https://github.com/WebAssembly/wasi-libc/pull/214
Differential Revision: https://reviews.llvm.org/D85567
Simon Pilgrim [Mon, 10 Aug 2020 15:01:00 +0000 (16:01 +0100)]
[X86][SSE] shuffle(hop,hop) - canonicalize unary hop(x,x) shuffle masks
If a shuffle is referring to both the lower and upper half lanes of an unary horizontal op, then canonicalize the mask to only refer to the lower half.
Simon Pilgrim [Mon, 10 Aug 2020 14:48:23 +0000 (15:48 +0100)]
[SLP] Regenerate load-merge.ll tests
Noticed this NFC change in D57779
Michael Liao [Tue, 4 Aug 2020 17:56:36 +0000 (13:56 -0400)]
[PGO][CUDA][HIP] Skip generating profile on the device stub and wrong-side functions.
- Skip generating profile data on `__global__` function in the host
compilation. It's a host-side stub function only and don't have
profile instrumentation generated on the real function body. The extra
profile data results in the malformed instrumentation profile data.
- Skip generating region mapping on functions in the wrong-side, i.e.,
+ For the device compilation, skip host-only functions; and,
+ For the host compilation, skip device-only functions (including
`__global__` functions.)
- As the device-side profiling is not ready yet, only host-side profile
code generation is checked.
Differential Revision: https://reviews.llvm.org/D85276
jasonliu [Mon, 10 Aug 2020 13:46:46 +0000 (13:46 +0000)]
[XCOFF] Adjust .rename emission sequence
Summary:
AIX assembler does not generate correct relocation when .rename
appear between tc entry label and .tc directive.
So only emit .rename after .tc/.comm or other linkage is emitted.
Reviewed By: daltenty, hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D85317
Shuhong Liu [Mon, 10 Aug 2020 14:27:04 +0000 (10:27 -0400)]
Author: Shuhong Liu <shuhong.liu@ibm.com>
Date: Mon Aug 10 10:31:50 2020 +0300
[AIX][Clang][Driver] Generate reference to the C++ library on the link step
Have the linker find libc++ on its search path by adding -lc++.
Reviewed by: daltenty, hubert.reinterpretcast, stevewan
Differential Revision: https://reviews.llvm.org/D85315
Xiangling Liao [Wed, 15 Jul 2020 20:12:22 +0000 (16:12 -0400)]
[AIX] Static init frontend recovery and backend support
On the frontend side, this patch recovers AIX static init implementation to
use the linkage type and function names Clang chooses for sinit related function.
On the backend side, this patch sets correct linkage and function names on aliases
created for sinit/sterm functions.
Differential Revision: https://reviews.llvm.org/D84534
Simon Pilgrim [Mon, 10 Aug 2020 14:08:44 +0000 (15:08 +0100)]
[X86][SSE] Pull out shuffle(hop,hop) combine into combineShuffleWithHorizOp helper. NFC.
Stefan Pintilie [Mon, 10 Aug 2020 13:47:09 +0000 (08:47 -0500)]
[PowerPC] Add option to control PCRel GOT indirect linker optimization
Add a hidden option to the compiler to control a the PC Relative GOT indirect
linker optimization.
If this option is set to false the compiler will no loger produce the
relocations required by the linker to perform the optimization.
Reviewed By: nemanjai, NeHuang, #powerpc
Differential Revision: https://reviews.llvm.org/D85377
Sam Parker [Mon, 10 Aug 2020 12:23:37 +0000 (13:23 +0100)]
[ARM] Unrestrict Armv8-a IT when at minsize
IT blocks with more than one instruction were performance deprecated in Armv8
but that doesn't mean we should follow that advise when optimising for size.
Differential Revision: https://reviews.llvm.org/D85638
James Henderson [Mon, 10 Aug 2020 12:36:44 +0000 (13:36 +0100)]
[DebugInfo] Don't error for zero-length arange entries
Although the DWARF specification states that .debug_aranges entries
can't have length zero, these can occur in the wild. There's no
particular reason to enforce this part of the spec, since functionally
they have no impact. The patch removes the error and introduces a new
warning for premature terminator entries which does not stop parsing.
This is a relanding of
cb3a598c87db, adding the missing obj2yaml part
that was needed.
Fixes https://bugs.llvm.org/show_bug.cgi?id=46805. See also
https://reviews.llvm.org/D71932 which originally introduced the error.
Reviewed by: ikudrin, dblaikie, Higuoxing
Differential Revision: https://reviews.llvm.org/D85313
Eduardo Caldas [Fri, 7 Aug 2020 09:28:04 +0000 (09:28 +0000)]
[SyntaxTree] Implement `NestedNameSpecifier` using the `List` base API
Simon Pilgrim [Mon, 10 Aug 2020 13:13:03 +0000 (14:13 +0100)]
[X86][SSE] Add single undef element HADD test cases from PR34724
Simon Pilgrim [Mon, 10 Aug 2020 12:06:36 +0000 (13:06 +0100)]
[X86][SSE] combineTargetShuffle - rearrange shuffle(hop,hop) matching to delay shuffle mask manipulation. NFC.
Check that we're shuffling hadd/pack ops first before altering shuffle masks.
First step towards adding extra functionality, plus it avoids costly shuffle mask manipulation if not necessary.
Łukasz Krawczyk [Mon, 10 Aug 2020 12:58:28 +0000 (13:58 +0100)]
[clang-format] Add space between method modifier and a tuple return type in C#
"public (string name, int age) methodTuple() {}" is now properly spaced
Patch by lukaszkrawczyk@google.com
Reviewed By: jbcoe, krasimir
Differential Revision: https://reviews.llvm.org/D85016
Matt Arsenault [Sun, 9 Aug 2020 19:01:21 +0000 (15:01 -0400)]
AMDGPU/GlobalISel: Don't try to handle undef source operand
This is now illegal MIR
Matt Arsenault [Sun, 9 Aug 2020 18:37:45 +0000 (14:37 -0400)]
PeepholeOptimizer: Use Register
Matt Arsenault [Sun, 9 Aug 2020 21:28:15 +0000 (17:28 -0400)]
GlobalISel: Remove redundant check for empty blocks
Matt Arsenault [Sun, 9 Aug 2020 19:26:30 +0000 (15:26 -0400)]
AMDGPU/GlobalISel: Merge load/store select cases
Matt Arsenault [Sun, 9 Aug 2020 16:10:49 +0000 (12:10 -0400)]
AMDGPU/GlobalISel: Fix typo
Matt Arsenault [Sun, 9 Aug 2020 16:01:47 +0000 (12:01 -0400)]
AMDGPU/GlobalISel: Use nicer form of buildInstr
Sanjay Patel [Mon, 10 Aug 2020 12:27:19 +0000 (08:27 -0400)]
[InstCombine] auto-generate test checks; NFC
Nico Weber [Mon, 10 Aug 2020 12:20:35 +0000 (08:20 -0400)]
Revert "[DebugInfo] Don't error for zero-length arange entries"
This reverts commit
cb3a598c87db2db997401b82dfb3f7f80707194e.
Breaks build of check-llvm dep obj2yaml everywhere.
Aleksandr Platonov [Mon, 10 Aug 2020 12:11:25 +0000 (15:11 +0300)]
[clang-tidy] Fix a crash in bugprone-not-null-terminated-result check when `__STDC_WANT_LIB_EXT1__` is not a literal.
If `__STDC_WANT_LIB_EXT1__` is not a literal (e.g. `#define __STDC_WANT_LIB_EXT1__ ((unsigned)1)`) bugprone-not-null-terminated-result check crashes.
Stack dump:
```
#0 0x0000000002185e6a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/llvm-project/build/bin/clang-tidy+0x2185e6a)
#1 0x0000000002183e8c llvm::sys::RunSignalHandlers() (/llvm-project/build/bin/clang-tidy+0x2183e8c)
#2 0x0000000002183ff3 SignalHandler(int) (/llvm-project/build/bin/clang-tidy+0x2183ff3)
#3 0x00007f08d91b1390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#4 0x00000000021338bb llvm::StringRef::getAsInteger(unsigned int, llvm::APInt&) const (/llvm-project/build/bin/clang-tidy+0x21338bb)
#5 0x000000000052051c clang::tidy::bugprone::NotNullTerminatedResultCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) (/llvm-project/build/bin/clang-tidy+0x52051c)
```
Reviewed By: hokein
Differential Revision: https://reviews.llvm.org/D85525
Sanjay Patel [Mon, 10 Aug 2020 12:05:26 +0000 (08:05 -0400)]
[InstCombine] rearrange code for readability; NFC
The code comment refers to the path where we change the
size of the integer type, so handle that first, otherwise
deal with the general case.
Haojian Wu [Mon, 10 Aug 2020 12:02:22 +0000 (14:02 +0200)]
[clangd] Fix the background index is not disabled when using remote-index.
Differential Revision: https://reviews.llvm.org/D85637
James Henderson [Wed, 5 Aug 2020 14:39:57 +0000 (15:39 +0100)]
[DebugInfo] Don't error for zero-length arange entries
Although the DWARF specification states that .debug_aranges entries
can't have length zero, these can occur in the wild. There's no
particular reason to enforce this part of the spec, since functionally
they have no impact. The patch removes the error and introduces a new
warning for premature terminator entries which does not stop parsing.
Fixes https://bugs.llvm.org/show_bug.cgi?id=46805. See also
https://reviews.llvm.org/D71932 which originally introduced the error.
Reviewed by: ikudrin, dblaikie
Differential Revision: https://reviews.llvm.org/D85313
Florian Hahn [Mon, 10 Aug 2020 09:52:33 +0000 (10:52 +0100)]
[LoopInterchange] Move instructions from preheader to outer loop header.
Instructions defined in the original inner loop preheader may depend on
values defined in the outer loop header, but the inner loop header will
become the entry block in the loop nest. Move the instructions from the
preheader to the outer loop header, so we do not break dominance. We
also have to check for unsafe instructions in the preheader. If there
are no unsafe instructions, all instructions should be movable.
Currently we move all instructions except the terminator and rely on
LICM to hoist out invariant instructions later.
Fixes PR45743
Florian Hahn [Mon, 10 Aug 2020 09:51:36 +0000 (10:51 +0100)]
[LoopInterchange] Form LCSSA phis for values in orig outer loop header.
Values defined in the outer loop header could be used in the inner loop
latch. In that case, we need to create LCSSA phis for them, because after
interchanging they will be defined in the new inner loop and used in the
new outer loop.
Eduardo Caldas [Tue, 4 Aug 2020 17:33:36 +0000 (17:33 +0000)]
[SyntaxTree] Implement the List construct.
We defined a List construct to help with the implementation of list-like
grammar rules. This is a first implementation of this API.
Differential Revision: https://reviews.llvm.org/D85295
Qiu Chaofan [Mon, 10 Aug 2020 10:25:01 +0000 (18:25 +0800)]
[PowerPC] Add intrinsic to read or set FPSCR register
This patch introduces two intrinsics: llvm.ppc.setflm and
llvm.ppc.readflm. They read from or write to FPSCR register
(floating-point status & control) which contains rounding mode and
exception status.
To ensure correctness of program, we need to prevent FP operations from
being moved across these intrinsics (mffs/mtfsf instruction), so here I
set them as scheduling boundaries. We can relax such restriction if
FPSCR is modeled well in the future.
Reviewed By: steven.zhang
Differential Revision: https://reviews.llvm.org/D84914
Simon Pilgrim [Mon, 10 Aug 2020 10:14:01 +0000 (11:14 +0100)]
[ScalarizeMaskedMemIntrin][X86] Refresh missed transform test cases from rGc0c3b9a25fee
Differential Revision: https://reviews.llvm.org/D85416
Simon Pilgrim [Mon, 10 Aug 2020 10:05:43 +0000 (11:05 +0100)]
[ScalarizeMaskedMemIntrin] Scalarize constant mask expandload as shuffle(build_vector,pass_through)
As noticed on D66004, scalarization of an expandload with a constant mask as a chain of irregular loads+inserts makes it tricky to optimize before lowering, resulting in difficulties in merging loads etc.
This patch instead scalarizes the expansion to a build_vector(load0, load1, undef, load2,....) style pattern and then performs a blend shuffle with the pass through vector. This allows us to more easily make use of all the build_vector combines, merging of consecutive loads etc.
Differential Revision: https://reviews.llvm.org/D85416
Raphael Isemann [Mon, 10 Aug 2020 09:29:40 +0000 (11:29 +0200)]
[lldb][NFC] Remove dead code in BreakpointResolverAddress
Igor Kudrin [Mon, 10 Aug 2020 08:56:30 +0000 (15:56 +0700)]
[DebugInfo] Fix initialization of DwarfCompileUnit::LabelBegin.
This also fixes the condition in the assertion in
DwarfCompileUnit::getLabelBegin() because it checked something unrelated
to the returned value.
Differential Revision: https://reviews.llvm.org/D85437
Jing Pu [Mon, 10 Aug 2020 08:32:24 +0000 (10:32 +0200)]
Free the memory allocated by mlirOperationStateAddXXX methods in mlirOperationCreate.
Previously, the memory leaks on heap. Since the MlirOperationState is not intended to be used again after mlirOperationCreate, the patch simplify frees the memory in mlirOperationCreate instead of creating any new API.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D85629
Petar Avramovic [Mon, 10 Aug 2020 08:10:46 +0000 (10:10 +0200)]
AMDGPU/GlobalISel: Lower G_FREM
Add custom lower for G_FREM.
Differential Revision: https://reviews.llvm.org/D84324
Aleksandr Platonov [Mon, 10 Aug 2020 07:23:08 +0000 (10:23 +0300)]
[clang-tidy] Fix a crash in bugprone-not-null-terminated-result check when `__STDC_WANT_LIB_EXT1__` was undefined after definition.
PP->getMacroInfo() returns nullptr for undefined macro, so we need to check this return value before dereference.
Stack dump:
```
#0 0x0000000002185e6a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/llvm-project/build/bin/clang-tidy+0x2185e6a)
#1 0x0000000002183e8c llvm::sys::RunSignalHandlers() (/llvm-project/build/bin/clang-tidy+0x2183e8c)
#2 0x0000000002183ff3 SignalHandler(int) (/llvm-project/build/bin/clang-tidy+0x2183ff3)
#3 0x00007f37df9b1390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#4 0x000000000052054e clang::tidy::bugprone::NotNullTerminatedResultCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) (/llvm-project/build/bin/clang-tidy+0x52054e)
```
Reviewed By: hokein
Differential Revision: https://reviews.llvm.org/D85523
Haojian Wu [Mon, 10 Aug 2020 07:11:08 +0000 (09:11 +0200)]
[Concepts] Dump template arguments for immediately declared constraint.
The template arguments were dumped as part of the TemplateTypeParmDecl, which
was incorrect.
Differential Revision: https://reviews.llvm.org/D85282
Nathan Ridge [Mon, 10 Aug 2020 00:37:18 +0000 (20:37 -0400)]
[clang] Allow DynTypedNode to store a TemplateArgumentLoc
The patch also adds a templateArgumentLoc() AST matcher.
Differential Revision: https://reviews.llvm.org/D85621
Vitaly Buka [Sat, 8 Aug 2020 09:10:10 +0000 (02:10 -0700)]
[NFC][StackSafety] Add a couple of early returns
Richard Smith [Mon, 10 Aug 2020 06:30:30 +0000 (23:30 -0700)]
More cleanup after removing the ability to reference a dependent
VarTemplateSpecializationDecl.
Vitaly Buka [Sat, 8 Aug 2020 21:00:42 +0000 (14:00 -0700)]
[NFC][StackSafety] Count dataflow inputs
Vitaly Buka [Mon, 10 Aug 2020 06:30:27 +0000 (23:30 -0700)]
[NFC][Attributor] Add missing override
Richard Smith [Thu, 16 Jul 2020 02:37:15 +0000 (19:37 -0700)]
Improve modeling of variable template specializations with dependent
arguments.
Don't build a variable template specialization declaration until its
scope and template arguments are non-dependent.
No functionality change intended, but the AST representation is now more
consistent with how we model other templates.
Vitaly Buka [Sat, 8 Aug 2020 09:05:04 +0000 (02:05 -0700)]
[StackSafety] Fix union which produces wrapped sets
Vitaly Buka [Sat, 8 Aug 2020 00:28:05 +0000 (17:28 -0700)]
[NFC][StackSafety] Avoid assert in getBaseObjec
Eric Christopher [Mon, 10 Aug 2020 05:12:10 +0000 (22:12 -0700)]
Add override to fix -Winconsistent-missing-override warning.
Craig Topper [Mon, 10 Aug 2020 03:24:54 +0000 (20:24 -0700)]
[TableGen] Pull the increment of a variable out of an assert.
The variable is only used by the assert so the code was fine
before, but it was flagged in PR47072.
Kazu Hirata [Mon, 10 Aug 2020 02:29:38 +0000 (19:29 -0700)]
[docs] Fix typos
Juneyoung Lee [Mon, 10 Aug 2020 01:57:18 +0000 (10:57 +0900)]
[BuildLibCalls] Add noundef to standard I/O functions
This patch adds noundef to return value and arguments of standard I/O functions.
With this patch, passing undef or poison to the functions becomes undefined
behavior in LLVM IR. Since undef/poison is lowered from operations having UB in C/C++,
passing undef to them was already UB in source.
With this patch, the functions cannot return undef or poison anymore as well.
According to C17 standard, ungetc/ungetwc/fgetpos/ftell can generate unspecified
value; 3.19.3 says unspecified value is a valid value of the relevant type,
and using unspecified value is unspecified behavior, which is not UB, so it
cannot be undef (using undef is UB when e.g. it is used at branch condition).
— The value of the file position indicator after a successful call to the ungetc function for a text stream, or the ungetwc function for any stream, until all pushed-back characters are read or discarded (7.21.7.10, 7.29.3.10).
— The details of the value stored by the fgetpos function (7.21.9.1).
— The details of the value returned by the ftell function for a text stream (7.21.9.4).
In the long run, most of the functions listed in BuildLibCalls should have noundefs; to remove redundant diffs which will anyway disappear in the future, I added noundef to a few more non-I/O functions as well.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D85345
Jacques Pienaar [Mon, 10 Aug 2020 01:02:08 +0000 (18:02 -0700)]
[mlir][drr] Make error easier to understand
Changes error from
error: referencing unbound symbol ''
to
error: raw string not supported as argument
Brad Smith [Mon, 10 Aug 2020 00:52:43 +0000 (20:52 -0400)]
Re-enable OpenBSD PowerPC64 tests.
Shinji Okumura [Mon, 10 Aug 2020 00:18:10 +0000 (09:18 +0900)]
[Attributor][NFC][AAPotentialValues] Change interface of PotentialValuesState
Previously `PotentialValuesState` inherited `BooleanState`.
We have to add `getAssumed` to the state in order to use `clampStateAndIndicateChange` (which will be used in `AAPotentialValuesArgument`).
However `BooleanState::getAssumed` is not a virtual function and we cannot override it.
Therefore, I changed the state not to inherit `BooleanState` and add `getAssumed` to it.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D85610
Brad Smith [Sun, 9 Aug 2020 23:43:16 +0000 (19:43 -0400)]
int64_t and intmax_t are always (signed) long long on OpenBSD.
Vitaly Buka [Sat, 8 Aug 2020 00:25:50 +0000 (17:25 -0700)]
[StackSafety] Don't keep FullSet in index
Optimization. Missing record is enterpreted as FullSet anyway.
Vitaly Buka [Sun, 9 Aug 2020 21:28:17 +0000 (14:28 -0700)]
[StackSafety] Use getSignedMin() to serialize ranges
Almost NFC as it's important only for full sets which should not
be serialized at all.
Vitaly Buka [Sun, 9 Aug 2020 02:09:34 +0000 (19:09 -0700)]
[NFC][StackSafety] Add index test
This directly covers generateParamAccessSummary
Vitaly Buka [Sun, 9 Aug 2020 21:31:06 +0000 (14:31 -0700)]
[NFC][StackSafety] Add shell test requirement
Dávid Bolvanský [Sun, 9 Aug 2020 21:17:48 +0000 (23:17 +0200)]
[AST] Fixed string list in test
Dávid Bolvanský [Sun, 9 Aug 2020 21:09:19 +0000 (23:09 +0200)]
[AST] Fixed string concatenation warnings
Kirill Bobyrev [Sun, 9 Aug 2020 20:07:26 +0000 (22:07 +0200)]
[clangd] Add more error details on the remote index server side
Reviewed By: kadircet
Differential Revision: https://reviews.llvm.org/D85502
Dávid Bolvanský [Sun, 9 Aug 2020 20:04:53 +0000 (22:04 +0200)]
[X86] Added testcases for PR47024 and PR46315
Vitaly Buka [Sun, 9 Aug 2020 19:38:53 +0000 (12:38 -0700)]
[NFC][StackSafety] Avoid some duplications in tests
Gousemoodhin Nadaf [Sun, 9 Aug 2020 19:01:36 +0000 (21:01 +0200)]
[clang] Fix typo in comment
In the handleIntToFloatConversion() function, 6th parameter is ConvertFloat, 7th parameter is ConvertInt.
Reviewed By: njames93, xbolva00
Differential Revision: https://reviews.llvm.org/D85568
Craig Topper [Sun, 9 Aug 2020 07:37:18 +0000 (00:37 -0700)]
[X86][GlobalISel] Enable a test case for sext i32->i64 that was commented out.
Test case seems to work so I guess whatever lead to it being
commented out with a FIXME has been fixed.
Piotr Sobczak [Thu, 30 Jul 2020 11:56:06 +0000 (13:56 +0200)]
Fix 64-bit copy to SCC
Fix 64-bit copy to SCC by restricting the pattern resulting
in such a copy to subtargets supporting 64-bit scalar compare,
and mapping the copy to S_CMP_LG_U64.
Before introducing the S_CSELECT pattern with explicit SCC
(
0045786f146e78afee49eee053dc29ebc842fee1), there was no need
for handling 64-bit copy to SCC ($scc = COPY sreg_64).
The proposed handling to read only the low bits was however
based on a false premise that it is only one bit that matters,
while in fact the copy source might be a vector of booleans and
all bits need to be considered.
The practical problem of mapping the 64-bit copy to SCC is that
the natural instruction to use (S_CMP_LG_U64) is not available
on old hardware. Fix it by restricting the problematic pattern
to subtargets supporting the instruction (hasScalarCompareEq64).
Differential Revision: https://reviews.llvm.org/D85207
Florian Hahn [Sun, 9 Aug 2020 18:47:16 +0000 (19:47 +0100)]
[InstSimplify] Make sure CanUseUndef is initialized in all cases.
This should fix a bunch of buildbot failures.
Florian Hahn [Sun, 9 Aug 2020 18:16:56 +0000 (19:16 +0100)]
[InstSimplify/NewGVN] Add option to control the use of undef.
Making use of undef is not safe if the simplification result is not used
to replace all uses of the result. This leads to problems in NewGVN,
which does not replace all uses in the IR directly. See PR33165 for more
details.
This patch adds an option to SimplifyQuery to disable the use of undef.
Note that I've only guarded uses if isa<UndefValue>/m_Undef where
SimplifyQuery is currently available. If we agree on the general
direction, I'll update the remaining uses.
Reviewed By: nikic
Differential Revision: https://reviews.llvm.org/D84792
Florian Hahn [Sun, 9 Aug 2020 15:48:44 +0000 (16:48 +0100)]
[SCEVExpander] Make sure cast properly dominates Builder's IP.
The selected cast must properly dominate the Builder's IP, so we cannot
re-use the cast, if it matches the builder's IP.
Aditya Kumar [Sun, 9 Aug 2020 15:45:36 +0000 (08:45 -0700)]
[HotColdSplit] Add options for splitting cold functions in separate section
Add support for (if enabled) splitting cold functions into a separate section
in order to further boost locality of hot code.
Authored by: rjf (Ruijie Fang)
Reviewed by: hiraditya,rcorcs,vsk
Differential Revision: https://reviews.llvm.org/D85331
Dávid Bolvanský [Sun, 9 Aug 2020 14:07:36 +0000 (16:07 +0200)]
[Tests] Precommit tests for D85593
Dávid Bolvanský [Sun, 9 Aug 2020 14:00:01 +0000 (16:00 +0200)]
[Diagnostics] Handle string concat pattern and avoid false positives
Sanjay Patel [Sun, 9 Aug 2020 12:59:54 +0000 (08:59 -0400)]
[VectorCombine] try to create vector loads from scalar loads
This patch was adjusted to match the most basic pattern that starts with an insertelement
(so there's no extract created here). Hopefully, that removes any concern about
interfering with other passes. Ie, the transform should almost always be profitable.
We could make an argument that this could be part of canonicalization, but we
conservatively try not to create vector ops from scalar ops in passes like instcombine.
If the transform is not profitable, the backend should be able to re-scalarize the load.
Differential Revision: https://reviews.llvm.org/D81766
Florian Hahn [Sun, 9 Aug 2020 12:16:59 +0000 (13:16 +0100)]
[SCEVExpander] Avoid re-using existing casts if it means updating users.
Currently the SCEVExpander tries to re-use existing casts, even if they
are not exactly at the insertion point it was asked to create the cast.
To do so in some case, it creates a new cast at the insertion point and
updates all users to use the new cast.
This behavior is problematic, because it changes the IR outside of the
instructions created during the expansion. Therefore we cannot
completely undo all changes made during expansion.
This re-use should be only an extra optimization, so only using the new
cast in the expanded instructions should not be a correctness issue.
There are many cases equivalent instructions are created during
expansion.
This patch also adjusts findInsertPointAfter to skip instructions
inserted during expansion. This enables re-using existing casts without
the renaming any uses, by picking a better insertion point.
Reviewed By: efriedma, lebedev.ri
Differential Revision: https://reviews.llvm.org/D84399
Michał Górny [Wed, 5 Aug 2020 08:15:41 +0000 (10:15 +0200)]
[Polly] Reuse LLVM's build rules for gtest/gmock
Reuse LLVM's CMakeLists.txt for gtest/gmock instead of reinventing
them in Polly. This fixes a lot of linking errors due to not linking
LLVMSupport in for me.
Differential Revision: https://reviews.llvm.org/D85280
Dávid Bolvanský [Sun, 9 Aug 2020 10:22:29 +0000 (12:22 +0200)]
[Diagnostics] Turn string concat warning to avoid false positives
David Green [Sun, 9 Aug 2020 10:09:49 +0000 (11:09 +0100)]
[ARM] Add VADDV and VMLAV patterns for v16i16
This adds patterns for v16i16's vecreduce, using all the existing code
to go via an i32 VADDV/VMLAV and truncating the result.
Differential Revision: https://reviews.llvm.org/D85452
David Green [Sun, 9 Aug 2020 09:57:17 +0000 (10:57 +0100)]
[ARM] Allow vecreduce_add in tail predicated loops
This allows vecreduce_add in loops so that we can tailpredicate them.
Differential Revision: https://reviews.llvm.org/D85454
David Green [Sat, 8 Aug 2020 13:43:09 +0000 (14:43 +0100)]
[ARM] Some formatting and predicate VRHADD patterns. NFC
This formats some of the MVE patterns, and adds a missing
Predicates = [HasMVEInt] to some VRHADD patterns I noticed
as going through. Although I don't believe NEON would ever
use the patterns (as it would use ADDL and VSHRN instead)
they should ideally be predicated on having MVE instructions.
Georgii Rymar [Fri, 7 Aug 2020 09:41:20 +0000 (12:41 +0300)]
[llvm-readelf/obj] - Refine the implementation of printMipsReginfo().
It adds the proper warnings reporting and updates the mips-reginfo.test to
remove using of the precompiled binary.
Differential revision: https://reviews.llvm.org/D85511
Georgii Rymar [Fri, 7 Aug 2020 10:38:16 +0000 (13:38 +0300)]
[llvm-readobj] - Remove 3 excessive test cases.
This patch does the following:
1) Removes mips-options.test and the corresponding Inputs/mips-options.elf-mips64el binary:
This is a test that checks that --dynamic-table is able to print the DT_MIPS_OPTIONS tag.
We are testing it in dynamic-tags-machine-specific.test already.
(https://github.com/llvm/llvm-project/blob/master/llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test#L235)
2) Removes mips-rld-map-rel.test and the corresponding Inputs/mips-rld-map-rel.elf-mipsel binary.
This is a test that checks that --dynamic-table is able to print the DT_MIPS_RLD_MAP_REL tag.
We are testing it in dynamic-tags-machine-specific.test already.
(https://github.com/llvm/llvm-project/blob/master/llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test#L257)
3) Removes ppc64-glink.test test and the corresponding Inputs/ppc64.exe binary.
This is a test that checks that --dynamic-table is able to print the DT_PPC64_GLINK tag.
We are testing it in dynamic-tags-machine-specific.test already.
(https://github.com/llvm/llvm-project/blob/master/llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test#L337)
Differential revision: https://reviews.llvm.org/D85515
Craig Topper [Sun, 9 Aug 2020 07:24:53 +0000 (00:24 -0700)]
[X86][GlobalISel] Remove unneeded code for handling zext i8->16, i8->i64, i16->i64, i32->i64.
These all seem to be handled by tablegen pattern imports.
Uday Bondhugula [Sat, 8 Aug 2020 21:48:04 +0000 (03:18 +0530)]
[MLIR][NFC] Fix misleading diagnostic error + clang-tidy fix
Fix misleading diagnostic error in affine.yield verifier + a clang-tidy fix.
Differential Revision: https://reviews.llvm.org/D85587
Craig Topper [Sun, 9 Aug 2020 05:09:21 +0000 (22:09 -0700)]
[DAGCombiner] Teach SimplifySetCC SETUGE X, SINTMIN -> SETLT X, 0 and SETULE X, SINTMAX -> SETGT X, -1.
These aren't the canonical forms we'd get from InstCombine, but
we do have X86 tests for them. Recognizing them is pretty cheap.
While there make use of APInt:isSignedMinValue/isSignedMaxValue
instead of creating a new APInt to compare with. Also use
SelectionDAG::getAllOnesConstant helper to hide the all ones
APInt creation.