Sourabh Singh Tomar [Tue, 24 Dec 2019 06:08:38 +0000 (11:38 +0530)]
[DebugInfo] Fix v4 macinfo for dwo files.
Dwo files must contain have DW_AT_macro_info attribute, when macro information is emitted. Adjusted the test case
for the same.
Fangrui Song [Tue, 24 Dec 2019 06:20:29 +0000 (22:20 -0800)]
[SelectionDAG] Change SelectionDAGISel::{funcInfo,SDB} to use unique_ptr
CurDAG is referenced more than 2000 times and used in many gerated .cpp
files. Don't touch it for now.
Fangrui Song [Tue, 24 Dec 2019 05:42:41 +0000 (21:42 -0800)]
[SelectionDAG] Don't repeatedly add a node to the worklist in ComputeLiveOutVRegInfo. NFC
For sqlite3 amalgram, this decreases the number of Worklist.push_back calls (603084) by 10%.
Saleem Abdulrasool [Tue, 24 Dec 2019 04:20:20 +0000 (20:20 -0800)]
test: correct flags for Windows
Adjust the flags for the LLDB test on Windows. This test was previously
not running, but after the fix to the python detection, we now run this.
River Riddle [Tue, 24 Dec 2019 03:34:25 +0000 (19:34 -0800)]
NFC: Rename printOptionValue to printValue to fix MSVC build.
MSVC has trouble resolving the static 'printOptionValue' from the method on llvm::cl::opt/list. This change renames the static method to avoid this conflict.
David Blaikie [Sun, 22 Dec 2019 07:05:35 +0000 (23:05 -0800)]
DebugInfo: Support dumping any exprloc as an expression
Now that DWARFv5 provides a way to identify DWARF expressions based on
form, rather than only by attribute - use it to always provide pretty
printing for any exprloc attribute, not only the attributes known to
contain expressions.
Mehdi Amini [Tue, 24 Dec 2019 02:47:41 +0000 (02:47 +0000)]
Import MLIR into the LLVM tree
Igor Kudrin [Fri, 20 Dec 2019 10:36:52 +0000 (17:36 +0700)]
[DWARF] Check that all fields of a Unit Header are read.
Tests "dwarfdump-rnglists-dwarf64.s" and "dwarfdump-rnglists.s" were
malformed because they had missing required DWO ID fields in split
compilation unit headers. The patch fixes the tests and checks
the reading of a unit header more thoroughly.
Differential Revision: https://reviews.llvm.org/D71704
Mehdi Amini [Tue, 24 Dec 2019 02:23:01 +0000 (02:23 +0000)]
Adjust some MLIR paths and docs
Jonas Devlieghere [Tue, 24 Dec 2019 02:03:35 +0000 (18:03 -0800)]
Revert "[lldb] Don't process symlinks deep inside DWARFUnit"
This temporarily reverts commit
3cfb6677b2aa20f782d9bb0f7958e61f5a976c16
because it breaks TestCompDirSymLink.py on macOS.
Mehdi Amini [Tue, 24 Dec 2019 01:43:20 +0000 (17:43 -0800)]
Remove pybind11-based bindings
These bindings were added as an experiment, and never had a CMake configuration.
We will bring back python bindings after picking carefully our dependency and the kind
of layering we expect to expose for these bindings.
PiperOrigin-RevId:
286963717
River Riddle [Mon, 23 Dec 2019 23:54:55 +0000 (15:54 -0800)]
Refactor the way that pass options are specified.
This change refactors pass options to be more similar to how statistics are modeled. More specifically, the options are specified directly on the pass instead of in a separate options class. (Note that the behavior and specification for pass pipelines remains the same.) This brings about several benefits:
* The specification of options is much simpler
* The round-trip format of a pass can be generated automatically
* This gives a somewhat deeper integration with "configuring" a pass, which we could potentially expose to users in the future.
PiperOrigin-RevId:
286953824
River Riddle [Mon, 23 Dec 2019 22:45:01 +0000 (14:45 -0800)]
NFC: Replace ValuePtr with Value and remove it now that Value is value-typed.
ValuePtr was a temporary typedef during the transition to a value-typed Value.
PiperOrigin-RevId:
286945714
Gabor Horvath [Mon, 23 Dec 2019 18:01:00 +0000 (10:01 -0800)]
[CFG] Fix an assertion failure with static initializers
The CFGBlock::getLastCondition was not prepared for static initializer
branches.
This patch also revamps CFG unit tests. Earlier the lifetime of the AST
was smaller than the CFG. So all the AST pointers within the CFG blocks
were dangling. This was OK, since none of the tests dereferenced those
pointers. This was, however, a timed bomb. There were patches in the
past that were reverted partially due to this problem.
Differential revision: https://reviews.llvm.org/D71791
River Riddle [Mon, 23 Dec 2019 21:05:38 +0000 (13:05 -0800)]
Change the `notifyRootUpdated` API to be transaction based.
This means that in-place, or root, updates need to use explicit calls to `startRootUpdate`, `finalizeRootUpdate`, and `cancelRootUpdate`. The major benefit of this change is that it enables in-place updates in DialectConversion, which simplifies the FuncOp pattern for example. The major downside to this is that the cases that *may* modify an operation in-place will need an explicit cancel on the failure branches(assuming that they started an update before attempting the transformation).
PiperOrigin-RevId:
286933674
Lei Zhang [Mon, 23 Dec 2019 21:04:34 +0000 (13:04 -0800)]
Update SPIR-V.md
This CL updates SPIR-V.md to reflect recent developments
in the SPIR-V dialect and its conversions.
Along the way, also updates the doc for define_inst.sh.
PiperOrigin-RevId:
286933546
River Riddle [Mon, 23 Dec 2019 20:36:20 +0000 (12:36 -0800)]
Resubmit: ReImplement the Value classes as value-typed objects wrapping an internal pointer storage.
This will enable future commits to reimplement the internal implementation of OpResult without needing to change all of the existing users. This is part of a chain of commits optimizing the size of operation results.
PiperOrigin-RevId:
286930047
MLIR Team [Mon, 23 Dec 2019 19:49:50 +0000 (11:49 -0800)]
Automated rollback of commit
f603a50109107b447b835dac11f0eb541288393e
PiperOrigin-RevId:
286924059
River Riddle [Mon, 23 Dec 2019 19:18:53 +0000 (11:18 -0800)]
ReImplement the Value classes as value-typed objects wrapping an internal pointer storage.
This will enable future commits to reimplement the internal implementation of OpResult without needing to change all of the existing users. This is part of a chain of commits optimizing the size of operation results.
PiperOrigin-RevId:
286919966
Mehdi Amini [Mon, 23 Dec 2019 17:35:36 +0000 (09:35 -0800)]
Adjust License.txt file to use the LLVM license
PiperOrigin-RevId:
286906740
Sanjay Patel [Mon, 23 Dec 2019 22:54:31 +0000 (17:54 -0500)]
[InstCombine] add test for copysign; NFC
Sanjay Patel [Mon, 23 Dec 2019 22:14:02 +0000 (17:14 -0500)]
[InstCombine] add tests for not(select ...); NFC
Siva Chandra Reddy [Thu, 5 Dec 2019 07:17:14 +0000 (23:17 -0800)]
Add implementations of POSIX mmap and munmap functions.
Summary:
A set of of linux x86_64 internal syscall helpers have also been added.
This change does not try to be perfect with respect to OS and machine
abstractions. A TODO note has been added at places where such abstractions
would help and make the arrangement scalable and cleaner. Addressing the
TODOs and building such abstractions is not in the scope of this change.
It is hoped that follow up changes cleaning up the problem areas and
addressing the TODOs will better illustrate the need for the changes.
This change also does not try to imitate mmap and munmap implementations
of other libcs. The idea here is to put in the bare minimum required to
obtain a working mmap and munmap, and then add the rest of the
functionality on an as needed basis.
Reviewers: abrachet, phosek, stanshebs, theraven
Subscribers: mgorny, MaskRay, jfb, libc-commits
Tags: #libc-project
Differential Revision: https://reviews.llvm.org/D71634
Alex Langford [Mon, 23 Dec 2019 21:37:56 +0000 (13:37 -0800)]
[lldb/CMake] Always set a value for find_package when finding optional dependencies
Because this is a macro, previous values of `find_package` persist
between calls. This means that if it is set to TRUE on any run, all
subsequent runs will have find_package set to TRUE regardles of whether
or not they should be.
Florian Hahn [Mon, 23 Dec 2019 20:52:39 +0000 (21:52 +0100)]
[Docs] Fix sphinx build errors.
Fangrui Song [Mon, 23 Dec 2019 20:38:37 +0000 (12:38 -0800)]
ASTContext: fix declaration of ParsedTargetAttr [-Wmismatched-tags] after D68627
Ulrich Weigand [Mon, 23 Dec 2019 20:11:45 +0000 (21:11 +0100)]
[FPEnv][X86] More strict int <-> FP conversion fixes
Fix several several additional problems with the int <-> FP conversion
logic both in common code and in the X86 target. In particular:
- The STRICT_FP_TO_UINT expansion emits a floating-point compare. This
compare can raise exceptions and therefore needs to be a strict compare.
I've made it signaling (even though quiet would also be correct) as
signaling is the more usual default for an LT. This code exists both
in common code and in the X86 target.
- The STRICT_UINT_TO_FP expansion algorithm was incorrect for strict mode:
it emitted two STRICT_SINT_TO_FP nodes and then used a select to choose one
of the results. This can cause spurious exceptions by the STRICT_SINT_TO_FP
that ends up not chosen. I've fixed the algorithm to use only a single
STRICT_SINT_TO_FP instead.
- The !isStrictFPEnabled logic in DoInstructionSelection would sometimes do
the wrong thing because it calls getOperationAction using the result VT.
But for some opcodes, incuding [SU]INT_TO_FP, getOperationAction needs to
be called using the operand VT.
- Remove some (obsolete) code in X86DAGToDAGISel::Select that would mutate
STRICT_FP_TO_[SU]INT to non-strict versions unnecessarily.
Reviewed by: craig.topper
Differential Revision: https://reviews.llvm.org/D71840
Evgenii Stepanov [Fri, 20 Dec 2019 20:07:04 +0000 (12:07 -0800)]
[msan] Check qsort input.
Summary:
Qsort interceptor suppresses all checks by unpoisoning the data in the
wrapper of a comparator function, and then unpoisoning the output array
as well.
This change adds an explicit run of the comparator on all elements of
the input array to catch any sanitizer bugs.
Reviewers: vitalybuka
Subscribers: #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D71780
Evgenii Stepanov [Thu, 19 Dec 2019 21:38:59 +0000 (13:38 -0800)]
[msan] Intercept qsort, qsort_r.
Summary:
This fixes qsort-related false positives with glibc-2.27.
I'm not entirely sure why they did not show up with the earlier
versions; the code seems similar enough.
Reviewers: vitalybuka
Subscribers: #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D71740
Craig Topper [Mon, 23 Dec 2019 18:38:38 +0000 (10:38 -0800)]
[Sema][X86] Consider target attribute into the checks in validateOutputSize and validateInputSize.
The validateOutputSize and validateInputSize need to check whether
AVX or AVX512 are enabled. But this can be affected by the
target attribute so we need to factor that in.
This patch moves some of the code from CodeGen to create an
appropriate feature map that we can pass to the function.
Differential Revision: https://reviews.llvm.org/D68627
David Blaikie [Mon, 23 Dec 2019 19:08:26 +0000 (11:08 -0800)]
MC: Ensure test only reads from the Inputs directory
Reid Kleckner [Sun, 22 Dec 2019 21:25:24 +0000 (13:25 -0800)]
Fix LLVM tool --version build mode printing for MSVC
LLVM tools such as llc print "DEBUG build" or "Optimized build" when
passed --version. Before this change, this was implemented by checking
for the __OPTIMIZE__ GCC macro. MSVC does not define this macro. For
MSVC, control this behavior with _DEBUG instead. It doesn't have
precisely the same meaning, but in most configurations, it will do the
right thing.
Fixes PR17752
Reviewed by: MaskRay
Differential Revision: https://reviews.llvm.org/D71817
Jonas Devlieghere [Mon, 23 Dec 2019 17:48:37 +0000 (09:48 -0800)]
[lldb/Test] Disable TestSynchronous.test on Windows.
The test was being skipped on the Windwos bot because it requires Python
which was silently disabled because of a configuration issue. Now that
the test runs, this fails as expected.
Sylvestre Ledru [Mon, 23 Dec 2019 17:43:01 +0000 (18:43 +0100)]
Move from a long list of checkers to tables
Summary:
Currently, the list isn't very useful.
This change adds two tables.
* The checkers
* The aliases
For each checkers, we provide extract info:
* the severity. Taken from codechecker - https://github.com/Ericsson/codechecker/blob/master/config/checker_severity_map.json
* if the checker has an autofix or not
I used the cvs format for the table because:
* it is easy
* the data could be reused by other tools (we could move
that into a separated / generated file at some point)
Reviewers: alexfh, jdoerfert, jfb, lebedev.ri, Eugene.Zelenko
Subscribers: dexonsmith, wuzish, nemanjai, kbarton, arphaman, lebedev.ri, whisperity, Eugene.Zelenko, JonasToth, JDevlieghere, xazax.hun, cfe-commits, #clang-tools-extra
Tags: #clang
Differential Revision: https://reviews.llvm.org/D36051
Fangrui Song [Fri, 20 Dec 2019 00:04:45 +0000 (16:04 -0800)]
[ELF] Don't suggest an alternative spelling for a symbol in a discarded section
For undef-not-suggest.test, we currently make redundant alternative
spelling suggestions:
```
ld.lld: error: relocation refers to a discarded section: .text.foo
>>> defined in a.o
>>> section group signature: foo
>>> prevailing definition is in a.o
>>> referenced by a.o:(.rodata+0x0)
>>> did you mean:
>>> defined in: a.o
ld.lld: error: relocation refers to a symbol in a discarded section: foo
>>> defined in a.o
>>> section group signature: foo
>>> prevailing definition is in a.o
>>> referenced by a.o:(.rodata+0x8)
>>> did you mean: for
>>> defined in: a.o
```
Reviewed By: grimar, ruiu
Differential Revision: https://reviews.llvm.org/D71735
Jay Foad [Mon, 23 Dec 2019 13:42:12 +0000 (13:42 +0000)]
[AMDGPU] Don't create MachinePointerInfos with an UndefValue pointer
Summary:
The only useful information the UndefValue conveys is the address space,
which MachinePointerInfo can represent directly without referring to an
IR value.
Reviewers: arsenm, rampitec
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71838
Luís Marques [Mon, 23 Dec 2019 15:32:52 +0000 (15:32 +0000)]
[RISCV][NFC] Fix use of missing attribute groups in tests
czhengsz [Mon, 23 Dec 2019 15:26:41 +0000 (10:26 -0500)]
[PowerPC] NFC - fix the testcase bug of folding rlwinm
Sanjay Patel [Mon, 23 Dec 2019 14:46:49 +0000 (09:46 -0500)]
[DAGCombine] visitEXTRACT_SUBVECTOR - 'little to big' extract_subvector(bitcast()) support
This moves the X86 specific transform from rL364407
into DAGCombiner to generically handle 'little to big' cases
(for example: extract_subvector(v2i64 bitcast(v16i8))). This
allows us to remove both the x86 implementation and the aarch64
bitcast(extract_subvector(bitcast())) combine.
Earlier patches that dealt with regressions initially exposed
by this patch:
rG5e5e99c041e4
rG0b38af89e2c0
Patch by: @RKSimon (Simon Pilgrim)
Differential Revision: https://reviews.llvm.org/D63815
Alexey Bataev [Thu, 19 Dec 2019 15:01:10 +0000 (10:01 -0500)]
[OPENMP50]Codegen for nontemporal clause.
Summary:
Basic codegen for the declarations marked as nontemporal. Also, if the
base declaration in the member expression is marked as nontemporal,
lvalue for member decl access inherits nonteporal flag from the base
lvalue.
Reviewers: rjmccall, hfinkel, jdoerfert
Subscribers: guansong, arphaman, caomhin, kkwli0, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D71708
Pavel Labath [Mon, 23 Dec 2019 14:45:26 +0000 (15:45 +0100)]
[lldb] Remove DWARFUnit::AppendDIEsWithTag
This function is not very useful, as it's forcing a materialization of
the returned DIEs, and calling it is not substantially simpler than just
iterating over the DIEs manually. Delete it, and rewrite the single
caller.
LLVM GN Syncbot [Mon, 23 Dec 2019 13:55:08 +0000 (13:55 +0000)]
[gn build] Port
eca40066ebb
Pavel Labath [Mon, 23 Dec 2019 13:33:00 +0000 (14:33 +0100)]
[lldb/DWARF] Fix hostname-stripping logic
This bit of code is trying to strip everything up to the first colon
from all debug info paths, as dwarf2 recommends this syntax for storing
the compilation host name. However, this code was too eager, and it
ended up stripping the entire compilation directory, if it did not
contain a forward slash (or a "x:\").
Normally this does not matter, as all absolute paths will contain one of
these patterns, but this does not have to be the case in case the debug
info is produced by "clang -fdebug-compilation-dir", which can end up
producing a relative compilation directory with no slashes (this is one
of the techniques for producing "relocatable" debug info).
Florian Hahn [Mon, 23 Dec 2019 13:28:56 +0000 (14:28 +0100)]
[Matrix] Use fmuladd for matrix.multiply if allowed.
If the matrix.multiply calls have the contract fast math flag, we can
use fmuladd. This als adds a command line option to force fmuladd
generation. We can retire this option once there is a clang-level
option.
Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D70951
Yaxun (Sam) Liu [Sun, 22 Dec 2019 05:34:14 +0000 (00:34 -0500)]
[NFC] Move OptionUtils from Basic to Driver
Differential Revision: https://reviews.llvm.org/D71802
Florian Hahn [Mon, 23 Dec 2019 12:39:36 +0000 (13:39 +0100)]
[Matrix] Add forward shape propagation and first shape aware lowerings.
This patch adds infrastructure for forward shape propagation to
LowerMatrixIntrinsics. It also updates the pass to make use of
the shape information to break up larger vector operations and to
eliminate unnecessary conversion operations between columnwise matrixes
and flattened vectors: if shape information is available for an
instruction, lower the operation to a set of instructions operating on
columns. For example, a store of a matrix is broken down into separate
stores for each column. For users that do not have shape
information (e.g. because they do not yet support shape information
aware lowering), we pack the result columns into a flat vector and
update those users.
It also adds shape aware lowering for the first non-intrinsic
instruction: vector stores.
Example:
For
%c = call <4 x double> @llvm.matrix.transpose(<4 x double> %a, i32 2, i32 2)
store <4 x double> %c, <4 x double>* %Ptr
We generate the code below without shape propagation. Note %9 which
combines the columns of the transposed matrix into a flat vector.
%split = shufflevector <4 x double> %a, <4 x double> undef, <2 x i32> <i32 0, i32 1>
%split1 = shufflevector <4 x double> %a, <4 x double> undef, <2 x i32> <i32 2, i32 3>
%1 = extractelement <2 x double> %split, i64 0
%2 = insertelement <2 x double> undef, double %1, i64 0
%3 = extractelement <2 x double> %split1, i64 0
%4 = insertelement <2 x double> %2, double %3, i64 1
%5 = extractelement <2 x double> %split, i64 1
%6 = insertelement <2 x double> undef, double %5, i64 0
%7 = extractelement <2 x double> %split1, i64 1
%8 = insertelement <2 x double> %6, double %7, i64 1
%9 = shufflevector <2 x double> %4, <2 x double> %8, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
store <4 x double> %9, <4 x double>* %Ptr
With this patch, we propagate the 2x2 shape information from the
transpose to the store and we generate the code below. Note that we
store the columns directly and do not need an extra shuffle.
%9 = bitcast <4 x double>* %Ptr to double*
%10 = bitcast double* %9 to <2 x double>*
store <2 x double> %4, <2 x double>* %10, align 8
%11 = getelementptr double, double* %9, i32 2
%12 = bitcast double* %11 to <2 x double>*
store <2 x double> %8, <2 x double>* %12, align 8
Reviewers: anemet, Gerolf, reames, hfinkel, andrew.w.kaylor
Reviewed By: anemet
Differential Revision: https://reviews.llvm.org/D70897
Raphael Isemann [Mon, 23 Dec 2019 12:29:05 +0000 (13:29 +0100)]
[lldb][NFC] Remove unused callback functionality from ClangASTContext
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
River Riddle [Mon, 23 Dec 2019 05:59:55 +0000 (21:59 -0800)]
NFC: Introduce new ValuePtr/ValueRef typedefs to simplify the transition to Value being value-typed.
This is an initial step to refactoring the representation of OpResult as proposed in: https://groups.google.com/a/tensorflow.org/g/mlir/c/XXzzKhqqF_0/m/v6bKb08WCgAJ
This change will make it much simpler to incrementally transition all of the existing code to use value-typed semantics.
PiperOrigin-RevId:
286844725
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