Nico Weber [Tue, 7 Apr 2020 00:38:26 +0000 (20:38 -0400)]
Reland "Make llvm_source_root in llvm-lit relative too."
This reverts commit
3185881d69022e03b300e189838b0599ed417be5
and adds a missing "include(AddLLVM)" (similar lines already
exist elsewhere in compiler-rt).
Saleem Abdulrasool [Tue, 7 Apr 2020 00:33:38 +0000 (17:33 -0700)]
Target: correct the return value for `GetImageAddrFromToken`
We would return `LLDB_INVALID_IMAGE_TOKEN` for the address rather than
the correct value of `LLDB_IMAGE_ADDRESS`. This would result in the
check for the return value to silently pass on x64 as the invalid
address and invalid token are of different sizes (`size_t` vs
`uintprr_t`). This corrects the return value to `LLDB_INVALID_ADDRESS`
and addresses the rest to reset the mapped address to the invalid value.
This was found by inspection when trying to implement module support for
Windows.
Adrian Prantl [Tue, 7 Apr 2020 00:28:53 +0000 (17:28 -0700)]
Add missing include
Eli Friedman [Tue, 7 Apr 2020 00:03:49 +0000 (17:03 -0700)]
Remove SequentialType from the type heirarchy.
Now that we have scalable vectors, there's a distinction that isn't
getting captured in the original SequentialType: some vectors don't have
a known element count, so counting the number of elements doesn't make
sense.
In some cases, there's a better way to express the commonality using
other methods. If we're dealing with GEPs, there's GEP methods; if we're
dealing with a ConstantDataSequential, we can query its element type
directly.
In the relatively few remaining cases, I just decided to write out
the type checks. We're talking about relatively few places, and I think
the abstraction doesn't really carry its weight. (See thread "[RFC]
Refactor class hierarchy of VectorType in the IR" on llvmdev.)
Differential Revision: https://reviews.llvm.org/D75661
Richard Smith [Mon, 6 Apr 2020 23:47:37 +0000 (16:47 -0700)]
For PR45333: Move AnalyzeImplicitConversions to using data recursion
instead of recursing on the stack.
This doesn't actually resolve PR45333, because we now hit stack overflow
somewhere else, but it does get us further. I've not found any way of
testing this that doesn't still crash elsewhere.
Davide Italiano [Mon, 6 Apr 2020 23:35:30 +0000 (16:35 -0700)]
[MachineCSE] Don't carry the wrong location when hoisting
PR: 45425
<rdar://problem/
61359768>
Differential Revision: https://reviews.llvm.org/D77604
Stanislav Mekhanoshin [Mon, 6 Apr 2020 23:20:39 +0000 (16:20 -0700)]
[AMDGPU] Remove clutter from endcf test. NFC.
Daniel Sanders [Mon, 6 Apr 2020 17:57:21 +0000 (10:57 -0700)]
Add way to omit debug-location from MIR output
Summary:
In lieu of a proper pass that strips debug info, add a way
to omit debug-locations from the MIR output so that
instructions with MMO's continue to match CHECK's when
mir-debugify is used
Reviewers: aprantl, bogner, vsk
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77575
Nick Desaulniers [Mon, 6 Apr 2020 23:14:40 +0000 (16:14 -0700)]
[CallSite Removal] a CallBase is never an IndirectCall for isInlineAsm
Summary:
Thanks to Bill Wendling (void) for the report and steps to reproduce. It looks
like this was missed during r350508's cleanup of the CallSite split into
CallBase, CallInst, and CallBrInst.
This was exposed by running pgo on a callbr, which was creating a ptrtoint to
the inline asm thinking it was an indirect call. The relevant callchain looks
like:
IndirectCallPromotionPlugin::run()
-> PGOIndirectCallVisitor::findIndirectCalls()
-> PGOIndirectCallVisitor::visitCallBase()
-> CallBase::isIndirectCall()
Reviewers: void, chandlerc
Reviewed By: void
Subscribers: hiraditya, llvm-commits, craig.topper, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77600
Jonas Devlieghere [Mon, 6 Apr 2020 23:09:09 +0000 (16:09 -0700)]
[lldb/API] Add missing LLDB_REGISTER_METHOD macros
Add LLDB_REGISTER_METHOD macros for GetRetriesWithFixIts and
SetRetriesWithFixIts.
Jacques Pienaar [Mon, 6 Apr 2020 22:55:25 +0000 (15:55 -0700)]
Remove case in rewritergen unmatched opdefgen side
The rewriter generates a call to build that is not handled by opdef generator
and so will fail to compile. Also if this is a root node being replaced
(depth 0) then using the more generic build method in the rewrite suffices.
Vedant Kumar [Tue, 31 Mar 2020 22:27:06 +0000 (15:27 -0700)]
[AddressSanitizer] Fix for wrong argument values appearing in backtraces
Summary:
In some cases, ASan may insert instrumentation before function arguments
have been stored into their allocas. This causes two issues:
1) The argument value must be spilled until it can be stored into the
reserved alloca, wasting a stack slot.
2) Until the store occurs in a later basic block, the debug location
will point to the wrong frame offset, and backtraces will show an
uninitialized value.
The proposed solution is to move instructions which initialize allocas
for arguments up into the entry block, before the position where ASan
starts inserting its instrumentation.
For the motivating test case, before the patch we see:
```
| 0033: movq %rdi, 0x68(%rbx) | | DW_TAG_formal_parameter |
| ... | | DW_AT_name ("a") |
| 00d1: movq 0x68(%rbx), %rsi | | DW_AT_location (RBX+0x90) |
| 00d5: movq %rsi, 0x90(%rbx) | | ^ not correct ... |
```
and after the patch we see:
```
| 002f: movq %rdi, 0x70(%rbx) | | DW_TAG_formal_parameter |
| | | DW_AT_name ("a") |
| | | DW_AT_location (RBX+0x70) |
```
rdar://
61122691
Reviewers: aprantl, eugenis
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77182
Nico Weber [Mon, 6 Apr 2020 22:58:16 +0000 (18:58 -0400)]
fix comment typo to cycle bots
Adrian Prantl [Fri, 20 Mar 2020 01:51:36 +0000 (18:51 -0700)]
Remap the target (Xcode) SDK directory to the host SDK directory.
This is mostly useful for Swift support; it allows LLDB to substitute
a matching SDK it shipped with instead of the sysroot path that was
used at compile time.
The goal of this is to make the Xcode SDK something that behaves more
like the compiler's resource directory, as in that it ships with LLDB
rather than with the debugged program. This important primarily for
importing Swift and Clang modules in the expression evaluator, and
getting at the APINotes from the SDK in Swift.
For a cross-debugging scenario, this means you have to have an SDK for
your target installed alongside LLDB. In Xcode this will always be the
case.
rdar://problem/
60640017
Differential Revision: https://reviews.llvm.org/D76471
Louis Dionne [Mon, 6 Apr 2020 22:30:19 +0000 (18:30 -0400)]
[libc++] 2/N: Enable the new libc++ testing format by default
Both test formats are equivalent, so this *should* not be a problem.
We've fixed a couple of failures uncovered by the first time we tried
making the switch, so this new attempt should go even farther.
If failures are noticed, it should be fine to revert this commit, but
please give a heads up afterwards so we know to address the issues!
Also note that it is still possible to use the old format by passing
`--param=use_old_format=True` when running Lit for the time being.
Sid Manning [Mon, 6 Apr 2020 17:40:19 +0000 (12:40 -0500)]
Support bfdname "elf32-hexagon".
Add support and update testcases.
Differential Revision: https://reviews.llvm.org/D77579
Daniel Sanders [Fri, 3 Apr 2020 22:55:15 +0000 (15:55 -0700)]
Allow MachineFunction to obtain non-const Function (to enable MIR-level debugify)
Summary:
To debugify MIR, we need to be able to create metadata and to do that, we
need a non-const Module. However, MachineFunction only had a const reference
to the Function preventing this.
Reviewers: aprantl, bogner
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77439
Louis Dionne [Mon, 6 Apr 2020 22:09:34 +0000 (18:09 -0400)]
[libc++] Only support std::to_chars availability test when back-deploying
Louis Dionne [Mon, 24 Feb 2020 15:09:29 +0000 (10:09 -0500)]
[libc++] Add availability markup for the C++20 Synchronization Library on Apple
Daniel Sanders [Fri, 3 Apr 2020 22:50:11 +0000 (15:50 -0700)]
Add option to limit Debugify to locations (omitting variables)
Summary:
It can be helpful to test behaviour w.r.t locations without having DEBUG_VALUE
around. In particular, because DEBUG_VALUE has the potential to change CodeGen
behaviour (e.g. hasOneUse() vs hasOneNonDbgUse()) while locations generally
don't.
Reviewers: aprantl, bogner
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77438
Davide Italiano [Mon, 6 Apr 2020 21:59:01 +0000 (14:59 -0700)]
[gdb-remote] Moving prevents copy elision. Found by clang.
Hubert Tong [Mon, 6 Apr 2020 21:29:10 +0000 (17:29 -0400)]
Revert "Make llvm_source_root in llvm-lit relative too."
This reverts commit
6c1a9fb174ac3cf66bfdbab5a327957a0a35ad85.
Commit causes failures:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/49206
Jonas Devlieghere [Mon, 6 Apr 2020 21:28:27 +0000 (14:28 -0700)]
[lldb/Test] Enable TestGdbRemoteThreadsInfoMemory.py on Windows.
This test is currently XFAILed but is passing on the Windows bot.
David Blaikie [Mon, 6 Apr 2020 21:24:31 +0000 (14:24 -0700)]
X86ISelLowering: Minor refactor to avoid redundant initialization while ensuring compiler warnings can hopefully still prove initialization
Based on post-commit review/discussion in
fabe52a7412b
Kanglei Fang [Mon, 6 Apr 2020 19:45:38 +0000 (12:45 -0700)]
[clang-format] Don't break multi block parameters on ObjCBreakBeforeNestedBlockParam
Summary:
While [the original diff](https://reviews.llvm.org/D42493) makes a lot of sense, and multiple inline block parameter/trailing paramemter after inline block paramemter should be discouraged, the formatting result is different than what xcode does by default
For the exact same example provided in the original diff:
```
[object
blockArgument:^{
a = 42;
}
anotherArg:42];
```
The code is hard to read and not very visually pleasing
This diff uses `ObjCBreakBeforeNestedBlockParam` to shield from the formatting
When it's set to false, don't allign the inline block paramemters.
Reviewers: jolesiak, benhamilton, jinlin
Reviewed By: jolesiak
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77039
Jason Molenda [Fri, 3 Apr 2020 05:10:00 +0000 (22:10 -0700)]
Add more detailed symbol type categorization, based on a swift patch by
Greg Clayton a few years ago.
My patch to augment the symbol table in Mach-O files with the
dyld trie exports data structure only categorized symbols as code
or data, but Greg Clayton had a patch to do something similar to
swift a few years ago that had a more extensive categorization of
symbols, as well as extracting some objc class/ivar names from the
entries. This patch is basically just Greg's, updated a bit and
with a test case added to it.
<rdar://problem/
50791451>
Differential Revision: https://reviews.llvm.org/D77369
Konstantin Pyzhov [Mon, 6 Apr 2020 13:05:58 +0000 (09:05 -0400)]
[AMDGPU] Disable 'Skip Uniform Regions' optimization by default for AMDGPU.
Reviewers: sameerds, dstuttard
Differential Revision: https://reviews.llvm.org/D77228
Hubert Tong [Mon, 6 Apr 2020 20:56:13 +0000 (16:56 -0400)]
[llvm-objdump][NFC] Declare command-line externs in headers with namespace
Summary:
This patch moves the forward declarations of command-line `cl::*`
externs in `MachODump.cpp` and `llvm-objdump.cpp` into the headers
corresponding to the file that defines the variable. At the same time,
these externs are moved into the `llvm::objdump` namespace. The externs
that are not referenced outside their defining translation unit are made
static.
This does not factor out uses of the Mach-O options from
`llvm-objdump.cpp`.
Reviewers: jhenderson, MaskRay, DiggerLin, jasonliu, daltenty
Reviewed By: jhenderson, MaskRay
Subscribers: rupprecht, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77388
Nico Weber [Mon, 6 Apr 2020 20:50:02 +0000 (16:50 -0400)]
[gn build] (manually) port
6c1a9fb174ac3c
Leonard Chan [Fri, 3 Apr 2020 20:29:14 +0000 (13:29 -0700)]
[AsmPrinter] Do not define local aliases for global objects in a comdat
A global symbol that is defined in a comdat should not generate an alias since
call sites that would've referred to that symbol will refer to their own
independent local aliases rather than the surviving global comdat one. This
could result in something that looks like:
```
ld.lld: error: relocation refers to a discarded section: .text._ZN3fbl8internal18NullFunctionTargetIvJjjPjEED1Ev.stub
>>> defined in user-x64-clang/obj/system/ulib/minfs/libminfs.a(minfs._sources.file.cc.o)
>>> section group signature: _ZN3fbl8internal18NullFunctionTargetIvJjjPjEED1Ev.stub
>>> prevailing definition is in user-x64-clang/obj/system/ulib/minfs/libminfs.a(minfs._sources.vnode.cc.o)
>>> referenced by function.h:169 (../../zircon/system/ulib/fbl/include/fbl/function.h:169)
>>> minfs._sources.file.cc.o:(minfs::File::AllocateAndCommitData(std::__2::unique_ptr<minfs::Transaction, std::__2::default_delete<minfs::Transaction> >)) in archive user-x64-clang/obj/system/ulib/minfs/libminfs.a
```
We ran into this when experimenting with a new C++ ABI for fuchsia
(refer to D72959) which takes relative offsets between comdat'd functions
which is why the normal C++ user wouldn't run into this.
Differential Revision: https://reviews.llvm.org/D77429
Nico Weber [Mon, 6 Apr 2020 20:46:24 +0000 (16:46 -0400)]
Make llvm_source_root in llvm-lit relative too.
No intended behavior change.
Nick Desaulniers [Mon, 6 Apr 2020 20:34:06 +0000 (13:34 -0700)]
[SelectionDAG] fix predecessor list for INLINEASM_BRs' parent
Summary:
A bug report mentioned that LLVM was producing jumps off the end of a
function when using "asm goto with outputs". Further digging pointed to
MachineBasicBlocks that had their address taken and were indirect
targets of INLINEASM_BR being removed by BranchFolder, because their
predecessor list was empty, so they appeared to have no entry.
This was a cascading failure caused earlier, during Pre-RA instruction
scheduling. We have a few special cases in Pre-RA instruction scheduling
where we split a MachineBasicBlock in two. This requires careful
handing of predecessor and successor lists for a MachineBasicBlock that
was split, and careful handing of PHI MachineInstrs that referred to the
MachineBasicBlock before it was split.
The clue that led to this fix was the observation that many callers of
MachineBasicBlock::splice() frequently call
MachineBasicBlock::transferSuccessorsAndUpdatePHIs() to update their PHI
nodes after a splice. We don't want to reuse that method, as we have
custom successor transferring logic for this block split.
This patch fixes 2 pre-existing bugs, and adds tests.
The first bug was that MachineBasicBlock::splice() correctly handles
updating most successors and predecessors; we don't need to do anything
more than removing the previous fallthrough block from the first half of
the split block post splice. Previously, we were updating the successor
list incorrectly (updating successors updates predecessors).
The second bug was that PHI nodes that needed registers from the first
half of the split block were not having entries populated. The register
live out information was correct, and the FuncInfo->PHINodesToUpdate was
correct. Specifically, the check in SelectionDAGISel::FinishBasicBlock:
for (unsigned i = 0, e = FuncInfo->PHINodesToUpdate.size(); i != e; ++i) {
MachineInstrBuilder PHI(*MF, FuncInfo->PHINodesToUpdate[i].first);
if (!FuncInfo->MBB->isSuccessor(PHI->getParent()))
continue;
PHI.addReg(FuncInfo->PHINodesToUpdate[i].second).addMBB(FuncInfo->MBB);
was `continue`ing because FuncInfo->MBB tracks the second half of
the post-split block; no one was updating PHI entries for the first half
of the post-split block.
SelectionDAGBuilder::UpdateSplitBlock() already expects to perform
special handling for MachineBasicBlocks that were split post calls to
ScheduleDAGSDNodes::EmitSchedule(), so I'm confident that it's both
correct for ScheduleDAGSDNodes::EmitSchedule() to return the second half
of the split block `CopyBB` which updates `FuncInfo->MBB` (ie. the
current MachineBasicBlock being processed), and perform special handling
for this in SelectionDAGBuilder::UpdateSplitBlock().
Reviewers: void, craig.topper, efriedma
Reviewed By: void, efriedma
Subscribers: hfinkel, fhahn, MatzeB, efriedma, hiraditya, llvm-commits, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D76961
Dan Albert [Mon, 6 Apr 2020 20:34:27 +0000 (13:34 -0700)]
Upstream Bionic definitions of ctype_base/regex.
Summary:
This is a patch that Android has been carrying in its tree for several
years. This patch upstreams the existing ABI.
There's some historical cruft here. __regex_word used to be a part of
regex_traits rather than ctype_base. Bionic also used to use its own
ctype implementation because the libc++ builtin one wasn't available
yet. Bionic's ctype masks were 8 bits wide and already saturated, so a
wider type needed to be used for the regex mask, and the existing
value was already used so Android needed to specify its own.
Since then Android has migrated to the builtin ctype implementation
and this patch probably should have been dropped then. Unfortunately
that was not noticed at the time, so now we need to keep this to
maintain the current ABI.
Reviewers: EricWF, #libc, ldionne
Reviewed By: #libc, ldionne
Subscribers: dexonsmith, ldionne, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D76171
Davide Italiano [Thu, 2 Apr 2020 20:22:52 +0000 (13:22 -0700)]
[debugserver] Get rid of `else` after `return`. NFC.
Sergej Jaskiewicz [Mon, 6 Apr 2020 20:26:37 +0000 (23:26 +0300)]
[libunwind] Support the new libc++ test format
Reviewers: ldionne, #libunwind, mstorsjo
Reviewed By: ldionne, #libunwind, mstorsjo
Subscribers: mstorsjo, dexonsmith, llvm-commits, libcxx-commits
Tags: #llvm, #libunwind
Differential Revision: https://reviews.llvm.org/D77501
Chris Lattner [Mon, 6 Apr 2020 20:18:49 +0000 (13:18 -0700)]
Minor typo improvements in documentation, NFC.
Matt Arsenault [Thu, 6 Feb 2020 17:02:51 +0000 (12:02 -0500)]
AMDGPU: Remove dead paths for requiresUniformRegister
The extracts from control flow intrinsics are already properly handled
by divergence analysis. The inline asm case isn't dead, but has also
never really worked correctly so leave it as-is for now.
Erik Pilkington [Mon, 6 Apr 2020 14:17:30 +0000 (10:17 -0400)]
[CodeGenObjC] Fix a crash when attempting to copy a zero-sized bit-field in a non-trivial C struct
Zero sized bit-fields aren't included in the CGRecordLayout, so we shouldn't be
calling EmitLValueForField for them. rdar://
60695105
Differential revision: https://reviews.llvm.org/D76782
Kadir Cetinkaya [Mon, 6 Apr 2020 19:36:43 +0000 (21:36 +0200)]
[clangd] Fix bad include
Nico Weber [Mon, 6 Apr 2020 19:25:19 +0000 (15:25 -0400)]
Delete a variable that's been unused since r313407.
No intended behavior change.
LLVM GN Syncbot [Mon, 6 Apr 2020 19:22:43 +0000 (19:22 +0000)]
[gn build] Port
427c1dc4f42
Kadir Cetinkaya [Sun, 15 Mar 2020 20:43:00 +0000 (21:43 +0100)]
[clangd] Build ASTs only with fresh preambles or after building a new preamble
Summary:
This is another step for out-of-order preamble builds. To keep the
diagnostic behavior same, we only build ASTs either with "usable" preambles,
the ones that are fully applicable to a given ParseInput, or after building a
new preamble. Which is the same behaviour as what we do today. ASTs
built in the latter is called golden ASTs.
Reviewers: sammccall
Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76725
Kadir Cetinkaya [Tue, 17 Mar 2020 18:08:23 +0000 (19:08 +0100)]
[clangd] Update TUStatus api to accommodate preamble thread
Summary:
TUStatus api had a single thread in mind. This introudces a section
action to represent state of the preamble thread. In the file status extension,
we keep old behavior almost the same. We only prepend current task with a
`parsing includes` if preamble thread is working. We omit the idle thread in the
output unless both threads are idle.
Reviewers: sammccall
Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76304
Kadir Cetinkaya [Fri, 13 Mar 2020 10:52:19 +0000 (11:52 +0100)]
[clangd] Decouple preambleworker from astworker, NFCI
Summary:
First step to enable deferred preamble builds. Not intending to land it
alone, will have follow-ups that will implement full deferred build
functionality and will land after all of them are ready.
Reviewers: sammccall
Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D76125
Nathan James [Mon, 6 Apr 2020 19:19:12 +0000 (20:19 +0100)]
Fix mismatch from D77112 and D77499
Nathan James [Sun, 5 Apr 2020 14:33:34 +0000 (15:33 +0100)]
[ASTMatchers] Matchers that take enumerations args provide hints with invalid arguments
Summary:
This adds support for giving hints when using dynamic matchers with enum args. Take this query, I couldn't figure out why the matcher wasn't working:
(Turns out it needed to be "IntegralToBoolean", but thats another bug itself)
```
clang-query> match implicitCastExpr(hasCastKind("CK_IntegralToBoolean"))
1:1: Error parsing argument 1 for matcher implicitCastExpr.
1:18: Error building matcher hasCastKind.
1:30: Incorrect type for arg 1. (Expected = string) != (Actual = String)
```
With this patch the new behaviour looks like this:
```
clang-query> match implicitCastExpr(hasCastKind("CK_IntegralToBoolean"))
1:1: Error parsing argument 1 for matcher implicitCastExpr.
1:18: Error building matcher hasCastKind.
1:30: Unknown value 'CK_IntegralToBoolean' for arg 1; did you mean 'IntegralToBoolean'
```
There are no test cases for this yet as there simply isn't any infrastructure for testing errors reported when parsing args that I can see.
Reviewers: klimek, jdoerfert, aaron.ballman
Reviewed By: aaron.ballman
Subscribers: aaron.ballman, dexonsmith, mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77499
Francesco Petrogalli [Mon, 6 Apr 2020 18:25:17 +0000 (19:25 +0100)]
[llvm][CodeGen] Avoid implicit cast of TypeSize to integer in `initActions`.
Reviewers: sdesmalen, efriedma
Reviewed By: efriedma
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77317
Heejin Ahn [Sat, 4 Apr 2020 13:56:35 +0000 (06:56 -0700)]
[WebAssembly] Handle event exports
Summary: This handles exports of events, which was missing.
Reviewers: sbc100
Subscribers: dschuff, jgravelle-google, sunfish, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77566
Reid Kleckner [Mon, 6 Apr 2020 18:14:59 +0000 (11:14 -0700)]
Remove math.h/cmath include from DataTypes.h
DataTypes.h is meant to wrap the integer type and limits headers, which
have some unfortunate variance. The FP math functions declared by math.h
are not unnecessary. math.h took a noticeable amount of time to parse
(~40ms), but that could be startup costs.
Anyway, we don't need to include it, so skipping it can't hurt.
This has been present since the initial CMake build was added in 2008.
Masoud Ataei jaliseh [Mon, 6 Apr 2020 18:16:48 +0000 (13:16 -0500)]
Add InjectTLIMappings pass to new pass manager
This pass is created in
d6de5f12d485a85504bc99d384a85634574a27e2 and tested
for new and legacy pass manager but never added to new pass manager pipeline.
I am adding it to new pass manager pipeline.
This pass is get used in Vector Function Database (VFDatabase) and without
this pass in new pass manager pipeline, none of the vector libraries are work
ing with new pass manager.
Related passes:
66c120f02560ef528a60924104ead66f330190f1
https://reviews.llvm.org/D74944
Differential revision: https://reviews.llvm.org/D75354
River Riddle [Mon, 6 Apr 2020 18:04:22 +0000 (11:04 -0700)]
[mlir][AsmPrinter] Change value numbering for local scope to be the next isolated operation.
Summary: This revision updates the value numbering when printing to number from the next parent operation that is isolated from above. This is the highest level to number from that still ensures thread-safety. This revision also changes the behavior of Operator::operator<< to use local scope to avoid thread races when numbering operations.
Differential Revision: https://reviews.llvm.org/D77525
Kadir Cetinkaya [Mon, 6 Apr 2020 17:13:08 +0000 (19:13 +0200)]
[clang][CodeComplete] Dont perform fallback completion for incomplete member ref
Summary:
Clang performs expression based completion whenever it can't figure out
base of a member reference expression. It might be quite confusing in cases like
incomplete types. This patch disables that fallback.
Unfortunately `ParsePostfixExpressionSuffix` is quite tangled and this patch
adds more to it.
Reviewers: sammccall
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77570
Johannes Doerfert [Mon, 6 Apr 2020 17:39:40 +0000 (12:39 -0500)]
[OpenMP] Fix layering problem with FrontendOpenMP
Summary:
ASTMatchers is used in various places and it now exposes the
LLVMFrontendOpenMP library to its users without them needing to depend
on it explicitly.
Reviewers: lebedev.ri
Subscribers: mgorny, yaxunl, bollu, guansong, martong, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77574
Craig Topper [Mon, 6 Apr 2020 17:22:50 +0000 (10:22 -0700)]
[SelectionDAGBuilder] Fix ISD::FREEZE creation for structs with fields of different types.
The previous code used the type of the first field for the VT
passed to getNode for every field.
I've based the implementation here off what is done in visitSelect
as it removes the need to special case aggregates.
Differential Revision: https://reviews.llvm.org/D77093
Yaxun (Sam) Liu [Mon, 6 Apr 2020 17:52:47 +0000 (13:52 -0400)]
[NFC] Minor fix for deferred diagnostics emitter
Differential Revision: https://reviews.llvm.org/D77028
Sid Manning [Sun, 5 Apr 2020 00:36:00 +0000 (19:36 -0500)]
[Hexagon] Make lld be the default linker for linux/musl
When the target is hexagon-unknown-linux-musl select lld as the default
linker.
Differential Revision: https://reviews.llvm.org/D77498
Louis Dionne [Fri, 3 Apr 2020 16:49:09 +0000 (12:49 -0400)]
[lit] Move the recursiveExpansionLimit setting to TestingConfig
The LitConfig is shared across the whole test suite. However, since
enabling recursive expansion can be a breaking change for some test
suites, it's important to confine the setting to test suites that
enable it explicitly.
Note that other issues were raised with the way recursiveExpansionLimit
operates. However, this commit simply moves the setting to the right
place -- the mechanism by which it works can be improved independently.
Differential Revision: https://reviews.llvm.org/D77415
LLVM GN Syncbot [Mon, 6 Apr 2020 17:54:02 +0000 (17:54 +0000)]
[gn build] Port
00a57558978
Konstantin Pyzhov [Mon, 6 Apr 2020 09:56:11 +0000 (05:56 -0400)]
Paula Toth [Mon, 6 Apr 2020 17:40:50 +0000 (10:40 -0700)]
[clang-tidy] Add check llvmlibc-implementation-in-namespace.
Summary:
This check makes sure all llvm-libc implementations falls within the `__llvm_libc` namespace.
Reviewers: alexfh, aaron.ballman, hokein, njames93
Reviewed By: aaron.ballman
Subscribers: Eugene.Zelenko, libc-commits, mgorny, xazax.hun, MaskRay, cfe-commits, sivachandra
Tags: #clang-tools-extra, #clang
Differential Revision: https://reviews.llvm.org/D76818
Kirill Naumov [Mon, 6 Apr 2020 16:53:10 +0000 (16:53 +0000)]
[CFGPrinter][CallPrinter][polly] Adding distinct structure for CFGDOTInfo
The patch introduces the system to distinctively store the information
needed for the Control Flow Graph as well as the instrumentary needed for
the follow-up changes: BlockFrequencyInfo and BranchProbabilityInfo.
The patch is a part of sequence of three patches, related to graphs Heat Coloring.
Reviewers: rcorcs, apilipenko, davidxl, sfertile, fedor.sergeev, eraman, bollu
Differential Revision: https://reviews.llvm.org/D76820
Reid Kleckner [Mon, 6 Apr 2020 17:32:16 +0000 (10:32 -0700)]
Remove llvm::Error include form Diagnostic.h
Saves ~400 related LLVM ADT. llvm/ADT/Error.h takes 90ms to parse.
$ diff -u <(sort thedeps-before.txt) <(sort thedeps-after.txt) \
| grep '^[-+] ' | sort | uniq -c | sort -nr
403 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Error.h
403 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm-c/Error.h
397 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Format.h
397 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/Debug.h
377 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/ADT/StringExtras.h
158 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm-c/ExternC.h
138 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/ErrorOr.h
13 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/Support/raw_ostream.h
13 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/ADT/SmallString.h
5 - /usr/local/google/home/rnk/llvm-project/llvm/include/llvm/ADT/Twine.h
Jean-Michel Gorius [Mon, 6 Apr 2020 17:38:00 +0000 (19:38 +0200)]
[mlir] Fix typo in docs/DefiningAttributesAndTypes.md
Louis Dionne [Mon, 6 Apr 2020 16:43:55 +0000 (12:43 -0400)]
[libc++] Make sure we execute tests with the current environment
The new libc++ test format doesn't automatically do this (cause it
would be the wrong place to do it).
Artem Dergachev [Mon, 6 Apr 2020 17:27:40 +0000 (20:27 +0300)]
[analyzer] Fix NSErrorChecker false positives on constructors.
Constructors and delete operators cannot return a boolean value.
Therefore they cannot possibly follow the NS/CFError-related coding
conventions.
Patch by Valeriy Savchenko!
Differential Revision: https://reviews.llvm.org/D77551
Artem Dergachev [Mon, 6 Apr 2020 17:18:13 +0000 (20:18 +0300)]
[analyzer] Fix scan-build and exploded-graph-rewriter tests on Windows.
Detect script locations in a more straightforward way: we don't need to
search for them because we know exactly where they are anyway.
Fix a file path escaping issue in exploded-graph-rewriter with Windows
backslashes in the path.
'REQUIRES: shell' remains in scan-build tests for now, so that to
observe the buildbot reaction on removing it in a cleaner experiment.
Patch by Denys Petrov!
Differential Revision: https://reviews.llvm.org/D76768
Reid Kleckner [Mon, 6 Apr 2020 16:55:33 +0000 (09:55 -0700)]
[AST] Remove DeclCXX.h dep on ASTContext.h
Saves only 36 includes of ASTContext.h and related headers.
There are two deps on ASTContext.h:
- C++ method overrides iterator types (TinyPtrVector)
- getting LangOptions
For #1, duplicate the iterator type, which is
TinyPtrVector<>::const_iterator.
For #2, add an out-of-line accessor to get the language options. Getting
the ASTContext from a Decl is already an out of line method that loops
over the parent DeclContexts, so if it is ever performance critical, the
proper fix is to pass the context (or LangOpts) into the predicate in
question.
Other changes are just header fixups.
Yaxun (Sam) Liu [Thu, 2 Apr 2020 03:26:56 +0000 (23:26 -0400)]
Speed up deferred diagnostic emitter
Move function emitDeferredDiags from Sema to DeferredDiagsEmitter since it
is only used by DeferredDiagsEmitter.
Also skip visited functions to avoid exponential compile time.
Differential Revision: https://reviews.llvm.org/D77028
Konstantin Pyzhov [Mon, 6 Apr 2020 09:10:37 +0000 (05:10 -0400)]
[AMDGPU] Disable 'Skip Uniform Regions' optimization by default for AMDGPU.
Reviewers: sameerds, dstuttard
Differential Revision: https://reviews.llvm.org/D77228
Matt Morehouse [Mon, 6 Apr 2020 16:55:56 +0000 (09:55 -0700)]
[sanitizer_common] Update global_symbols.txt.
Matt Morehouse [Mon, 6 Apr 2020 16:55:03 +0000 (09:55 -0700)]
Revert "[sanitizer_common] Show new unexpected symbols."
This reverts commit
68d73dfa1a422fd045e25d06c3e8ff01621c377a.
Matt Morehouse [Mon, 6 Apr 2020 16:54:56 +0000 (09:54 -0700)]
Revert "[sanitizer_common] Update global_symbols.txt."
This reverts commit
98bb7fdbe586e7f95588c99c5363e94870da75f5.
Fangrui Song [Tue, 10 Mar 2020 00:35:50 +0000 (17:35 -0700)]
[AArch64] Allow logical immediates to have all-1 in top bits
So that constant expressions like the following are permitted:
and w0, w0, #~(0xfe<<24)
and w1, w1, #~(0xff<<24)
The behavior matches GNU as (opcodes/aarch64-opc.c:aarch64_logical_immediate_p).
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D75885
Florian Hahn [Mon, 6 Apr 2020 16:53:38 +0000 (17:53 +0100)]
[LV] Fix value that could be read uninitialized.
This should fix
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-msan/builds/18569
Amy Huang [Tue, 31 Mar 2020 20:31:42 +0000 (13:31 -0700)]
[DebugInfo] Change to constructor homing debug info mode: skip literal types
Summary:
In constructor type homing mode sometimes complete debug info for constexpr
types was missing, because there was not a constructor emitted. This change
makes constructor type homing ignore constexpr types.
Reviewers: rnk, dblaikie
Subscribers: aprantl, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77432
Fangrui Song [Wed, 1 Apr 2020 23:11:31 +0000 (16:11 -0700)]
[ELF] Make --version-script/--dynamic-list work for lazy symbols fetched by LTO libcalls
Fixes https://bugs.llvm.org/show_bug.cgi?id=45391
The LTO code generator happens after version script scanning and may
create references which will fetch some lazy symbols.
Currently a version script does not assign VER_NDX_LOCAL to lazy symbols
and such symbols will be made global after they are fetched.
Change findByVersion and findAllByVersion to work on lazy symbols.
For unfetched lazy symbols, we should keep them non-local (D35263).
Check isDefined() in computeBinding() as a compensation.
This patch fixes a companion bug that --dynamic-list does not export
libcall fetched symbols.
Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D77280
Matt Morehouse [Mon, 6 Apr 2020 16:42:32 +0000 (09:42 -0700)]
[sanitizer_common] Update global_symbols.txt.
Matt Morehouse [Mon, 6 Apr 2020 16:39:53 +0000 (09:39 -0700)]
[sanitizer_common] Show new unexpected symbols.
Louis Dionne [Mon, 6 Apr 2020 16:40:54 +0000 (12:40 -0400)]
[libc++] Mark two std::timed_mutex tests as flaky
Nikita Popov [Sat, 4 Apr 2020 22:46:20 +0000 (00:46 +0200)]
[RDA] Only store most recent reaching def from predecessors (NFCI)
When entering a basic block, RDA inserts reaching definitions coming
from predecessor blocks (which will be negative numbers) in a rather
peculiar way. If you have incoming reaching definitions -4, -3, -2, -1,
it will insert those. If you have incoming reaching definitions
-1, -2, -3, -4, it will insert -1, -1, -1, -1, as the max is taken
at each step. That's probably not what was intended...
However, RDA only actually cares about the most recent reaching
definition from a predecessor (to calculate clearance), so this
ends up working fine as far as behavior is concerned. It does
waste memory on unnecessary reaching definitions though.
This patch changes the implementation to first compute the most
recent reaching definition in one loop, and then insert only that
one in a separate loop.
Differential Revision: https://reviews.llvm.org/D77508
Sanjay Patel [Mon, 6 Apr 2020 16:34:59 +0000 (12:34 -0400)]
[x86] add size cost tests for casts and binops; NFC
Shows bugs for div/rem/fdiv and possibly others.
Nikita Popov [Sun, 5 Apr 2020 17:16:56 +0000 (19:16 +0200)]
[RDA] Don't adjust ReachingDefDefaultVal (NFCI)
At the end of a basic block, RDA adjusts all the reaching defs it
found to be relative to the end of the basic block, rather than the
start of it. However, it also does this to registers which don't
have a reaching def, indicated by ReachingDefDefaultVal. This means
that code checking against ReachingDefDefaultVal will not skip them,
and may insert them into the reaching definition list. This is
ultimately harmless, but causes unnecessary work and is logically
not right.
Differential Revision: https://reviews.llvm.org/D77506
Alexey Bataev [Mon, 6 Apr 2020 15:49:17 +0000 (11:49 -0400)]
[OPENMP]Fix PR45439: `omp for collapse(2) ordered(2)` generates invalid
IR.
Fixed a crash because of the not quite correct casting of the value of
iterations.
Kazuaki Ishizaki [Mon, 6 Apr 2020 16:06:02 +0000 (01:06 +0900)]
[lldb] NFC: Fix trivial typo in comments, documents, and messages
Differential Revision: https://reviews.llvm.org/D77460
Scott Linder [Fri, 3 Apr 2020 19:48:28 +0000 (15:48 -0400)]
Use in-tree clang-format-diff.py as Arcanist linter
Summary:
The only guarantee there seems to be in the clang-format packaging is
that an executable called `clang-format` is in the PATH. Use the
in-tree `clang-format-diff.py` to avoid assuming anything else.
Also remove dead code for SVN repo and switch to `git diff-index` which
is the git plumbing equivalent of `git diff` in this case.
Reviewers: starsid, mehdi_amini, vitalybuka, fhahn, kadircet
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D77428
Jonathan Roelofs [Mon, 6 Apr 2020 15:37:14 +0000 (09:37 -0600)]
[llvm-objdump] Fix case of -Wmismatched-tags
Jonathan Roelofs [Thu, 2 Apr 2020 22:28:32 +0000 (16:28 -0600)]
[llvm] Fix missing FileCheck directive colons
https://reviews.llvm.org/D77352
Sanjay Patel [Mon, 6 Apr 2020 15:40:45 +0000 (11:40 -0400)]
[ValueTracking] enhance matching of umin/umax with 'not' operands
The cmyk test is based on the known regression that resulted from:
rGf2fbdf76d8d0
This improves on the equivalent signed min/max change:
rG867f0c3c4d8c
The underlying icmp equivalence is:
~X pred ~Y --> Y pred X
For an icmp with constant, canonicalization results in a swapped pred:
~X < C --> X > ~C
BoYao Zhang [Mon, 6 Apr 2020 15:49:51 +0000 (11:49 -0400)]
Fix a typo in an assert message; NFC.
Matt Arsenault [Mon, 6 Apr 2020 01:16:00 +0000 (21:16 -0400)]
AMDGPU/GlobalISel: Select llvm.amdgcn.div.scale
Matt Arsenault [Sun, 5 Apr 2020 23:49:09 +0000 (19:49 -0400)]
AMDGPU/GlobalISel: Fix llvm.amdgcn.div.fmas.ll
Jay Foad [Mon, 6 Apr 2020 15:44:08 +0000 (16:44 +0100)]
[AMDGPU] Fix inaccurate comments
Louis Dionne [Mon, 6 Apr 2020 15:04:13 +0000 (11:04 -0400)]
[libc++] Always use -fsyntax-only in .fail.cpp tests
We had a workaround because GCC 5 does not evaluate static assertions
that are dependent on template parameters. This commit removes the
workaround and marks the corresponding tests as unsupported with GCC 5.
This has the benefit of bringing the new and the old test formats closer
without having to carry a workaround for an old compiler in the new
test format.
Gabor Marton [Fri, 3 Apr 2020 15:01:00 +0000 (17:01 +0200)]
[analyzer] StdLibraryFunctionsChecker: match signature based on FunctionDecl
Summary:
Currently we match the summary signature based on the arguments in the CallExpr.
There are a few problems with this approach.
1) Variadic arguments are handled badly. Consider the below code:
int foo(void *stream, const char *format, ...);
void test_arg_constraint_on_variadic_fun() {
foo(0, "%d%d", 1, 2); // CallExpr
}
Here the call expression holds 4 arguments, whereas the function declaration
has only 2 `ParmVarDecl`s. So there is no way to create a summary that
matches the call expression, because the discrepancy in the number of
arguments causes a mismatch.
2) The call expression does not handle the `restrict` type qualifier.
In C99, fwrite's signature is the following:
size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict);
However, in a call expression, like below, the type of the argument does not
have the restrict qualifier.
void test_fread_fwrite(FILE *fp, int *buf) {
size_t x = fwrite(buf, sizeof(int), 10, fp);
}
This can result in an unmatches signature, so the summary is not applied.
The solution is to match the summary against the referened callee
`FunctionDecl` that we can query from the `CallExpr`.
Further patches will continue with additional refactoring where I am going to
do a lookup during the checker initialization and the signature match will
happen there. That way, we will not check the signature during every call,
rather we will compare only two `FunctionDecl` pointers.
Reviewers: NoQ, Szelethus, gamesh411, baloghadamsoftware
Subscribers: whisperity, xazax.hun, kristof.beyls, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, Charusso, steakhal, danielkiss, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77410
Louis Dionne [Mon, 6 Apr 2020 14:25:51 +0000 (10:25 -0400)]
[libc++] Make sure we include %{flags} when building with the new format
Otherwise, we're missing some flags like the flags that are used by
sanitizer builds and the 32-bit builds. In the long term, I think it
would be better to have only %{compile_flags} and %{link_flags}, but
for the benefit of adopting the new format by default, I think it's OK
to add %{flags} to it.
Louis Dionne [Mon, 6 Apr 2020 14:46:14 +0000 (10:46 -0400)]
[libc++] Mark is_scalar test as unsupported in C++11 and C++14
That test requires std::optional. We never noticed that because our
test format was skipping Objective-C++ tests altogether.
Nicolas Vasilache [Mon, 6 Apr 2020 15:18:28 +0000 (11:18 -0400)]
[mlir][Linalg] Add a linalg.tensor_reshape to operate on tensors
Summary:
This revision adds a tensor_reshape operation that operates on tensors.
In the tensor world the constraints are less stringent and we can allow more
arbitrary dynamic reshapes, as long as they are contractions.
The expansion of a dynamic dimension into multiple dynamic dimensions is under-specified and is punted on for now.
Differential Revision: https://reviews.llvm.org/D77360
Sanjay Patel [Mon, 6 Apr 2020 15:12:16 +0000 (11:12 -0400)]
[ValueTracking] add/adjust tests for min/max; NFC
Martin Probst [Mon, 6 Apr 2020 13:20:54 +0000 (15:20 +0200)]
clang-format: [JS] handle pseudo-keywords.
Summary:
The previous change in https://reviews.llvm.org/D77311 attempted to
detect more C++ keywords. However it also precisely detected all
JavaScript keywords. That's generally correct, but many JavaScripy
keywords, e.g. `get`, are so-called pseudo-keywords. They can be used in
positions where a keyword would never be legal, e.g. in a dotted
expression:
x.type; // type is a pseudo-keyword, but can be used here.
x.get; // same for get etc.
This change introduces an additional parameter to
`IsJavaScriptIdentifier`, allowing clients to toggle whether they want
to allow `IdentifierName` tokens, i.e. pseudo-keywords.
Reviewers: krasimir
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77548
Gabor Marton [Fri, 3 Apr 2020 15:56:28 +0000 (17:56 +0200)]
[analyzer] StdLibraryFunctionsChecker: Add test for function with default parameter
Reviewers: Szelethus, baloghadamsoftware, gamesh411, steakhal, balazske
Subscribers: whisperity, xazax.hun, szepet, rnkovacs, a.sidorin, mikhail.ramalho, donat.nagy, dkrupp, Charusso, ASDenysPetrov, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D77411