Sven van Haastregt [Mon, 23 Dec 2019 12:29:01 +0000 (12:29 +0000)]
[OpenCL] Add atomic builtin functions
Add atomic builtin functions from the OpenCL C specification.
Patch by Pierre Gondois and Sven van Haastregt.
Raphael Isemann [Mon, 23 Dec 2019 12:08:22 +0000 (13:08 +0100)]
[lldb][NFC] Simplify ClangExternalASTSourceCallbacks
This class is only used by the ClangASTContext so we might as well
simplify this whole logic by just passing a ClangASTContext instead
of a list of callbacks and a void* pointer. If we ever need this
to support other classes then we can define some interface that
ClangASTContext implements but for now this isn't needed.
I also removed any code for m_callback_find_by_name as this was
always a nullptr in LLDB and removed all overriden implementations
that just redefined the default no-op implementation that the
ExternalASTSource provides.
Also removed the assert.h workarounds.
Kristof Beyls [Mon, 23 Dec 2019 12:01:47 +0000 (12:01 +0000)]
[find_interesting_reviews.py] Add git blame output cache
The majority of the running time of this script tends to be spent in
running git blame on source files touched by patches under review.
By introducing a git blame output cache, some of the git blame commands
don't have to re-run, and the blame information can be retrieved from a
cache.
I've observed that in a typical run matching patches available for
review with potential reviewers, this speeds up the script's running
time by a factor of about 2.5x.
Raphael Isemann [Mon, 23 Dec 2019 11:18:49 +0000 (12:18 +0100)]
[lldb][NFC] Remove unused 'type' parameter in ClangExpressionDeclMap::FindGlobalVariable
We never pass something else than a nullptr as the 'type' so the related code in this function is never reached.
Raphael Isemann [Mon, 23 Dec 2019 11:03:43 +0000 (12:03 +0100)]
[lldb][NFC] Remove wrong and unused ClangASTContext::CopyDecl method
Raphael Isemann [Mon, 23 Dec 2019 10:49:25 +0000 (11:49 +0100)]
[lldb][NFC] Delete all 'else return ...' in CompilerDeclContext.cpp
Raphael Isemann [Mon, 23 Dec 2019 09:55:21 +0000 (10:55 +0100)]
[lldb] Add sanity check to CreateDeclContext and fixed illformed CompilerContext in ClangExpressionDeclMap.
This adds a check that the ClangASTContext actually fits to the
DeclContext that we want to create a CompilerDeclContext for. If
the ClangASTContext (and its associated ASTContext) does not fit
to the DeclContext (that is, the DeclContext wasn't created by the
ASTContext), all computations using this malformed CompilerDeclContext
will yield unpredictable results.
Also fixes the only place that actually hits this assert which is the
construction of a CompilerDeclContext in ClangExpressionDeclMap
where we pass an unrelated ASTContext instead of the ASTContext
of the current expression.
I had to revert my previous change to DWARFASTParserClangTests.cpp
back to using the unsafe direct construction of CompilerDeclContext
as this assert won't work if the DeclContext we pass isn't a valid
DeclContext in the first place.
Georgii Rymar [Fri, 20 Dec 2019 14:02:43 +0000 (17:02 +0300)]
[yaml2obj] - Allow using an arbitrary value for OSABI.
There was no way to set an unsupported or unknown OS ABI.
With this patch it is possible to use any numeric value.
Differential revision: https://reviews.llvm.org/D71765
Georgii Rymar [Fri, 20 Dec 2019 12:51:10 +0000 (15:51 +0300)]
[yaml2obj] - Add support for ELFOSABI_LINUX.
ELFOSABI_LINUX is an alias for ELFOSABI_GNU.
It is not that obvious probably.
Differential revision: https://reviews.llvm.org/D71764
Pavel Labath [Fri, 20 Dec 2019 15:34:55 +0000 (16:34 +0100)]
[lldb] Don't process symlinks deep inside DWARFUnit
Summary:
This code is handling debug info paths starting with /proc/self/cwd,
which is one of the mechanisms people use to obtain "relocatable" debug
info (the idea being that one starts the debugger with an appropriate
cwd and things "just work").
Instead of resolving the symlinks inside DWARFUnit, we can do the same
thing more elegantly by hooking into the existing Module path remapping
code. Since llvm::DWARFUnit does not support any similar functionality,
doing things this way is also a step towards unifying llvm and lldb
dwarf parsers.
Reviewers: JDevlieghere, aprantl, clayborg, jdoerfert
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71770
Georgii Rymar [Fri, 20 Dec 2019 12:40:22 +0000 (15:40 +0300)]
[yaml2obj] - Add testing for OSABI field.
We have no such testing. This makes impossible
to add support for new ELFOSABI_* tags.
Differential revision: https://reviews.llvm.org/D71763
Martin Storsjö [Thu, 19 Dec 2019 12:00:44 +0000 (14:00 +0200)]
[AArch64] [Windows] Use COFF stubs for calls to extern_weak functions
As the extern_weak target might be missing, resolving to the absolute
address zero, we can't use the normal direct PC-relative branch
instructions (as that would result in relocations out of range).
Improve the classifyGlobalFunctionReference method to set
MO_DLLIMPORT/MO_COFFSTUB, and simplify the existing code in
AArch64TargetLowering::LowerCall to use the return value from
classifyGlobalFunctionReference for these cases.
Add code in both AArch64FastISel and GlobalISel/IRTranslator to
bail out for function calls to extern weak functions on windows,
to let SelectionDAG handle them.
This matches what was done for X86 in
6bf108d77a3c.
Differential Revision: https://reviews.llvm.org/D71721
Martin Storsjö [Thu, 19 Dec 2019 12:00:44 +0000 (14:00 +0200)]
[ARM] [Windows] Use COFF stubs for calls to extern_weak functions
As the extern_weak target might be missing, resolving to the absolute
address zero, we can't use the normal direct PC-relative branch
instructions (as that would result in relocations out of range).
Instead check the shouldAssumeDSOLocal method and load the address
from a COFF stub.
This matches what was done for X86 in
6bf108d77a3c.
Differential Revision: https://reviews.llvm.org/D71720
Martin Storsjö [Thu, 19 Dec 2019 11:57:47 +0000 (13:57 +0200)]
[ItaniumCXXABI] Don't mark an extern_weak init function as dso_local on windows
Since
6bf108d77a3c, we try to not mark extern_weak symbols as
dso_local, to allow using COFF stubs for references to those symbols
(as the symbol may be missing, resolving to an absolute address zero,
outside of the current DSO).
Differential Revision: https://reviews.llvm.org/D71716
Georgii Rymar [Wed, 18 Dec 2019 14:49:37 +0000 (17:49 +0300)]
[llvm-readobj][test] - Stop using Inputs/trivial.obj.elf-x86-64.
This rewrites a few tests to stop using the
trivial.obj.elf-x86-64 precompiled object
and removes it.
Differential revision: https://reviews.llvm.org/D71662
Pavel Labath [Mon, 23 Dec 2019 10:06:50 +0000 (11:06 +0100)]
[lldb] Fix a -Wreturn-type gcc warning in ScriptInterpreter.cpp
Pavel Labath [Mon, 23 Dec 2019 10:05:32 +0000 (11:05 +0100)]
[lldb/lua] Fix bindings.test for lua-5.1
string.format("%s", true) only works since lua-5.2. Make the print
statement more portable.
Raphael Isemann [Mon, 23 Dec 2019 09:05:42 +0000 (10:05 +0100)]
[lldb][NFC] Simplify ClangASTContext::GetTranslationUnitDecl
These two functions are just calling their equivalent function
in ASTContext and implicitly convert the result to a
DeclContext* (a parent class of TranslationUnitDecl). This leads
to the absurd situation that we had to cast the result of
GetTranslationUnitDecl to a TranslationUnitDecl*. The only reason
we did this implicit conversion to the parent class
was that the void* conversion for the CompilerDeclContext constructor
was sound (which otherwise would receive a Decl* pointer when
called with a TranslationUnitDecl*).
Now that the CompilerDeclContext constructor is type safe we can
properly implement these functions by actually returning the
right type. Also deletes the static inconvenience method that was
not used anywhere.
Raphael Isemann [Mon, 23 Dec 2019 09:38:12 +0000 (10:38 +0100)]
[lldb] Add a SubsystemRAII that takes care of calling Initialize and Terminate in the unit tests
Summary:
Many of our tests need to initialize certain subsystems/plugins of LLDB such as
`FileSystem` or `HostInfo` by calling their static `Initialize` functions before the
test starts and then calling `::Terminate` after the test is done (in reverse order).
This adds a lot of error-prone boilerplate code to our testing code.
This patch adds a RAII called SubsystemRAII that ensures that we always call
::Initialize and then call ::Terminate after the test is done (and that the Terminate
calls are always in the reverse order of the ::Initialize calls). It also gets rid of
all of the boilerplate that we had for these calls.
Per-fixture initialization is still not very nice with this approach as it would
require some kind of static unique_ptr that gets manually assigned/reseted
from the gtest SetUpTestCase/TearDownTestCase functions. Because of that
I changed all per-fixture setup to now do per-test setup which can be done
by just having the SubsystemRAII as a member of the test fixture. This change doesn't
influence our normal test runtime as LIT anyway runs each test case separately
(and the Initialize/Terminate calls are anyway not very expensive). It will however
make running all tests in a single executable slightly slower.
Reviewers: labath, JDevlieghere, martong, espindola, shafik
Reviewed By: labath
Subscribers: mgorny, rnkovacs, emaste, MaskRay, abidh, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71630
Shengchen Kan [Mon, 23 Dec 2019 08:29:14 +0000 (16:29 +0800)]
[NFC] Style cleanups
1. Remove duplicate function for class name at the beginning of the
comment.
2. Use auto where the type is already obvious from the context.
Raphael Isemann [Mon, 23 Dec 2019 08:59:58 +0000 (09:59 +0100)]
[lldb][NFC] Document CompilerDeclContext constructors
Raphael Isemann [Mon, 23 Dec 2019 08:05:07 +0000 (09:05 +0100)]
[lldb][NFC] Make CompilerDeclContext construction type safe
The CompilerDeclContext constructor takes a void* pointer which
means that all callers of this constructor need to first explicitly
convert all pointers to clang::DeclContext*. This causes that we
for example can't just pass a TranslationUnitDecl* to the constructor without
first casting it to its parent class (as it inherits from both
Decl and DeclContext so the void* pointer is actually a Decl*).
This patch introduces a utility function in the ClangASTContext
which gets rid of the requirement to cast all pointers to
clang::DeclContext. Also moves all constructor calls to use this
function instead which is NFC (beside the change in
DWARFASTParserClangTests.cpp).
QingShan Zhang [Mon, 23 Dec 2019 07:41:31 +0000 (07:41 +0000)]
[Power9] Remove the PPCISD::XXREVERSE as it has completely the same semantics of ISD::BSWAP
The custom node PPCISD::XXREVERSE has completely the same semantics of generic node ISD::BSWAP.
We need to clean up it as we have the combine rules for bswap in the base class, while nothing for xxreverse.
Differential Revision: https://reviews.llvm.org/D70657
Simon Pilgrim [Mon, 23 Dec 2019 07:27:05 +0000 (07:27 +0000)]
Fix case style warnings in DIBuilder. NFC.
Dinar Temirbulatov [Mon, 23 Dec 2019 07:21:18 +0000 (08:21 +0100)]
[SLP] Replace NeedToGather variable with enum.
QingShan Zhang [Mon, 23 Dec 2019 06:59:14 +0000 (06:59 +0000)]
[NFC][Test][PowerPC] Add more tests for 'and mask'
Saar Raz [Mon, 23 Dec 2019 06:37:35 +0000 (08:37 +0200)]
[Concepts] Constrained partial specializations and function overloads.
Added support for constraint satisfaction checking and partial ordering of constraints in constrained partial specialization and function template overloads.
Re-commit after fixing another crash (added regression test).
Differential Revision: https://reviews.llvm.org/D41910
Jonas Devlieghere [Mon, 23 Dec 2019 05:35:05 +0000 (21:35 -0800)]
[lldb/ScriptInterpreter] Remove can_reload which is always true (NFC)
The `-r` option for `command script import` is there for legacy
compatibility, however the can_reload flag is always set to true. This
patch removes the flag and any code that relies on it being false.
Saleem Abdulrasool [Mon, 23 Dec 2019 04:45:46 +0000 (20:45 -0800)]
build: use `find_package(Python3)` rather than `PYTHON_HOME`
The behaviour of `PYTHON_HOME` can be emulated by setting
`Python3_EXECUTABLE` to the absolute path instead of the custom variable
now that we can find the python interpreter.
Jim Lin [Mon, 23 Dec 2019 03:24:20 +0000 (11:24 +0800)]
[AVR] Fix codegen for rotate instructions
Summary:
This patch introduces the ROLBRd and RORBRd pseudo-instructions,
which implemenent the "traditional" rotate operations; instead of
the AVR rotate instructions that use the carry bit.
The code is not optimized at all. Especially when dealing with
loops of rotate instructions, this codegen should be improved some
day.
Related bug: 41358 <https://bugs.llvm.org/show_bug.cgi?id=41358>
//Note//: This is my first submitted patch.
Reviewers: dylanmckay, Jim
Reviewed By: dylanmckay
Subscribers: hiraditya, llvm-commits, dylanmckay, dsprenkels
Tags: #llvm
Patched by dsprenkels (Daan Sprenkels)
Differential Revision: https://reviews.llvm.org/D60365
Kai Luo [Mon, 23 Dec 2019 02:06:40 +0000 (02:06 +0000)]
[PowerPC] Exploit `vrl(b|h|w|d)` to perform vector rotation
Summary:
Currently, we set legalization action of `ISD::ROTL` vectors as
`Expand` in `PPCISelLowering`. However, we can exploit `vrl(b|h|w|d)`
to lower `ISD::ROTL` directly.
Differential Revision: https://reviews.llvm.org/D71324
Reid Kleckner [Mon, 23 Dec 2019 03:00:48 +0000 (19:00 -0800)]
[AST] Add missing MultiplexConsumer::CompleteExternalDeclaration
Yonghong Song [Fri, 22 Nov 2019 16:45:37 +0000 (08:45 -0800)]
reland "[DebugInfo] Support to emit debugInfo for extern variables"
Commit
d77ae1552fc21a9f3877f3ed7e13d631f517c825
("[DebugInfo] Support to emit debugInfo for extern variables")
added deebugInfo for extern variables for BPF target.
The commit is reverted by
891e25b02d760d0de18c7d46947913b3166047e7
as the committed tests using %clang instead of %clang_cc1 causing
test failed in certain scenarios as reported by Reid Kleckner.
This patch fixed the tests by using %clang_cc1.
Differential Revision: https://reviews.llvm.org/D71818
Shengchen Kan [Mon, 23 Dec 2019 02:22:02 +0000 (10:22 +0800)]
[NFC] Remove unnecessary blank and rename align-branch-64-5b.s to align-branch-64-6a.s
czhengsz [Mon, 23 Dec 2019 01:58:19 +0000 (20:58 -0500)]
[SCEV] add testcase for get accurate range for addrecexpr with nuw flag
Fangrui Song [Mon, 23 Dec 2019 00:55:38 +0000 (16:55 -0800)]
[ELF] Delete a redundant R_HINT check from isStaticLinkTimeConstant(). NFC
scanReloc() returns when it sees an R_HINT.
Jonas Devlieghere [Mon, 23 Dec 2019 00:46:01 +0000 (16:46 -0800)]
[lldb/ScriptInterpreter] Unify error message for command script import
Rather than checking for Python explicitly, let the script interpreter
handle things and print an error if the functionality is not supported.
Carl Ritson [Fri, 20 Dec 2019 03:51:50 +0000 (12:51 +0900)]
[DAGCombiner] Check term use before applying aggressive FSUB optimisations
Summary:
Without this check unnecessary FMA instructions are generated when the FSUB terms are reused.
This also has the side-effect that the same value is computed to different levels of precision, which can create undesirable effects if the results are used together in subsequent computation.
Reviewers: arsenm, nhaehnle, foad, tpr, dstuttard, spatel
Reviewed By: arsenm
Subscribers: jvesely, wdng, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71656
Saleem Abdulrasool [Sun, 22 Dec 2019 21:57:46 +0000 (13:57 -0800)]
build: improve python checks for Windows
Require a newer CMake on Windows to use the Python3 support that is
packaged in CMake. This version is able to check both 32-bit and 64-bit
versions and will setup everything properly without the user needing to
specify PYTHON_HOME. This enables building lldb's python bindings on
Windows under Azure's CI again.
Reid Kleckner [Sun, 22 Dec 2019 20:54:06 +0000 (12:54 -0800)]
Revert "[DebugInfo] Support to emit debugInfo for extern variables"
This reverts commit
d77ae1552fc21a9f3877f3ed7e13d631f517c825.
The tests committed along with this change do not pass, and should be
changed to use %clang_cc1.
Reid Kleckner [Sun, 22 Dec 2019 19:37:54 +0000 (11:37 -0800)]
Revert "[Concepts] Constrained partial specializations and function overloads."
This reverts commit
d3f5769d5e93b30d4a8b4696381d5e4a304992fa.
Causes crashes on Chromium. Have reproducer, will reduce and send along.
Valentin Churavy [Sun, 22 Dec 2019 19:25:50 +0000 (14:25 -0500)]
[SelectionDAG] Copy FP flags when visiting a binary instruction.
Summary:
We noticed in Julia that the sequence below no longer turned into
a sequence of FMA instructions in LLVM 7+, but it did in LLVM 6.
```
%29 = fmul contract <4 x double> %wide.load, %wide.load16
%30 = fmul contract <4 x double> %wide.load13, %wide.load17
%31 = fmul contract <4 x double> %wide.load14, %wide.load18
%32 = fmul contract <4 x double> %wide.load15, %wide.load19
%33 = fadd fast <4 x double> %vec.phi, %29
%34 = fadd fast <4 x double> %vec.phi10, %30
%35 = fadd fast <4 x double> %vec.phi11, %31
%36 = fadd fast <4 x double> %vec.phi12, %32
```
Unlike Clang, Julia doesn't set the `unsafe-fp-math=true` function
attribute, but rather emits more local instruction flags.
This partially undoes https://reviews.llvm.org/D46854 and if required I can try to minimize the test further.
Reviewers: spatel, mcberg2017
Reviewed By: spatel
Subscribers: chriselrod, merge_guards_bot, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71495
Reid Kleckner [Sun, 22 Dec 2019 19:17:23 +0000 (11:17 -0800)]
Revert "[ARM][TypePromotion] Enable by default"
This reverts commit
ee7579409b7d940c4e1314d126e900db30c4edff.
It causes crashes during ThinLTO. I suspect the issue is related to
races on the global TypeSize variable, which is 80 at the time of the
crash.
Craig Topper [Sun, 22 Dec 2019 18:56:15 +0000 (10:56 -0800)]
[X86] Autogenerate complete checks. NFC
Craig Topper [Sun, 22 Dec 2019 18:51:55 +0000 (10:51 -0800)]
[X86] Fix typo of intrinsic name in test cases. NFC
These said test_f32_olt_s for the type of an overloaded intrinsic.
But the parser doesn't use that part of the name and just uses
the types of the arguments.
Mark de Wever [Sun, 22 Dec 2019 18:39:28 +0000 (19:39 +0100)]
[AMDGPU] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71815
Mark de Wever [Sun, 22 Dec 2019 18:35:02 +0000 (19:35 +0100)]
[Hexagon] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71814
Mark de Wever [Sun, 22 Dec 2019 18:27:44 +0000 (19:27 +0100)]
[NVPTX] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Also removed the top-level const as requested by Aaron Ballman in similar
patches.
Differential Revision: https://reviews.llvm.org/D71812
Mark de Wever [Sun, 22 Dec 2019 18:23:57 +0000 (19:23 +0100)]
[PowerPC] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71811
Mark de Wever [Sun, 22 Dec 2019 18:20:17 +0000 (19:20 +0100)]
[Transforms] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71810
Mark de Wever [Sun, 22 Dec 2019 18:13:34 +0000 (19:13 +0100)]
[Analyzer] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71809
Mark de Wever [Sun, 22 Dec 2019 18:11:17 +0000 (19:11 +0100)]
[Tools] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71808
Mark de Wever [Sun, 22 Dec 2019 17:58:32 +0000 (18:58 +0100)]
[TableGen] Fixes -Wrange-loop-analysis warnings
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D71807
Philip Reames [Sun, 22 Dec 2019 16:59:35 +0000 (08:59 -0800)]
[Test] Add examples of problematic assembler auto-padding
This is in the context of the automatic padding work for the jcc erratum mitigation. These are example cases we need to *not* pad for correctness. Exact mechanism to suppress is still TBD, but saving the tests which have come up.
Sanjay Patel [Sun, 22 Dec 2019 15:05:28 +0000 (10:05 -0500)]
[InstCombine] enhance fold for copysign with known sign arg
This is another optimization suggested in PRPR44153:
https://bugs.llvm.org/show_bug.cgi?id=44153
Eric Astor [Sun, 22 Dec 2019 05:09:37 +0000 (00:09 -0500)]
[ms] [X86] Use "P" modifier on operands to call instructions in inline X86 assembly.
Summary:
This is documented as the appropriate template modifier for call operands.
Fixes PR44272, and adds a regression test.
Also adds support for operand modifiers in Intel-style inline assembly.
Reviewers: rnk
Reviewed By: rnk
Subscribers: merge_guards_bot, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D71677
Sanjay Patel [Sat, 21 Dec 2019 15:33:58 +0000 (10:33 -0500)]
[AArch64] match splat of bitcasted extract subvector to DUPLANE
This is another potential regression exposed by D63815.
Here we peek through a bitcast to find an extract subvector and
scale the splat offset based on that:
splat (bitcast (extract X, C)), LaneC --> duplane (bitcast X), LaneC'
Differential Revision: https://reviews.llvm.org/D71672
Raphael Isemann [Sun, 22 Dec 2019 13:00:26 +0000 (14:00 +0100)]
[lldb] Remove unused CompilerDeclContext::IsStructUnionOrClass
Bruno Ricci [Sun, 22 Dec 2019 12:41:14 +0000 (12:41 +0000)]
[Sema] SequenceChecker: C++17 sequencing rules for built-in operators <<, >>, .*, ->*, =, op=
Implement the C++17 sequencing rules for the built-in operators <<, >>, .*,
->*, = and op=.
Differential Revision: https://reviews.llvm.org/D58297
Reviewed By: rsmith
Bruno Ricci [Sun, 22 Dec 2019 12:27:31 +0000 (12:27 +0000)]
[Sema] SequenceChecker: Fix handling of operator ||, && and ?:
The current handling of the operators ||, && and ?: has a number of false
positive and false negative. The issues for operator || and && are:
1. We need to add sequencing regions for the LHS and RHS as is done for the
comma operator. Not doing so causes false positives in expressions like
`((a++, false) || (a++, false))` (from PR39779, see PR22197 for another
example).
2. In the current implementation when the evaluation of the LHS fails, the RHS
is added to a worklist to be processed later. This results in false negatives
in expressions like `(a && a++) + a`.
Fix these issues by introducing sequencing regions for the LHS and RHS, and by
not deferring the visitation of the RHS.
The issues with the ternary operator ?: are similar, with the added twist that
we should not warn on expressions like `(x ? y += 1 : y += 2)` since exactly
one of the 2nd and 3rd expression is going to be evaluated, but we should still
warn on expressions like `(x ? y += 1 : y += 2) = y`.
Differential Revision: https://reviews.llvm.org/D57747
Reviewed By: rsmith
Bruno Ricci [Sun, 22 Dec 2019 12:07:26 +0000 (12:07 +0000)]
[Sema] SequenceChecker: Add some comments + related small NFCs
NFCs factored out of the following patches:
- Change all of the `Expr *` to `const Expr *` in SequenceChecker for
const-correctness. SequenceChecker should not modify AST nodes.
- Add some comments.
- clang-format
Differential Revision: https://reviews.llvm.org/D57659
Reviewed By: xbolva00
Saar Raz [Sun, 22 Dec 2019 07:35:53 +0000 (09:35 +0200)]
[Concepts] Constrained partial specializations and function overloads.
Added support for constraint satisfaction checking and partial ordering of constraints in constrained partial specialization and function template overloads.
Re-commit after fixing some crashes and warnings.
Differential Revision: https://reviews.llvm.org/D41910
Martin Storsjö [Sun, 22 Dec 2019 08:01:09 +0000 (10:01 +0200)]
[LLDB] Fix building without SWIG
Previously, SWIG was only a hard dependency if python bindings were
enabled.
Since
bf03e17c570171c7a52117fe63ace89d58f328d5, scripts/CMakeLists.txt
is included unconditionally, while that file adds the hard dependency
on SWIG.
Instead, only include that file if either python or lua bindings are
enabled.
Fangrui Song [Sun, 22 Dec 2019 07:18:24 +0000 (23:18 -0800)]
[Driver] Allow -mnop-mcount for SystemZ and -mfentry for X86 and SystemZ
gcc/config/{i386,s390} support -mnop-mcount. We currently only support
-mnop-mcount for SystemZ. The function attribute "mnop-mcount" is
ignored on other targets.
gcc/config/{i386,s390} support -mfentry. We currently only support
-mfentry for X86 and SystemZ. TargetOpcode::FENTRY_CALL is not handled
on other targets.
% clang -target aarch64 -pg -mfentry a.c -c
fatal error: error in backend: Not supported instr: <MCInst 21>
-mfentry, -mrecord-mcount, and -mnop-mcount were invented for Linux
ftrace. Linux uses $(call cc-option-yn,-mrecord-mcount) to detect if the
specific feature is available. Reject unsupported features so that Linux
build system will not wrongly consider them available and cause
build/runtime failures.
Note, GCC has stricter checks that we do not implement, e.g. -fpic/-fpie
-fnop-mcount is not allowed on x86, -fpic/-fpie -mfentry is not allowed
on x86-32.
David Blaikie [Sun, 22 Dec 2019 07:04:45 +0000 (23:04 -0800)]
DebugInfo: Remove out of date comment
Fangrui Song [Sun, 22 Dec 2019 06:22:59 +0000 (22:22 -0800)]
[Driver] Verify -mrecord-mcount in Driver, instead of CodeGen after D71627
GCC's x86 and s390 ports support -mrecord-mcount. Other ports reject the
option.
aarch64-linux-gnu-gcc: error: unrecognized command line option ‘-mrecord-mcount’
Allowing this option can cause failures when building Linux kernel for
aarch64, powerpc64, etc, which will think the feature is available if
the clang command returns 0.
Jonas Devlieghere [Sun, 22 Dec 2019 06:33:01 +0000 (22:33 -0800)]
[lldb/ScriptInterpreter] Fix stale/bogus error messages
Fix the nonsensical error messages for when breakpoint and watchpoint
callbacks are not supported.
Jonas Devlieghere [Sun, 22 Dec 2019 06:20:03 +0000 (22:20 -0800)]
[lldb/Commands] Honor the scripting language passed (2/2)
This ensures that watchpoint command honors the scripting language
passed with `-s`. Currently the argument ignores the actual language and
only uses it to differentiate between lldb and script commands.
Jonas Devlieghere [Sun, 22 Dec 2019 05:54:44 +0000 (21:54 -0800)]
[lldb/Lua] Add missing boiler plate to ScriptInterpreter.
- Fix enum entry order.
- Fix missing enum case in CommandObjectBreakpointCommand.
- Add Lua entry to swtich in LanguageToString and simplify the code.
LLVM GN Syncbot [Sun, 22 Dec 2019 02:15:02 +0000 (02:15 +0000)]
[gn build] Port
7376d9eb389
Nico Weber [Sun, 22 Dec 2019 02:14:26 +0000 (21:14 -0500)]
[gn build] fixup after
c3d13d9c56
Jonas Devlieghere [Sun, 22 Dec 2019 02:11:40 +0000 (18:11 -0800)]
[lldb/Commands] Use the default scripting langauge for BP functions
When a function is used as a breakpoint command, use to the debugger's
default scripting language, unless a language is explicitly specified.
Nico Weber [Sun, 22 Dec 2019 02:10:00 +0000 (21:10 -0500)]
[gn build] fold Basic:version into Basic
This now defines HAVE_VCS_VERSION_INC for all files in Basic,
but now the BUILD.gn file has only a single "sources" field again,
and the automerger requires that. Having the automerger work for
clang/lib/Basic is a very nice to have, and the downside seems tiny.
Yaxun (Sam) Liu [Fri, 6 Dec 2019 17:29:31 +0000 (12:29 -0500)]
[NFC] Separate getLastArgIntValue to Basic
getLastArgIntValue is a useful utility function to get command line argument as an integer.
Currently it is in Frontend so that it can only be used by clang -cc1. Move it to basic so
that it can also be used by clang driver.
Differential Revision: https://reviews.llvm.org/D71080
Jonas Devlieghere [Sun, 22 Dec 2019 01:28:36 +0000 (17:28 -0800)]
[lldb/Commands] Honor the scripting language passed
This ensures that breakpoint command honors the scripting language
passed with `-s`. Currently the argument ignores the actual language and
only uses it to differentiate between lldb and script commands.
Jonas Devlieghere [Sun, 22 Dec 2019 01:21:30 +0000 (17:21 -0800)]
[lldb/Commands] Fix bogus enum entry and add Lua (NFC)
Fixes a bogus enum value for the scripting language options, adds an
entry for Lua and refactored the code to use an exhaustive switch.
Jonas Devlieghere [Sun, 22 Dec 2019 01:11:12 +0000 (17:11 -0800)]
[lldb/Core] Support asking the debugger for a specific script interpreter
Rather than holding on to one script interpreter, it should be possible
to request a script interpreter for a specific scripting language. The
GetScriptInterpreter method now takes an optional scripting language
argument.
(NFC)
Jonas Devlieghere [Sat, 21 Dec 2019 22:58:50 +0000 (14:58 -0800)]
[Lldb/Lua] Persist Lua state across script interpreter calls.
Don't create a new lua state on every operation. Share a single state
across the lifetime of the script interpreter. Add simple locking to
prevent two threads from modifying the state concurrently.
Raphael Isemann [Sat, 21 Dec 2019 22:27:27 +0000 (23:27 +0100)]
[lldb] Fix windows build after getASTContext() change
Raphael Isemann [Sat, 21 Dec 2019 21:40:52 +0000 (22:40 +0100)]
[lldb][NFC] Return a reference from ClangASTContext::getASTContext and remove dead nullptr checks
ClangASTContext::getASTContext() currently returns a ptr but we have an assert there since a
while that the ASTContext is not a nullptr. This causes that we still have a lot of code
that is doing nullptr checks on the result of getASTContext() which is all unreachable code.
This patch changes the return value to a reference to make it clear this can't be a nullptr
and deletes all the nullptr checks.
Jonas Devlieghere [Sun, 8 Dec 2019 23:32:57 +0000 (15:32 -0800)]
[Lldb/Lua] Generate Lua Bindings
This patch uses SWIG to generate the Lua bindings for the SB API. It
covers most of the API, but some methods require a type map similar to
Python.
Discussion on the mailing list:
http://lists.llvm.org/pipermail/lldb-dev/2019-December/015812.html
Differential revision: https://reviews.llvm.org/D71235
Artem Dergachev [Sat, 21 Dec 2019 18:57:03 +0000 (10:57 -0800)]
[analyzer] exploded-graph-rewriter: Fix string encodings in python3.
Makes sure that the script works fine both in python2 and python3.
Patch by Pavel Samolysov!
Differential Revision: https://reviews.llvm.org/D71746
Stepan Dyatkovskiy [Sat, 21 Dec 2019 18:12:07 +0000 (22:12 +0400)]
[NFC] test commit reverted
Stepan Dyatkovskiy [Sat, 21 Dec 2019 18:11:34 +0000 (22:11 +0400)]
[NFC] test commit
John Baldwin [Sat, 21 Dec 2019 17:59:37 +0000 (17:59 +0000)]
[lld][RISCV] Use an e_flags of 0 if there are only binary input files.
Summary:
If none of the input files are ELF object files (for example, when
generating an object file from a single binary input file via
"-b binary"), use a fallback value for the ELF header flags instead
of crashing with an assertion failure.
Reviewers: MaskRay, ruiu, espindola
Reviewed By: MaskRay, ruiu
Subscribers: kevans, grimar, emaste, arichardson, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, Jim, lenary, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits, jrtc27
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71101
Simon Pilgrim [Sat, 21 Dec 2019 17:45:30 +0000 (17:45 +0000)]
Fix "result of 32-bit shift implicitly converted to 64 bits" warning. NFC.
Simon Pilgrim [Sat, 21 Dec 2019 17:32:00 +0000 (17:32 +0000)]
Fix Wpedantic 'extra semicolon' warning. NFC.
Michael Liao [Sat, 21 Dec 2019 16:09:30 +0000 (11:09 -0500)]
Fix `-Wunused-variable` warning. NFC.
Sanjay Patel [Sat, 21 Dec 2019 15:31:21 +0000 (10:31 -0500)]
[InstCombine] check alloc size in bitcast of geps fold (PR44321)
We missed a constraint in D44833
when folding a bitcast into a GEP with vector/array types.
If the alloc sizes specified by the datalayout don't match,
this could miscompile as shown in:
https://bugs.llvm.org/show_bug.cgi?id=44321
Differential Revision: https://reviews.llvm.org/D71771
Sanjay Patel [Fri, 20 Dec 2019 22:24:53 +0000 (17:24 -0500)]
[SimplifyLibCalls] require fast-math-flags for pow(X, -0.5) transforms
As discussed in PR44330:
https://bugs.llvm.org/show_bug.cgi?id=44330
...the transform from pow(X, -0.5) libcall/intrinsic to
reciprocal square root can result in small deviations from
the expected result due to differences in the pow()
implementation and/or the extra rounding step from the division.
This patch proposes to allow that difference with either the
'approximate functions' or 'reassociate' FMF:
http://llvm.org/docs/LangRef.html#fast-math-flags
In practice, this likely means that the code is compiled with
all of 'fast' (-ffast-math), but I have preserved the existing
specializations for -0.0/-INF that enable generating safe code
if those special values are allowed simultaneously with
allowing approximation/reassociation.
The question about whether a similar restriction is needed for
the non-reciprocal case -- pow(X, 0.5) -- is deferred. That
transform is allowed without FMF currently, and this patch does
not change that behavior.
Differential Revision: https://reviews.llvm.org/D71706
Raphael Isemann [Sat, 21 Dec 2019 14:26:24 +0000 (15:26 +0100)]
[lldb][NFC] Remove all ASTContext getter wrappers from ClangASTContext
Their naming is misleading as they only return the
ClangASTContext-owned variables. For ClangASTContext instances constructed
for a given clang::ASTContext they silently generated duplicated instances
(e.g., a second IdentifierTable) that were essentially unusable.
This removes all these getters as they are anyway not very useful in comparison
to just calling the clang::ASTContext getters. The initialization
code has been moved to the CreateASTContext initialization method so that all
code for making our own clang::ASTContext is in one place.
Florian Hahn [Sat, 21 Dec 2019 13:47:08 +0000 (14:47 +0100)]
[AArch64] Respect reserved registers while renaming in LdSt opt.
We cannot pick reserved registers as rename registers.
Fixes https://bugs.llvm.org/show_bug.cgi?id=44358
Mark de Wever [Sat, 21 Dec 2019 10:20:49 +0000 (11:20 +0100)]
[Analyzer] Use a reference in a range-based for
This avoids unneeded copies when using a range-based for loops.
This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.
Differential Revision: https://reviews.llvm.org/D70869
Mark de Wever [Sat, 21 Dec 2019 13:47:52 +0000 (14:47 +0100)]
[Wdocumentation] Implement \anchor
Differential revision: https://reviews.llvm.org/D69223
Pavel Labath [Sat, 21 Dec 2019 13:19:49 +0000 (14:19 +0100)]
[lldb] disable thread-step-out-ret-addr-check on windows
I'm unable to get this test working there.
Pavel Labath [Sat, 21 Dec 2019 12:33:09 +0000 (13:33 +0100)]
[lldb] One more attempt to fix thread-step-out-ret-addr-check on windows
David Zarzycki [Sat, 21 Dec 2019 11:34:36 +0000 (06:34 -0500)]
Add missing `REQUIRES: hexagon-registered-target`
After
d567b0ba841d4b6f4b0d906da350a3bb2b2f769f, the test suite no longer
passes if hexagon is disabled.
Pavel Labath [Sat, 21 Dec 2019 11:25:02 +0000 (12:25 +0100)]
[lldb] Force the preprocessor to run in thread-step-out-ret-addr-check.test
It does not seem to run automatically on windows.
Stephen Kelly [Wed, 18 Dec 2019 22:35:46 +0000 (22:35 +0000)]
Customize simplified dumping and matching of LambdaExpr
Reviewers: aaron.ballman
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D71680
Pavel Labath [Sat, 21 Dec 2019 10:33:42 +0000 (11:33 +0100)]
[lldb] Fix -Wstringop-truncation in PythonReadline.cpp
The size is known and the truncation is deliberate -- use memcpy instead
of strncpy.