Gor Nishanov [Thu, 15 Aug 2019 00:48:51 +0000 (00:48 +0000)]
[coroutine] Fixes "cannot move instruction since its users are not dominated by CoroBegin" problem.
Summary:
Fixes https://bugs.llvm.org/show_bug.cgi?id=36578 and https://bugs.llvm.org/show_bug.cgi?id=36296.
Supersedes: https://reviews.llvm.org/D55966
One of the fundamental transformation that CoroSplit pass performs before splitting the coroutine is to find which values need to survive between suspend and resume and provide a slot for them in the coroutine frame to spill and restore the value as needed.
Coroutine frame becomes available once the storage for it was allocated and that point is marked in the pre-split coroutine with a llvm.coro.begin intrinsic.
FE normally puts all of the user-authored code that would be accessing those values after llvm.coro.begin, however, sometimes instructions accessing those values would end up prior to coro.begin. For example, writing out a value of the parameter into the alloca done by the FE or instructions that are added by the optimization passes such as SROA when it rewrites allocas.
Prior to this change, CoroSplit pass would try to move instructions that may end up accessing the values in the coroutine frame after CoroBegin. However it would run into problems (report_fatal_error) if some of the values would be used both in the allocation function (for example allocator is passed as a parameter to a coroutine) and in the use-authored body of the coroutine.
To handle this case and to simplify the instruction moving logic, this change removes all of the instruction moving. Instead, we only change the uses of the spilled values that are dominated by coro.begin and leave other instructions intact.
Before:
```
%var = alloca i32
%1 = getelementptr .. %var; ; will move this one after coro.begin
%f = call i8* @llvm.coro.begin(
```
After:
```
%var = alloca i32
%1 = getelementptr .. %var; stays put
%f = call i8* @llvm.coro.begin(
```
If we discover that there is a potential write into an alloca, prior to coro.begin we would copy its value from the alloca into the spill slot in the coroutine frame.
Before:
```
%var = alloca i32
store .. %var ; will move this one after coro.begin
%f = call i8* @llvm.coro.begin(
```
After:
```
%var = alloca i32
store .. %var ;stays put
%f = call i8* @llvm.coro.begin(
%tmp = load %var
store %tmp, %spill.slot.for.var
```
Note: This change does not handle array allocas as that is something that C++ FE does not produce, but, it can be added in the future if need arises
Reviewers: llvm-commits, modocache, ben-clayton, tks2103, rjmccall
Reviewed By: modocache
Subscribers: bartdesmet
Differential Revision: https://reviews.llvm.org/D66230
llvm-svn: 368949
Julian Lettner [Thu, 15 Aug 2019 00:18:55 +0000 (00:18 +0000)]
[sanitizer_common] Replace forkpty with posix_spawn on Darwin
On Darwin, we currently use forkpty to communicate with the "atos"
symbolizer. There are several problems that fork[pty] has, e.g. that
after fork, interceptors are still active and this sometimes causes
crashes or hangs. This is especially problematic for TSan, which uses
interceptors for OS-provided locks and mutexes, and even Libc functions
use those.
This patch replaces forkpty with posix_spawn on Darwin. Since
posix_spawn doesn't fork (at least on Darwin), the interceptors are not
a problem. Another benefit is that we'll handle post-fork failures (e.g.
sandbox disallows "exec") gracefully now.
Related revisions and previous attempts that were blocked by or had to
be revered due to test failures:
https://reviews.llvm.org/D48451
https://reviews.llvm.org/D40032
Reviewed By: kubamracek
Differential Revision: https://reviews.llvm.org/D65253
llvm-svn: 368947
Jonas Devlieghere [Thu, 15 Aug 2019 00:06:49 +0000 (00:06 +0000)]
[compiler-rt] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
Differential revision: https://reviews.llvm.org/D66259
llvm-svn: 368946
Robert Widmann [Wed, 14 Aug 2019 23:54:35 +0000 (23:54 +0000)]
Expose TailCallKind via the LLVM C API
Summary: This exposes `CallInst`'s tail call kind via new `LLVMGetTailCallKind` and `LLVMSetTailCallKind` functions. The motivation for this is to be able to see `musttail` for languages that require mandatory tail calls for correctness. Today only the weaker `LLVMSetTail` is exposed and there is no way to set `GuaranteedTailCallOpt` via the C API.
Reviewers: CodaFi, jyknight, deadalnix, rnk
Reviewed By: CodaFi
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66061
llvm-svn: 368945
Jonas Devlieghere [Wed, 14 Aug 2019 23:52:23 +0000 (23:52 +0000)]
[clang-tools-extra] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
Differential revision: https://reviews.llvm.org/D66259
llvm-svn: 368944
Jonas Devlieghere [Wed, 14 Aug 2019 23:04:18 +0000 (23:04 +0000)]
[Clang] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
Differential revision: https://reviews.llvm.org/D66259
llvm-svn: 368942
Richard Smith [Wed, 14 Aug 2019 22:57:51 +0000 (22:57 +0000)]
[www] Update DR status page to match latest version of CWG issues list.
llvm-svn: 368941
Richard Smith [Wed, 14 Aug 2019 22:57:50 +0000 (22:57 +0000)]
Fix handling of class member access into a vector type.
When handling a member access into a non-class, non-ObjC-object type, we
would perform a lookup into the surrounding scope as if for an
unqualified lookup. If the member access was followed by a '<' and this
lookup (or the typo-correction for it) found a template name, we'd treat
the member access as naming that template.
Now we treat such accesses as never naming a template if the type of the
object expression is of vector type, so that vector component accesses
are never misinterpreted as naming something else. This is not entirely
correct, since it is in fact valid to name a template from the enclosing
scope in this context, when invoking a pseudo-destructor for the vector
type via an alias template, but that's very much a corner case, and this
change leaves that case only as broken as the corresponding case for
Objective-C types is.
This incidentally adds support for dr2292, which permits a 'template'
keyword at the start of a member access naming a pseudo-destructor.
llvm-svn: 368940
JF Bastien [Wed, 14 Aug 2019 22:48:12 +0000 (22:48 +0000)]
Remove LVALUE / RVALUE workarounds
Summary: LLVM_HAS_RVALUE_REFERENCE_THIS and LLVM_LVALUE_FUNCTION shouldn't be needed anymore because the minimum compiler versions support them.
Subscribers: jkorous, dexonsmith, cfe-commits, llvm-commits, hans, thakis, chandlerc, rnk
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D66240
llvm-svn: 368939
Johannes Doerfert [Wed, 14 Aug 2019 22:32:29 +0000 (22:32 +0000)]
[Attributor] Try to fix "missing field 'RetInsts' initializer" warning
http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/35674/steps/build_Lld/logs/stdio
llvm-svn: 368938
Shafik Yaghmour [Wed, 14 Aug 2019 22:30:29 +0000 (22:30 +0000)]
Improve anonymous class heuristic in ClangASTContext::CreateRecordType
Summary:
Currently the heuristic used in ClangASTContext::CreateRecordType to identify an anonymous class is that there is that name is a nullptr or simply a null terminator. This heuristic is not accurate since it will also sweep up unnamed classes and lambdas. The improved heuristic relies on the requirement that an anonymous class must be contained within a class.
Differential Revision: https://reviews.llvm.org/D66175
llvm-svn: 368937
Jonas Devlieghere [Wed, 14 Aug 2019 22:28:17 +0000 (22:28 +0000)]
[LLD] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
Differential revision: https://reviews.llvm.org/D66259
llvm-svn: 368936
Jonas Devlieghere [Wed, 14 Aug 2019 22:28:12 +0000 (22:28 +0000)]
[Polly] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
Differential revision: https://reviews.llvm.org/D66259
llvm-svn: 368935
Diego Trevino Ferrer [Wed, 14 Aug 2019 22:22:37 +0000 (22:22 +0000)]
[Bugpoint redesign] Modified Functions pass to consider declarations
Summary: This modification was put in place so the `ReduceMetadata` pass doesn't have to consider debug functions
Reviewers: dblaikie
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66257
llvm-svn: 368934
Jonas Devlieghere [Wed, 14 Aug 2019 22:19:23 +0000 (22:19 +0000)]
[LLDB] Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
Differential revision: https://reviews.llvm.org/D66259
llvm-svn: 368933
Jordan Rupprecht [Wed, 14 Aug 2019 22:18:01 +0000 (22:18 +0000)]
[docs] Fix sphinx doc generation errors
Summary:
Errors fixed:
- GettingStarted: Duplicate explicit target name: "cmake"
- GlobalISel: Unexpected indentation
- LoopTerminology: Explicit markup ends without a blank line; unexpected unindent
- ORCv2: Definition list ends without a blank line; unexpected unindent
- Misc: document isn't included in any toctree
Verified that a clean docs build (`rm -rf docs/ && ninja docs-llvm-html`) passes with no errors. Spot checked the individual pages to make sure they look OK.
Reviewers: thakis, dsanders
Reviewed By: dsanders
Subscribers: arphaman, llvm-commits, lhames, rovka, dsanders, reames
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66183
llvm-svn: 368932
Johannes Doerfert [Wed, 14 Aug 2019 22:04:28 +0000 (22:04 +0000)]
[Attributor][NFC] Make debug output consistent
llvm-svn: 368931
Philip Reames [Wed, 14 Aug 2019 21:58:13 +0000 (21:58 +0000)]
[SCEV] Rename getMaxBackedgeTakenCount to getConstantMaxBackedgeTakenCount [NFC]
llvm-svn: 368930
Matthias Gehre [Wed, 14 Aug 2019 21:55:57 +0000 (21:55 +0000)]
[LifetimeAnalysis] Support std::stack::top() and std::optional::value()
Summary: Diagnose dangling pointers that come from std::stack::top() and std::optional::value().
Reviewers: gribozavr
Subscribers: cfe-commits, xazax.hun
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66164
llvm-svn: 368929
Johannes Doerfert [Wed, 14 Aug 2019 21:46:28 +0000 (21:46 +0000)]
[Attributor][NFC] Try to eliminate warnings (debug build + fall through)
llvm-svn: 368928
Johannes Doerfert [Wed, 14 Aug 2019 21:46:25 +0000 (21:46 +0000)]
[Attributor][NFC] Introduce statistics macros for new positions
llvm-svn: 368927
Craig Topper [Wed, 14 Aug 2019 21:38:56 +0000 (21:38 +0000)]
[SelectionDAGBuilder] Teach gather/scatter getUniformBase to look through vector zeroinitializer indices in addition to scalar zeroes.
llvm-svn: 368926
Johannes Doerfert [Wed, 14 Aug 2019 21:35:20 +0000 (21:35 +0000)]
[Attributor][NFC] Add merge/join/clamp operators to the IntegerState
Differential Revision: https://reviews.llvm.org/D66146
llvm-svn: 368925
Johannes Doerfert [Wed, 14 Aug 2019 21:31:32 +0000 (21:31 +0000)]
[Attributor] Use the AANoNull attribute directly in AADereferenceable
Summary:
Instead of constantly keeping track of the nonnull status with the
dereferenceable information we can simply query the nonnull attribute
whenever we need the information (debug + manifest).
Reviewers: sstefan1, uenoku
Subscribers: hiraditya, bollu, jfb, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66113
llvm-svn: 368924
Amara Emerson [Wed, 14 Aug 2019 21:30:30 +0000 (21:30 +0000)]
[AArch64][GlobalISel] Custom selection for s8 load acquire.
Implement this single atomic load instruction so that we can compile stack
protector code.
Differential Revision: https://reviews.llvm.org/D66245
llvm-svn: 368923
Johannes Doerfert [Wed, 14 Aug 2019 21:29:37 +0000 (21:29 +0000)]
[Attributor] Use liveness during the creation of AAReturnedValues
Summary:
As one of the first attributes, and one of the complex ones,
AAReturnedValues was not using liveness but we filtered the result after
the fact. This change adds liveness usage during the creation. The
algorithm is also improved and shorter.
The new algorithm will collect returned values over time using the
generic facilities that work with liveness already, e.g.,
genericValueTraversal which does not look at dead PHI node predecessors.
A test to show how this leads to better results is included.
Note: Unresolved calls and resolved calls are now tracked explicitly.
Reviewers: uenoku, sstefan1
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66120
llvm-svn: 368922
Johannes Doerfert [Wed, 14 Aug 2019 21:25:08 +0000 (21:25 +0000)]
[Attributor] Do not update or manifest dead attributes
Summary:
If the associated context instruction is assumed dead we do not need to
update or manifest the state.
Reviewers: sstefan1, uenoku
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66116
llvm-svn: 368921
Raphael Isemann [Wed, 14 Aug 2019 21:21:14 +0000 (21:21 +0000)]
Revert "[lldb] Reinstate original guard variable check"
It seems this breaks the following tests:
lldb-Suite :: expression_command/call-function/TestCallUserDefinedFunction.py
lldb-Suite :: expression_command/rdar42038760/TestScalarURem.py
Let's revert this patch and wait until we find an actual issue that could be
fixed by also doing the guard variable check on Windows.
llvm-svn: 368920
Johannes Doerfert [Wed, 14 Aug 2019 21:18:01 +0000 (21:18 +0000)]
[Attributor] Use IRPosition consistently
Summary:
The next attempt to clean up the Attributor interface before we grow it
further.
Before, we used a combination of two values (associated + anchor) and an
argument number (or -1) to determine a location. This was very fragile.
The new system uses exclusively IR positions and we restrict the
generation of IR positions to special constructor methods that verify
internal constraints we have. This will catch misuse early.
The auto-conversion, e.g., in getAAFor, is now performed through the
SubsumingPositionIterator. This iterator takes an IR position and allows
to visit all IR positions that "subsume" the given one, e.g., function
attributes "subsume" argument attributes of that function. For a
detailed breakdown see the class comment of SubsumingPositionIterator.
This patch also introduces the IRPosition::getAttrs() to extract IR
attributes at a certain position. The method knows how to look up in
different positions that are equivalent, e.g., the argument position for
call site arguments. We also introduce three new positions kinds such
that we have all IR positions where attributes can be placed and one for
"floating" values.
Reviewers: sstefan1, uenoku
Subscribers: hiraditya, bollu, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D65977
llvm-svn: 368919
Diego Trevino Ferrer [Wed, 14 Aug 2019 21:01:19 +0000 (21:01 +0000)]
[Bugpoint redesign] Added Pass to Remove Global Variables
Summary:
This pass tries to remove Global Variables, as well as their derived uses. For example if a variable `@x` is used by `%call1` and `%call2`, both these uses and the definition of `@x` are deleted. Moreover if `%call1` or `%call2` are used elsewhere those uses are also deleted, and so on recursively.
I'm still uncertain if this pass should remove derived uses, I'm open to suggestions.
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D64176
llvm-svn: 368918
Stanislav Mekhanoshin [Wed, 14 Aug 2019 20:55:15 +0000 (20:55 +0000)]
[AMDGPU] Do not assume a default GCN target
Differential Revision: https://reviews.llvm.org/D66246
llvm-svn: 368917
Marshall Clow [Wed, 14 Aug 2019 20:54:56 +0000 (20:54 +0000)]
Fix thread comparison by making sure we never pass our special 'not a thread' value to the underlying implementation. Fixes PR#42918.
llvm-svn: 368916
Diego Trevino Ferrer [Wed, 14 Aug 2019 20:34:12 +0000 (20:34 +0000)]
[Bugpoint redesign] Reduced scope of variables in Delta implementation
Summary: This diff also changed the check in `Delta.cpp` to verify interesting-ness, so it exits when the input isn't interesting
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66251
llvm-svn: 368915
Louis Dionne [Wed, 14 Aug 2019 20:27:56 +0000 (20:27 +0000)]
[libc++] Mark <chrono> test as unsupported on AppleClang 9
llvm-svn: 368914
Sanjay Patel [Wed, 14 Aug 2019 20:21:30 +0000 (20:21 +0000)]
[x86] add tests for fadd reduction; NFC
More coverage for D66236.
llvm-svn: 368913
Diego Astiazaran [Wed, 14 Aug 2019 20:19:33 +0000 (20:19 +0000)]
[clang-doc] Add missing check in tests
Path is now checked when comparing two Infos in the unit tests.
Differential Revision: https://reviews.llvm.org/D66124
llvm-svn: 368912
Louis Dionne [Wed, 14 Aug 2019 20:17:18 +0000 (20:17 +0000)]
[libc++] Mark std::tuple CTAD test as failing on AppleClang 9
Like CTAD for std::unordered_set, AppleClang 9's support for CTAD is
insufficient. I suspect the corresponding LLVM Clang is broken too,
but we don't seem to have testers using that Clang.
llvm-svn: 368911
JF Bastien [Wed, 14 Aug 2019 20:13:49 +0000 (20:13 +0000)]
Use std::is_final directly
The workaround isn't needed anymore because all toolchains should support it.
llvm-svn: 368910
JF Bastien [Wed, 14 Aug 2019 19:59:05 +0000 (19:59 +0000)]
SwapByteOrder.h: don't check for unsupported GCC versions
llvm-svn: 368909
JF Bastien [Wed, 14 Aug 2019 19:57:21 +0000 (19:57 +0000)]
MathExtras.h: don't check for unsupported GCC versions
llvm-svn: 368908
Erich Keane [Wed, 14 Aug 2019 19:55:59 +0000 (19:55 +0000)]
Add support in CMake to statically link the C++ standard library.
It is sometimes useful to have the C++ standard library linked into the
assembly when compiling clang, particularly when distributing a compiler
onto systems that don't have a copy of stdlibc++ or libc++ installed.
This functionality should work with either GCC or Clang as the host
compiler, though statically linking libc++ (as may be required for
licensing purposes) is only possible if the host compiler is Clang with
a copy of libc++ available.
Differential Revision: https://reviews.llvm.org/D65603
llvm-svn: 368907
Dinar Temirbulatov [Wed, 14 Aug 2019 19:46:50 +0000 (19:46 +0000)]
[SLP][NFC] Use pointers to address to ScalarToTreeEntry elements, instead of indexes.
llvm-svn: 368906
Sanjay Patel [Wed, 14 Aug 2019 19:46:15 +0000 (19:46 +0000)]
[SDAG] move variable closer to use; NFC
llvm-svn: 368905
Jordan Rupprecht [Wed, 14 Aug 2019 19:31:56 +0000 (19:31 +0000)]
[lldb][NFC] Remove unused function
llvm-svn: 368904
Alexey Bataev [Wed, 14 Aug 2019 19:30:06 +0000 (19:30 +0000)]
[OPENMP]Support for non-rectangular loops.
Added basic support for non-rectangular loops. It requires an additional
analysis of min/max boundaries for non-rectangular loops. Since only
linear dependency is allowed, we can do this analysis.
llvm-svn: 368903
JF Bastien [Wed, 14 Aug 2019 19:19:41 +0000 (19:19 +0000)]
Revert "Un-break the bots"
Looks like the problem was due to the cmake cache, Chris fixed in r368897.
llvm-svn: 368902
Matt Arsenault [Wed, 14 Aug 2019 19:09:48 +0000 (19:09 +0000)]
AMDGPU: Reduce number of registers in test
Once the failure this is testing is fixed, this would fail due to
using too many registers.
llvm-svn: 368901
Jinsong Ji [Wed, 14 Aug 2019 19:06:59 +0000 (19:06 +0000)]
[PowerPC][NFC] Remove duplicate tests in build-vector-test.ll
AllOnes has been split into build-vector-allones.ll.
llvm-svn: 368900
Jan Korous [Wed, 14 Aug 2019 18:30:18 +0000 (18:30 +0000)]
[Support][NFC] Fix error message for posix_spawn_file_actions_addopen failed call
Seems like a copy-paste from couple lines above.
llvm-svn: 368899
Philip Reames [Wed, 14 Aug 2019 18:27:57 +0000 (18:27 +0000)]
[RLEV] Rewrite loop exit values for multiple exit loops w/o overall loop exit count
We already supported rewriting loop exit values for multiple exit loops, but if any of the loop exits were not computable, we gave up on all loop exit values. This patch generalizes the existing code to handle individual computable loop exits where possible.
As discussed in the review, this is a starting point for figuring out a better API. The code is a bit ugly, but getting it in lets us test as we go.
Differential Revision: https://reviews.llvm.org/D65544
llvm-svn: 368898
Chris Bieneman [Wed, 14 Aug 2019 18:26:37 +0000 (18:26 +0000)]
[CMake] Fix cache invalidation of LLVM_CXX_STD
This cleans up fallout from https://reviews.llvm.org/D66195.
llvm-svn: 368897
JF Bastien [Wed, 14 Aug 2019 18:17:06 +0000 (18:17 +0000)]
Un-break the bots
Some bots can't find is_final despite it being in C++14. Leave the code as it was for now, fix it later when the bots are happy.
llvm-svn: 368896
Matt Arsenault [Wed, 14 Aug 2019 18:13:00 +0000 (18:13 +0000)]
InferAddressSpaces: Move target intrinsic handling to TTI
I'm planning on handling intrinsics that will benefit from checking
the address space enums. Don't bother moving the address collection
for now, since those won't need th enums.
llvm-svn: 368895
Matt Arsenault [Wed, 14 Aug 2019 18:01:42 +0000 (18:01 +0000)]
InferAddressSpaces: Remove unnecessary check for ConstantInt
The IR is invalid if this isn't a constant since immarg was added.
llvm-svn: 368893
JF Bastien [Wed, 14 Aug 2019 18:01:11 +0000 (18:01 +0000)]
Match if / elseif properly
My last commit fumbled it.
llvm-svn: 368892
Taewook Oh [Wed, 14 Aug 2019 17:58:45 +0000 (17:58 +0000)]
[DebugInfo] Consider debug label scope has an extra lexical block file
Summary: There are places where a case that debug label scope has an extra lexical block file is not considered properly. The modified test won't pass without this patch.
Reviewers: aprantl, HsiangKai
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66187
llvm-svn: 368891
JF Bastien [Wed, 14 Aug 2019 17:57:20 +0000 (17:57 +0000)]
Remove now useless C++1y flag
As of D66195 we support C++14 by default.
llvm-svn: 368890
JF Bastien [Wed, 14 Aug 2019 17:48:36 +0000 (17:48 +0000)]
Don't explicitly check for C++14
MSVC is weird about __cplusplus. The check I added in D66195 confuses it.
llvm-svn: 368889
Simon Pilgrim [Wed, 14 Aug 2019 17:41:37 +0000 (17:41 +0000)]
Fix cppcheck + MSVC analyzer uninitialized member variable warning. NFCI.
llvm-svn: 368888
JF Bastien [Wed, 14 Aug 2019 17:39:07 +0000 (17:39 +0000)]
Move to C++14
Summary:
I just bumped the minimum compiler versions to support C++14 in D66188.
Following [our process](http://llvm.org/docs/DeveloperPolicy.html#toolchain) and [our previous agreement](http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html), I'm now officially bumping the C++ version to 14 and updating the documentation.
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, chandlerc, thakis, EricWF, jyknight, lhames, JDevlieghere
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66195
llvm-svn: 368887
Roman Lebedev [Wed, 14 Aug 2019 17:27:50 +0000 (17:27 +0000)]
[InstCombine][NFC] Tests for 'try to reuse constant from select in comparison'
https://rise4fun.com/Alive/THl
llvm-svn: 368886
Zoe Carver [Wed, 14 Aug 2019 17:19:25 +0000 (17:19 +0000)]
This commit removes std::shared_ptr::make_shared and std::shared_ptr::allocate_shared as they are not part of the standard. This commit also adds the helper function "__create_with_cntrl_block" which std::allocate_shared and std::make_shared have been updated to use.
llvm-svn: 368885
David Bolvansky [Wed, 14 Aug 2019 17:15:20 +0000 (17:15 +0000)]
[SLC] Dereferenceable annonation - handle valid null pointers
Reviewers: jdoerfert, reames
Reviewed By: jdoerfert
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66161
llvm-svn: 368884
Kristof Umann [Wed, 14 Aug 2019 17:05:55 +0000 (17:05 +0000)]
[CFG] Introduce CFGElementRef, a wrapper that knows it's position in a CFGBlock
Previously, collecting CFGElements in a set was practially impossible, because
both CFGBlock::operator[] and both the iterators returned it by value. One
workaround would be to collect the iterators instead, but they don't really
capture the concept of an element, and elements from different iterator types are incomparable.
This patch introduces CFGElementRef, a wrapper around a (CFGBlock, Index) pair,
and a variety of new iterators and iterator ranges to solve this problem.
I guess you could say that this patch took a couple iterations to get right :^)
Differential Revision: https://reviews.llvm.org/D65196
llvm-svn: 368883
Louis Dionne [Wed, 14 Aug 2019 17:04:31 +0000 (17:04 +0000)]
[libc++] Enable <chrono> ""d and ""y literals for AppleClang 10 and up
AppleClang supports those literals starting in version 10.0.1.
llvm-svn: 368882
Puyan Lotfi [Wed, 14 Aug 2019 17:02:21 +0000 (17:02 +0000)]
[NFC][clang] Moving argument handling: Driver::BuildActions -> handleArguments
This patch simply moves code that already exists into a new function.
Specifically I think it will make the BuildActions code for building a clang
job pipeline easier to read and work with.
Differential Revision: https://reviews.llvm.org/D66058
llvm-svn: 368881
Louis Dionne [Wed, 14 Aug 2019 17:01:08 +0000 (17:01 +0000)]
[libc++] Do not define _LIBCPP_CLANG_VER for non-LLVM Clang
In r292833, we started defining _LIBCPP_CLANG_VER to 0 for Apple Clang.
The result is that AppleClang is detected as being a very old version
of LLVM Clang (version 0), which is obviously incorrect.
I believe this was added so that we don't have to check whether
_LIBCPP_CLANG_VER is defined prior to comparing it with a number
(which can trigger a warning). This commit also fixes the two
places that use the macro correspondingly.
llvm-svn: 368880
Jonas Devlieghere [Wed, 14 Aug 2019 17:00:10 +0000 (17:00 +0000)]
[DebugLine] Improve path handling.
After switching over LLDB's line table parser to libDebugInfo, we
noticed two regressions on the Windows bot. The problem is that when
obtaining a file from the line table prologue, we append paths without
specifying a path style. This leads to incorrect results on Windows for
debug info containing Posix paths:
0x0000000000201000: /tmp\b.c, is_start_of_statement = TRUE
This patch is an attempt to fix that by guessing the path style whenever
possible.
Differential revision: https://reviews.llvm.org/D66227
llvm-svn: 368879
Erik Pilkington [Wed, 14 Aug 2019 16:57:11 +0000 (16:57 +0000)]
[Sema][ObjC] Fix a -Wformat false positive with localizedStringForKey
Only honour format_arg attributes on -[NSBundle localizedStringForKey] when its
argument has a format specifier in it, otherwise its likely to just be a key to
fetch localized strings.
Fixes rdar://
23622446
Differential revision: https://reviews.llvm.org/D27165
llvm-svn: 368878
Simon Pilgrim [Wed, 14 Aug 2019 16:55:34 +0000 (16:55 +0000)]
Fix cppcheck + MSVC analyzer uninitialized member variable warning. NFCI.
llvm-svn: 368877
David Bolvansky [Wed, 14 Aug 2019 16:50:34 +0000 (16:50 +0000)]
[NFC] Updated tests after r368875
llvm-svn: 368876
David Bolvansky [Wed, 14 Aug 2019 16:50:06 +0000 (16:50 +0000)]
[BuildLibCalls] Noalias annotation
Summary: I think this is better solution than annotating callsites in IC/SLC.
Reviewers: jdoerfert
Reviewed By: jdoerfert
Subscribers: MaskRay, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66217
llvm-svn: 368875
Chris Bieneman [Wed, 14 Aug 2019 16:49:52 +0000 (16:49 +0000)]
Document clang-cpp in the release notes for clang
This patch adds a line in the release notes about the new clang-cpp library and the CMake option to force clang to link against it.
llvm-svn: 368874
Bill Wendling [Wed, 14 Aug 2019 16:44:07 +0000 (16:44 +0000)]
Ignore indirect branches from callbr.
Summary:
We can't speculate around indirect branches: indirectbr and invoke. The
callbr instruction needs to be included here.
Reviewers: nickdesaulniers, manojgupta, chandlerc
Reviewed By: chandlerc
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66200
llvm-svn: 368873
Aaron Smith [Wed, 14 Aug 2019 16:39:41 +0000 (16:39 +0000)]
Add missing NativeProcessFactory for lldb-server on Windows
llvm-svn: 368872
Gabor Horvath [Wed, 14 Aug 2019 16:34:56 +0000 (16:34 +0000)]
[LifetimeAnalysis] Fix false negatives of statement local lifetime analysis for some STL implementation
Differential Revision: https://reviews.llvm.org/D66152
llvm-svn: 368871
Simon Atanasyan [Wed, 14 Aug 2019 16:27:07 +0000 (16:27 +0000)]
[mips] Remove redundant case in the test. NFC
llvm-svn: 368870
Simon Atanasyan [Wed, 14 Aug 2019 16:27:00 +0000 (16:27 +0000)]
[mips] Split long lines in the test case file. NFC
llvm-svn: 368869
Thomas Lively [Wed, 14 Aug 2019 16:24:37 +0000 (16:24 +0000)]
[WebAssembly] Stop unrolling SIMD shifts since they are fixed in V8
Summary:
Fixes PR42973. Tests don't change because simd-arith.ll tests behavior
on unimplemented-simd128, which does not include any temporary
workarounds such as the one removed in this revision.
Reviewers: aheejin
Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, dmgreen, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66166
llvm-svn: 368868
Marshall Clow [Wed, 14 Aug 2019 16:21:27 +0000 (16:21 +0000)]
Rework recursive_timed_mutex so that it uses __thread_id instead of using the lower-level __libcpp_thread_id. This is prep for fixing PR42918. Reviewed as https://reviews.llvm.org/D65895
llvm-svn: 368867
Kostya Kortchinsky [Wed, 14 Aug 2019 16:04:01 +0000 (16:04 +0000)]
[scudo][standalone] Add more stats to mallinfo
Summary:
Android requires additional stats in mallinfo. While we can provide
right away the number of bytes mapped (Primary+Secondary), there was
no way to get the number of free bytes (only makes sense for the
Primary since the Secondary unmaps everything on deallocation).
An approximation could be `StatMapped - StatAllocated`, but since we
are mapping in `1<<17` increments for the 64-bit Primary, it's fairly
inaccurate.
So we introduce `StatFree` (note it's `Free`, not `Freed`!), which
keeps track of the amount of Primary blocks currently unallocated.
Reviewers: cferris, eugenis, vitalybuka, hctim, morehouse
Reviewed By: morehouse
Subscribers: delcypher, #sanitizers, llvm-commits
Tags: #llvm, #sanitizers
Differential Revision: https://reviews.llvm.org/D66112
llvm-svn: 368866
Simon Pilgrim [Wed, 14 Aug 2019 16:03:37 +0000 (16:03 +0000)]
Fix cppcheck + MSVC analyzer uninitialized member variable warning. NFCI.
llvm-svn: 368865
Craig Topper [Wed, 14 Aug 2019 15:57:29 +0000 (15:57 +0000)]
[X86] Use PSADBW for v8i8 addition reductions.
Improves the 8 byte case from PR42674.
Differential Revision: https://reviews.llvm.org/D66069
llvm-svn: 368864
David Bolvansky [Wed, 14 Aug 2019 15:35:40 +0000 (15:35 +0000)]
[NFC] Fix testcase for ARMs
llvm-svn: 368863
Yitzhak Mandelbaum [Wed, 14 Aug 2019 15:20:06 +0000 (15:20 +0000)]
[libTooling] Fix code to avoid unused-function warning after r368681.
llvm-svn: 368862
Craig Topper [Wed, 14 Aug 2019 15:10:37 +0000 (15:10 +0000)]
[LangRef] Remove opening [ that was missing a closing ] from call/callbr/invoke syntax.
It looks like this bracket was added when the addrspace was added.
before it. So I think it can jut be removed.
llvm-svn: 368861
Xiangling Liao [Wed, 14 Aug 2019 14:57:25 +0000 (14:57 +0000)]
[NFC][AIX] Change assertion
Address one left comment on https://reviews.llvm.org/D63547. A minor
change for assertion.
Differential Revision: https://reviews.llvm.org/D63547
llvm-svn: 368860
Jinsong Ji [Wed, 14 Aug 2019 14:53:05 +0000 (14:53 +0000)]
[PowerPC][NFC] Add test for build all one vector with different types.
build-vector-tests.ll is far too big, split such type tests for single
buildvector into new file.
llvm-svn: 368859
Craig Topper [Wed, 14 Aug 2019 14:52:39 +0000 (14:52 +0000)]
[X86][CostModel] Adjust the costs of ZERO_EXTEND/SIGN_EXTEND with less than 128-bit inputs
Now that we legalize by widening, the element types here won't change. Previously these were modeled as the elements being widened and then the instruction might become an AND or SHL/ASHR pair. But now they'll become something like a ZERO_EXTEND_VECTOR_INREG/SIGN_EXTEND_VECTOR_INREG.
For AVX2, when the destination type is legal its clear the cost should be 1 since we have extend instructions that can produce 256 bit vectors from less than 128 bit vectors. I'm a little less sure about AVX1 costs, but I think the ones I changed were definitely too high, but they might still be too high.
Differential Revision: https://reviews.llvm.org/D66169
llvm-svn: 368858
Craig Topper [Wed, 14 Aug 2019 14:51:19 +0000 (14:51 +0000)]
[X86] Add llvm_unreachable to a switch that covers all expected values.
llvm-svn: 368857
Jinsong Ji [Wed, 14 Aug 2019 14:16:26 +0000 (14:16 +0000)]
[PowerPC][NFC] Consolidate duplicate XX3Form_SetZero and XX3Form_Zero.
Rename one to XX3Form_SameOp, remove the other one.
llvm-svn: 368856
Jason Liu [Wed, 14 Aug 2019 14:13:11 +0000 (14:13 +0000)]
[AIX] Add call lowering for parameters that could pass onto FPRs
Summary:
This patch adds call lowering functionality to enable passing
parameters onto floating point registers when needed.
Differential Revision: https://reviews.llvm.org/D63654
llvm-svn: 368855
Pavel Labath [Wed, 14 Aug 2019 13:59:04 +0000 (13:59 +0000)]
Revert "raw_ostream: add operator<< overload for std::error_code"
This reverts commit r368849, because it breaks some bots (e.g.
llvm-clang-x86_64-win-fast).
It turns out this is not as NFC as we had hoped, because operator== will
consider two std::error_codes to be distinct even though they both hold
"success" values if they have different categories.
llvm-svn: 368854
Kristof Umann [Wed, 14 Aug 2019 13:51:52 +0000 (13:51 +0000)]
[analyzer][NFC] Prove that we only track the evaluated part of the condition
...because we're working with a BugReporterVisitor, and the non-evaluated part
of the condition isn't in the bugpath.
Differential Revision: https://reviews.llvm.org/D65290
llvm-svn: 368853
Aaron Smith [Wed, 14 Aug 2019 13:49:52 +0000 (13:49 +0000)]
Add missing SetID method to fix Windows build
llvm-svn: 368852
Haojian Wu [Wed, 14 Aug 2019 13:38:52 +0000 (13:38 +0000)]
[clangd][vscode] Surface the error when applying tweaks fails
Summary:
The current behavior for a failed request is just to log it in the
output panel. When applyTweak fails for whatever reason, users usually don't get
informed (unless they open the output panel and dig the log).
this patch is to surface these errors by prompting up a message diag.
Reviewers: ilya-biryukov
Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66211
llvm-svn: 368851
Shaurya Gupta [Wed, 14 Aug 2019 13:37:39 +0000 (13:37 +0000)]
[Tooling] Added DeclStmtClass to ExtractionSemicolonPolicy
Since the DeclStmt range includes the semicolon, it doesn't need a
semicolon at the end during extraction
llvm-svn: 368850
Pavel Labath [Wed, 14 Aug 2019 13:33:28 +0000 (13:33 +0000)]
raw_ostream: add operator<< overload for std::error_code
Summary:
The main motivation for this is unit tests, which contain a large macro
for pretty-printing std::error_code, and this macro is duplicated in
every file that needs to do this. However, the functionality may be
useful elsewhere too.
In this patch I have reimplemented the existing ASSERT_NO_ERROR macros
to reuse the new functionality, but I have kept the macro (as a
one-liner) as it is slightly more readable than ASSERT_EQ(...,
std::error_code()).
Reviewers: sammccall, ilya-biryukov
Subscribers: zturner, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D65643
llvm-svn: 368849
Roman Lebedev [Wed, 14 Aug 2019 13:10:59 +0000 (13:10 +0000)]
[SimplifyCFG] Add "safe abs" test from CMSIS DSP 'abs_with_clamp()'
With -phi-node-folding-threshold=3
this branch would get flattened into select.
See https://reviews.llvm.org/D65148#1629010
llvm-svn: 368847
Fangrui Song [Wed, 14 Aug 2019 12:56:30 +0000 (12:56 +0000)]
[ELF] --gdb-index: fix odd variable name cUs after r365730 and replace lower_bound with partition_point. NFC
llvm-svn: 368845