Aaron Ballman [Fri, 21 Sep 2018 23:01:32 +0000 (23:01 +0000)]
Move individual benchmark targets into the Utils folder in IDEs.
llvm-svn: 342785
Zachary Turner [Fri, 21 Sep 2018 23:00:37 +0000 (23:00 +0000)]
Try moving this function to another file.
I can't reproduce this compilation failure so I can't really
test this fix.
llvm-svn: 342784
Lang Hames [Fri, 21 Sep 2018 22:59:48 +0000 (22:59 +0000)]
[ORC] In RTDyldObjectLinkingLayer, only call NotifyFreed if the object file
has been finalized.
This prevents crashes on unfinalized objects for clients using
JITEventListeners.
Patch by Geoff Levner. Thanks Geoff!
llvm-svn: 342783
Aaron Ballman [Fri, 21 Sep 2018 22:55:57 +0000 (22:55 +0000)]
Add benchmark and benchmark_main to the Utils folder in IDEs.
llvm-svn: 342782
Zachary Turner [Fri, 21 Sep 2018 22:44:31 +0000 (22:44 +0000)]
Add missing include.
llvm-svn: 342781
Zachary Turner [Fri, 21 Sep 2018 22:36:28 +0000 (22:36 +0000)]
[NativePDB] Add support for reading function signatures.
This adds support for parsing function signature records and returning
them through the native DIA interface.
llvm-svn: 342780
Zachary Turner [Fri, 21 Sep 2018 22:36:04 +0000 (22:36 +0000)]
[PDB] Add native reading support for UDT / class types.
This allows the native reader to find records of class/struct/
union type and dump them. This behavior is tested by using the
diadump subcommand against golden output produced by actual DIA
SDK on the same PDB file, and again using pretty -native to
confirm that we actually dump the classes. We don't find class
members or anything like that yet, for now it's just the class
itself.
llvm-svn: 342779
Fedor Sergeev [Fri, 21 Sep 2018 22:10:17 +0000 (22:10 +0000)]
[New PM][PassInstrumentation] Adding PassInstrumentation to the AnalysisManager runs
As a prerequisite to time-passes implementation which needs to time both passes
and analyses, adding instrumentation points to the Analysis Manager.
The are two functional differences between Pass and Analysis instrumentation:
- the latter does not increment pass execution counter
- it does not provide ability to skip execution of the corresponding analysis
Reviewers: chandlerc, philip.pfaffe
Differential Revision: https://reviews.llvm.org/D51275
llvm-svn: 342778
Martin Storsjo [Fri, 21 Sep 2018 22:01:06 +0000 (22:01 +0000)]
[COFF] Support linking to import libraries from GNU binutils
GNU binutils import libraries aren't the same kind of short import
libraries as link.exe and LLD produce, but are a plain static library
containing .idata section chunks. MSVC link.exe can successfully link
to them.
In order for imports from GNU import libraries to mix properly with the
normal import chunks, the chunks from the existing mechanism needs to
be added into named sections like .idata$2.
These GNU import libraries consist of one header object, a number of
object files, one for each imported function/variable, and one trailer.
Within the import libraries, the object files are ordered alphabetically
in this order. The chunks stemming from these libraries have to be
grouped by what library they originate from and sorted, to make sure
the section chunks for headers and trailers for the lists are ordered
as intended. This is done on all sections named .idata$*, before adding
the synthesized chunks to them.
Differential Revision: https://reviews.llvm.org/D38513
llvm-svn: 342777
Adrian Prantl [Fri, 21 Sep 2018 21:59:34 +0000 (21:59 +0000)]
llvm-dwarfdump --statistics: Unique abstract origins across multiple CUs.
Instead of indexing local variables by DIE offset, use the variable
name + the path through the lexical block tree. This makes the lookup
key consistent across duplicate abstract origins in different CUs.
llvm-svn: 342776
Sanjay Patel [Fri, 21 Sep 2018 21:25:16 +0000 (21:25 +0000)]
[x86] add more tests for poetntial andnp splitting with AVX1; NFC
llvm-svn: 342775
Richard Trieu [Fri, 21 Sep 2018 21:20:33 +0000 (21:20 +0000)]
Make compare function in r342648 have strict weak ordering.
Comparison functions used in sorting algorithms need to have strict weak
ordering. Remove the assert and allow comparisons on all lists.
llvm-svn: 342774
Simon Pilgrim [Fri, 21 Sep 2018 21:08:26 +0000 (21:08 +0000)]
[X86] Add AVX512 target to load scalar to vector tests
To investigate broadcast instruction codegen for D51553
llvm-svn: 342773
Wouter van Oortmerssen [Fri, 21 Sep 2018 20:53:55 +0000 (20:53 +0000)]
[WebAssembly] Simplified selecting asmmatcher stack instructions.
Summary:
By using the existing isCodeGenOnly bit in the tablegen defs, as
suggested by tlively in https://reviews.llvm.org/D51662
Tested: llvm-lit -v `find test -name WebAssembly`
Reviewers: tlively
Subscribers: dschuff, sbc100, jgravelle-google, aheejin, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52373
llvm-svn: 342772
Jorge Gorbe Moya [Fri, 21 Sep 2018 20:45:08 +0000 (20:45 +0000)]
Test commit. Removed a blank line.
llvm-svn: 342771
George Karpenkov [Fri, 21 Sep 2018 20:37:20 +0000 (20:37 +0000)]
[analyzer] Process state in checkEndFunction in RetainCountChecker
Modify the RetainCountChecker to perform state "adjustments" in
checkEndFunction, as performing work in PreStmt<ReturnStmt> does not
work with destructors.
The previous version made an implicit assumption that no code runs
after the return statement is executed.
rdar://
43945028
Differential Revision: https://reviews.llvm.org/D52338
llvm-svn: 342770
George Karpenkov [Fri, 21 Sep 2018 20:37:01 +0000 (20:37 +0000)]
[analyzer] Highlight sink nodes in red
Differential Revision: https://reviews.llvm.org/D52337
llvm-svn: 342769
George Karpenkov [Fri, 21 Sep 2018 20:36:41 +0000 (20:36 +0000)]
[analyzer] Associate diagnostics created in checkEndFunction with a return statement, if possible
If not possible, use the last line of the declaration, as before.
Differential Revision: https://reviews.llvm.org/D52326
llvm-svn: 342768
George Karpenkov [Fri, 21 Sep 2018 20:36:21 +0000 (20:36 +0000)]
[analyzer] [NFC] Prefer make_unique over "new"
Differential Revision: https://reviews.llvm.org/D52336
llvm-svn: 342767
George Karpenkov [Fri, 21 Sep 2018 20:36:01 +0000 (20:36 +0000)]
[analyzer] Fix bug in isInevitablySinking
If the non-sink report is generated at the exit node, it will be
suppressed by the current functionality in isInevitablySinking, as it
only checks the successors of the block, but not the block itself.
The bug shows up in RetainCountChecker checks.
Differential Revision: https://reviews.llvm.org/D52284
llvm-svn: 342766
George Karpenkov [Fri, 21 Sep 2018 20:35:39 +0000 (20:35 +0000)]
[analyzer] [NFC] Dead code removal
Differential Revision: https://reviews.llvm.org/D52269
llvm-svn: 342765
Pirama Arumuga Nainar [Fri, 21 Sep 2018 20:01:22 +0000 (20:01 +0000)]
[libc++abi] is_strcmp parameter to is_equal is unused for WIN32
Summary: Mark it as unused to avoid -Wunused-parameter.
Reviewers: EricWF, srhines, mstorsjo
Subscribers: christof, ldionne, libcxx-commits, cfe-commits
Differential Revision: https://reviews.llvm.org/D52368
llvm-svn: 342764
Vlad Tsyrklevich [Fri, 21 Sep 2018 19:02:32 +0000 (19:02 +0000)]
SafeStack: Fix flaky test (PR39001)
Summary:
pthread_join() can return before a thread finishes exit()ing in the
kernel and a subsequent tgkill() can report the thread still alive.
Update the pthread-cleanup.c test to sleep and retry if it hits this
possible flake.
Thanks to Jeremy Morse for reporting.
Reviewers: jmorse, eugenis, vitalybuka
Reviewed By: jmorse, vitalybuka
Subscribers: delcypher, jfb, llvm-commits, #sanitizers, kcc
Differential Revision: https://reviews.llvm.org/D52330
llvm-svn: 342763
Tatyana Krasnukha [Fri, 21 Sep 2018 18:56:44 +0000 (18:56 +0000)]
Move architecture-specific address adjustment to architecture plugins
Differential Revision: https://reviews.llvm.org/D48623
llvm-svn: 342762
Thomas Lively [Fri, 21 Sep 2018 18:46:39 +0000 (18:46 +0000)]
[WebAssembly][NFC] Rename simd-conversions test to simd-bitcasts
Summary:
This name is more accurate and I want to reuse the simd-conversions
name for testing the actual conversion ops.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52333
llvm-svn: 342761
Caroline Tice [Fri, 21 Sep 2018 18:41:31 +0000 (18:41 +0000)]
Pass code-model through Module IR to LTO which will use it.
Currently the code-model does not get saved in the module IR,
so if a code model is specified when compiling with LTO,
it gets lost and is not propagated properly to LTO. This patch,
along with one for the front end, fixes that.
Differential Revision: https://reviews.llvm.org/D52322
llvm-svn: 342760
JF Bastien [Fri, 21 Sep 2018 18:35:32 +0000 (18:35 +0000)]
[NFC] use bit_cast in PointerSumType
The code was already using union and memcpy to do this. Remove the memcpy. We can't just change the union because a reference to its member is returned.
llvm-svn: 342759
Caroline Tice [Fri, 21 Sep 2018 18:34:59 +0000 (18:34 +0000)]
Add necessary support for storing code-model to module IR.
Currently the code-model does not get saved in the module IR, so if a
code model is specified when compiling with LTO, it gets lost and is
not propagated properly to LTO. This patch does what is necessary in
the front end to pass the code-model to the module, so that the back
end can store it in the Module .
Differential Revision: https://reviews.llvm.org/D52323
llvm-svn: 342758
Tatyana Krasnukha [Fri, 21 Sep 2018 18:34:41 +0000 (18:34 +0000)]
build: add libedit to include paths
Differential Revision: https://reviews.llvm.org/D51999
llvm-svn: 342757
Sanjay Patel [Fri, 21 Sep 2018 18:24:53 +0000 (18:24 +0000)]
[x86] add (negative) andnp test for D52318; NFC
llvm-svn: 342756
Sanjay Patel [Fri, 21 Sep 2018 18:03:49 +0000 (18:03 +0000)]
[x86] add test with optsize attribute for scalar->vector transform; NFC
llvm-svn: 342755
Rui Ueyama [Fri, 21 Sep 2018 17:48:45 +0000 (17:48 +0000)]
Update release notes.
llvm-svn: 342754
Wouter van Oortmerssen [Fri, 21 Sep 2018 17:47:58 +0000 (17:47 +0000)]
[WebAssembly] Made assembler only use stack instruction tablegen defs
Summary:
This ensures we have the non-register version of the instruction.
The stack version of call_indirect now wants a type index argument,
so that has been added in the existing tests.
Tested:
llvm-lit -v `find test -name WebAssembly`
Reviewers: dschuff
Subscribers: sbc100, jgravelle-google, aheejin, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D51662
llvm-svn: 342753
Artem Belevich [Fri, 21 Sep 2018 17:46:28 +0000 (17:46 +0000)]
[CUDA] Fixed parsing of optional template-argument-list.
We need to consider all tokens that start with '>' when
we're checking for the end of an empty template argument list.
Differential Revision: https://reviews.llvm.org/D52321
llvm-svn: 342752
Krzysztof Parzyszek [Fri, 21 Sep 2018 17:40:35 +0000 (17:40 +0000)]
[Hexagon] Avoid functions with exception handling in HexagonConstExtenders
The constant-extender optimization does a form of code motion, which is
complicated in the presence of exception handling.
llvm-svn: 342751
JF Bastien [Fri, 21 Sep 2018 17:38:41 +0000 (17:38 +0000)]
[NFC] remove unused variable
It was causing a warning.
llvm-svn: 342750
Artem Belevich [Fri, 21 Sep 2018 17:29:33 +0000 (17:29 +0000)]
[CUDA] Ignore uncallable functions when we check for usual deallocators.
Previously clang considered function variants from both sides of
compilation and that resulted in picking up wrong deallocation function.
Differential Revision: https://reviews.llvm.org/D51808
llvm-svn: 342749
Rui Ueyama [Fri, 21 Sep 2018 17:13:55 +0000 (17:13 +0000)]
Update release notes.
llvm-svn: 342748
Kostya Kortchinsky [Fri, 21 Sep 2018 17:05:56 +0000 (17:05 +0000)]
[sanitizer] Move __sanitizer_set_death_callback to a more appropriate file
Summary:
`__sanitizer_set_death_callback` is a public interface function wrapping
`SetUserDieCallback`. Said function is defined in `sanitizer_termination.cc`,
which is not included in all the RT. Moving the interface function to that
file allows to not have a spurious public fuinction in RT that don't use it.
Reviewers: eugenis
Reviewed By: eugenis
Subscribers: kubamracek, delcypher, #sanitizers, llvm-commits
Differential Revision: https://reviews.llvm.org/D52363
llvm-svn: 342747
Dimitry Andric [Fri, 21 Sep 2018 16:58:13 +0000 (16:58 +0000)]
Align AArch64 and i386 image base to superpage
Summary:
As for x86_64, the default image base for AArch64 and i386 should be
aligned to a superpage appropriate for the architecture.
On AArch64, this is 2 MiB, on i386 it is 4 MiB.
Reviewers: emaste, grimar, javed.absar, espindola, ruiu, peter.smith, srhines, rprichard
Reviewed By: ruiu, peter.smith
Subscribers: jfb, markj, arichardson, krytarowski, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D50297
llvm-svn: 342746
Dean Michael Berris [Fri, 21 Sep 2018 16:34:42 +0000 (16:34 +0000)]
[XRay][compiler-rt] Update use of internal_mmap
Summary:
The implementation of `internal_mmap(...)` deviates from the contract of
`mmap(...)` -- i.e. error returns are actually the equivalent of `errno`
results. We update how XRay uses `internal_mmap(...)` to better handle
these error conditions.
In the process, we change the default pointers we're using from `char*`
to `uint8_t*` to prevent potential usage of the pointers in the string
library functions that expect to operate on `char*`.
We also take the chance to "promote" sizes of individual `internal_mmap`
requests to at least page size bytes, consistent with the expectations
of calls to `mmap`.
Reviewers: cryptoad, mboerger
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52361
llvm-svn: 342745
Daniel Sanders [Fri, 21 Sep 2018 16:32:49 +0000 (16:32 +0000)]
[tblgen] Fix undefined behaviour when assigning integers to large bits<n>'s
This code:
bits<96> X = 0;
was triggering undefined behaviour since it iterates over bits 0..95 and tests
them against the IntInit using 1LL << I.
This patch resolves the undefined behaviour by continuing to treat the IntInit
as a 64-bit value and simply causing all bit tests in excess of 64-bits to report
false. As a result,
bits<96> X = -1;
will be equivalent to:
bits<96> X;
let X{0-63} = -1;
let X{64-95} = 0;
llvm-svn: 342744
Sameer Sahasrabuddhe [Fri, 21 Sep 2018 16:31:51 +0000 (16:31 +0000)]
revert changes from r342722
"[AMDGPU] lower-switch in preISel as a workaround for legacy DA"
This broke regression tests. The first breakage was noticed here:
http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/23549
llvm-svn: 342743
Matthias Braun [Fri, 21 Sep 2018 15:47:41 +0000 (15:47 +0000)]
AArch64FastISel: Abort if we failed to select operand of intrinsic
rdar://
44642447
Differential Revision: https://reviews.llvm.org/D52335
llvm-svn: 342742
Alexey Bataev [Fri, 21 Sep 2018 14:55:26 +0000 (14:55 +0000)]
[OPENMP] Disable emission of the class with vptr if they are not used in
target constructs.
Prevent compilation of the classes with the virtual tables when
compiling for the device.
llvm-svn: 342741
Sanjay Patel [Fri, 21 Sep 2018 14:43:49 +0000 (14:43 +0000)]
[InstCombine] add tests for extractelement; NFC
There are folds under visitExtractElementInst() that don't appear
to have any test coverage, so adding a few basic cases here.
llvm-svn: 342740
JF Bastien [Fri, 21 Sep 2018 14:31:25 +0000 (14:31 +0000)]
[ADT] restrict bit_cast to trivially-constructible To
Summary: As discussed in r341853 by blaikie, the reinterpret_cast was technically an aliasing violation. Restrict our bit_cast implementation to To which are trivially-constructible (and note the existing restriction to constexpr). Once we move to C++17 we can use a version of bit_cast without these restrictions, or if we care we can SFINAE a different implementation when To isn't trivially-constructible.
Originally landed in r342710 and reverted in r342711 because is_trivially_copyable is only in GCC 5.1 and later.
Reviewers: dblaikie, rsmith
Subscribers: dexonsmith, kristina, llvm-commits
Differential Revision: https://reviews.llvm.org/D52332
llvm-svn: 342739
Alexey Bataev [Fri, 21 Sep 2018 14:22:53 +0000 (14:22 +0000)]
[OPENMP][NVPTX] Enable support for lastprivates in SPMD constructs.
Previously we could not use lastprivates in SPMD constructs, patch
allows supporting lastprivates in SPMD with uninitialized runtime.
llvm-svn: 342738
Alexey Bataev [Fri, 21 Sep 2018 14:11:41 +0000 (14:11 +0000)]
[OPENMP][NVPTX] Add support for lastprivates/reductions handling in SPMD constructs with lightweight runtime.
Summary:
We need the support for per-team shared variables to support codegen for
lastprivates/reductions. Patch adds this support by using shared memory
if the total size of the reductions/lastprivates is <= 128 bytes,
then pre-allocated buffer in global memory if size is <= 4K bytes,or
uses malloc/free, otherwise.
Reviewers: gtbercea, kkwli0, grokos
Subscribers: guansong, openmp-commits
Differential Revision: https://reviews.llvm.org/D51875
llvm-svn: 342737
Clement Courbet [Fri, 21 Sep 2018 14:07:20 +0000 (14:07 +0000)]
[X86][Sched] Add zero idiom sched data to the SNB model.
Summary:
On SNB, renamer-based zeroing does not work for:
- 16 and 8-bit GPRs[1].
- MMX [2].
- ANDN variants [3]
[1] echo 'sub %ax, %ax' | /tmp/llvm-exegesis -mode=uops -snippets-file=-
[2] echo 'pxor %mm0, %mm0' | /tmp/llvm-exegesis -mode=uops -snippets-file=-
[3] echo 'andnps %xmm0, %xmm0' | /tmp/llvm-exegesis -mode=uops -snippets-file=-
Reviewers: RKSimon, andreadb
Subscribers: gbedwell, craig.topper, llvm-commits
Differential Revision: https://reviews.llvm.org/D52358
llvm-svn: 342736
Bruno Ricci [Fri, 21 Sep 2018 14:03:32 +0000 (14:03 +0000)]
[AST][NFC] DeclarationName.h : add missing parentheses to silence warnings
Some bots are complaining about missing parentheses in assertions added in
r342729: [AST] Various optimizations + refactoring in DeclarationName(Table)
llvm-svn: 342735
JF Bastien [Fri, 21 Sep 2018 13:54:09 +0000 (13:54 +0000)]
NFC: deduplicate isRepeatedBytePattern from clang to LLVM's isBytewiseValue
Summary:
This code was in CGDecl.cpp and really belongs in LLVM. It happened to have isBytewiseValue which served a very similar purpose but wasn't as powerful as clang's version. Remove the clang version, and augment isBytewiseValue to be as powerful so that clang does the same thing it used to.
LLVM part of this patch: D51751
Subscribers: dexonsmith, cfe-commits
Differential Revision: https://reviews.llvm.org/D51752
llvm-svn: 342734
Tatyana Krasnukha [Fri, 21 Sep 2018 13:40:22 +0000 (13:40 +0000)]
Add dependency on llc required by find-variable-dwo test
llvm-svn: 342733
Tatyana Krasnukha [Fri, 21 Sep 2018 13:20:26 +0000 (13:20 +0000)]
Skip test if gcc version is less than 7.1 since it doesn't support -gcolumn-info option
llvm-svn: 342732
Bruno Ricci [Fri, 21 Sep 2018 13:11:39 +0000 (13:11 +0000)]
[AST][NFC] Remove a superfluous enum in ObjCMethodDeclBitfields added in r338641
I originally added this enum to avoid including Basic/IdentifierTable.h
in AST/DeclBase.h. However I did not realise it is already included
transitively by AST/DeclarationName.h. Therefore remove this enum and
explicitly include Basic/IdentifierTable.h
llvm-svn: 342731
Eric Liu [Fri, 21 Sep 2018 13:04:57 +0000 (13:04 +0000)]
[clangd] Remember to serialize symbol origin in YAML.
llvm-svn: 342730
Bruno Ricci [Fri, 21 Sep 2018 12:53:22 +0000 (12:53 +0000)]
[AST] Various optimizations + refactoring in DeclarationName(Table)
Introduce the following optimizations in DeclarationName(Table):
1. Store common kinds inline in DeclarationName instead of
DeclarationNameExtra. Currently the kind of C++ constructor, destructor,
conversion function and overloaded operator names is stored in
DeclarationNameExtra. Instead store it inline in DeclarationName.
To do this align IdentifierInfo, CXXSpecialName, DeclarationNameExtra
and CXXOperatorIdName to 8 bytes so that we can use the lower 3 bits of
DeclarationName::Ptr. This is already the case on 64 bits archs anyway.
This also allow us to remove DeclarationNameExtra from CXXSpecialName
and CXXOperatorIdName, which shave off a pointer from CXXSpecialName.
2. Synchronize the enumerations DeclarationName::NameKind,
DeclarationName::StoredNameKind and Selector::IdentifierInfoFlag.
This makes DeclarationName::getNameKind much more efficient since we can
replace the switch table by a single comparison and an addition.
3. Put the overloaded operator names inline in DeclarationNameTable to remove
an indirection. This increase the size of DeclarationNameTable a little
bit but this is not important since it is only used in ASTContext, and
never copied nor moved from. This also get rid of the last dynamic
allocation in DeclarationNameTable.
Altogether these optimizations cut the run time of parsing all of Boost by
about 0.8%. While we are at it, do the following NFC modifications:
1. Put the internal classes CXXSpecialName, CXXDeductionGuideNameExtra,
CXXOperatorIdName, CXXLiteralOperatorIdName and DeclarationNameExtra
in a namespace detail since these classes are only meant to be used by
DeclarationName and DeclarationNameTable. Make this more explicit by making
the members of these classes private and friending DeclarationName(Table).
2. Make DeclarationName::getFETokenInfo a non-template since every users are
using it to get a void *. It was supposed to be used with a type to avoid
a subsequent static_cast.
3. Change the internal functions DeclarationName::getAs* to castAs* since when
we use them we already know the correct kind. This has no external impact
since all of these are private.
Reviewed By: erichkeane, rjmccall
Differential Revision: https://reviews.llvm.org/D52267
llvm-svn: 342729
Andrea Di Biagio [Fri, 21 Sep 2018 12:43:07 +0000 (12:43 +0000)]
[X86][BtVer2] Fix latency and resource cycles of AVX 256-bit zero-idioms.
This patch introduces a SchedWriteVariant to describe zero-idiom VXORP(S|D)Yrr
and VANDNP(S|D)Yrr.
This is a follow-up of r342555.
On Jaguar, a VXORPSYrr is 2 macro opcodes. Only one opcode is eliminated at
register-renaming stage. The other opcode has to be executed to set the upper
half of the destination YMM.
Same for VANDNP(S|D)Yrr.
Differential Revision: https://reviews.llvm.org/D52347
llvm-svn: 342728
Jonas Devlieghere [Fri, 21 Sep 2018 12:28:44 +0000 (12:28 +0000)]
[test] Fix Assembler/debug-info.ll
Update Assembler/debug-info.ll to contain discriminator.
llvm-svn: 342727
Andrea Di Biagio [Fri, 21 Sep 2018 12:22:14 +0000 (12:22 +0000)]
[X86] Add scheduling tests for AVX1 256-bit zero-idioms. NFC
llvm-svn: 342726
Jonas Devlieghere [Fri, 21 Sep 2018 12:03:14 +0000 (12:03 +0000)]
Ensure that variant part discriminator is read by MetadataLoader
https://reviews.llvm.org/D42082 introduced variant parts to debug info
in LLVM. Subsequent work on the Rust compiler has found a bug in that
patch; namely, there is a path in MetadataLoader that fails to restore
the discriminator.
This patch fixes the bug.
Patch by: Tom Tromey
Differential revision: https://reviews.llvm.org/D52340
llvm-svn: 342725
Jonas Devlieghere [Fri, 21 Sep 2018 11:55:17 +0000 (11:55 +0000)]
[dsymutil] Suppress CoreFoundation leaks in tests.
This suppresses CoreFoundation originated leaks in the dsymutil tests.
I'm not sure if this is a false positive or not, but either way we don't
have control over it and shouldn't keep the bot red.
http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan/
llvm-svn: 342724
Benjamin Kramer [Fri, 21 Sep 2018 11:38:35 +0000 (11:38 +0000)]
[ADT] Hack around GCC 5.4 miscompiling Optional of enum.
I'm still not 100% sure that this is not UB lingering (Optional has UB
and should use std::launder, but we don't have std::launder)
llvm-svn: 342723
Sameer Sahasrabuddhe [Fri, 21 Sep 2018 11:26:55 +0000 (11:26 +0000)]
[AMDGPU] lower-switch in preISel as a workaround for legacy DA
Summary:
The default target of the switch instruction may sometimes be an
"unreachable" block, when it is guaranteed that one of the cases is
always taken. The dominator tree concludes that such a switch
instruction does not have an immediate post dominator. This confuses
divergence analysis, which is unable to propagate sync dependence to
the targets of the switch instruction.
As a workaround, the AMDGPU target now invokes lower-switch as a
preISel pass. LowerSwitch is designed to handle the unreachable
default target correctly, allowing the divergence analysis to locate
the correct immediate dominator of the now-lowered switch.
Reviewers: arsenm, nhaehnle
Reviewed By: nhaehnle
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits, simoll
Differential Revision: https://reviews.llvm.org/D52221
llvm-svn: 342722
Ivan Donchevskii [Fri, 21 Sep 2018 11:23:22 +0000 (11:23 +0000)]
[CodeComplete] Generate completion fix-its for C code as well
Current completion fix-its approach does not provide OtherOpBase for C code.
But we can easily proceed in this case taking the original Base type.
Differential Revision: https://reviews.llvm.org/D52261
llvm-svn: 342721
Jeremy Morse [Fri, 21 Sep 2018 10:50:15 +0000 (10:50 +0000)]
[libfuzzer] Fix a test's run line
r342698 removed the 'UNSUPPORTED: windows' flags from a number of fuzzer
tests, however too many lines were removed from 'fuzzer-flags.test',
including the run-line that generates the test binary, which breaks that
test for me (and the clang-x64-ninja-win7 buildbot). This patch just
re-adds that line.
llvm-svn: 342720
Alexander Timofeev [Fri, 21 Sep 2018 10:31:22 +0000 (10:31 +0000)]
[AMDGPU] Divergence driven instruction selection. Part 1.
Summary: This change is the first part of the AMDGPU target description
change. The aim of it is the effective splitting the vector and scalar
flows at the selection stage. Selection uses predicate functions based
on the framework implemented earlier - https://reviews.llvm.org/D35267
Differential revision: https://reviews.llvm.org/D52019
Reviewers: rampitec
llvm-svn: 342719
Calixte Denizet [Fri, 21 Sep 2018 09:17:14 +0000 (09:17 +0000)]
[profile] Fix the tests for patch in https://reviews.llvm.org/D49916.
Summary:
The goal of D49916 is to remove some hit counters from lines like '}'.
So as a consequence, the tests must be fixed.
FYI, after holidays, I'll add more tests.
Reviewers: marco-c, davidxl
Reviewed By: marco-c
Subscribers: delcypher, llvm-commits, #sanitizers, sylvestre.ledru
Differential Revision: https://reviews.llvm.org/D49917
llvm-svn: 342718
Calixte Denizet [Fri, 21 Sep 2018 09:17:06 +0000 (09:17 +0000)]
[CodeGen] Add to emitted DebugLoc information about coverage when it's required
Summary:
Some lines have a hit counter where they should not have one.
Cleanup stuff is located to the last line of the body which is most of the time a '}'.
And Exception stuff is added at the beginning of a function and at the end (represented by '{' and '}').
So in such cases, the DebugLoc used in GCOVProfiling.cpp must be marked as not covered.
This patch is a followup of https://reviews.llvm.org/D49915.
Tests in projects/compiler_rt are fixed by: https://reviews.llvm.org/D49917
Reviewers: marco-c, davidxl
Reviewed By: marco-c
Subscribers: dblaikie, cfe-commits, sylvestre.ledru
Differential Revision: https://reviews.llvm.org/D49916
llvm-svn: 342717
Sylvestre Ledru [Fri, 21 Sep 2018 09:07:58 +0000 (09:07 +0000)]
fix the scan-build urls
llvm-svn: 342716
Dean Michael Berris [Fri, 21 Sep 2018 08:32:49 +0000 (08:32 +0000)]
[XRay][clang] Propagate -fxray-instrumentation-bundle to -cc1
Summary:
Add a test and ensure that we propagate the
-fxray-instrumentation-bundle flag from the driver invocation to the
-cc1 options.
Reviewers: mboerger, tejohnson
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D52342
llvm-svn: 342715
Jonas Devlieghere [Fri, 21 Sep 2018 07:50:21 +0000 (07:50 +0000)]
[dwarfdump] Verify DW_AT_type is set and points to a compatible DIE.
This extends the verifier to catch three new errors:
* Missing DW_AT_type attributes for DW_TAG_formal_parameter,
DW_TAG_variable and DW_TAG_array_type.
* Valid references for DW_AT_type pointing to a non-type tag.
Differential revision: https://reviews.llvm.org/D52223
llvm-svn: 342713
Jonas Devlieghere [Fri, 21 Sep 2018 07:49:29 +0000 (07:49 +0000)]
[dwarfdump] Verify compatibility of attribute TAGs.
Verify that DW_AT_specification and DW_AT_abstract_origin reference a
DIE with a compatible tag.
Differential revision: https://reviews.llvm.org/D38719
llvm-svn: 342712
JF Bastien [Fri, 21 Sep 2018 05:34:12 +0000 (05:34 +0000)]
Revert "[ADT] restrict bit_cast to trivially-constructible To"
Of course some bots don't have std::is_trivially_constructible...
llvm-svn: 342711
JF Bastien [Fri, 21 Sep 2018 05:18:49 +0000 (05:18 +0000)]
[ADT] restrict bit_cast to trivially-constructible To
Summary: As discussed in r341853 by blaikie, the reinterpret_cast was technically an aliasing violation. Restrict our bit_cast implementation to To which are trivially-constructible (and note the existing restriction to constexpr). Once we move to C++17 we can use a version of bit_cast without these restrictions, or if we care we can SFINAE a different implementation when To isn't trivially-constructible.
Reviewers: dblaikie, rsmith
Subscribers: dexonsmith, kristina, llvm-commits
Differential Revision: https://reviews.llvm.org/D52332
llvm-svn: 342710
JF Bastien [Fri, 21 Sep 2018 05:17:42 +0000 (05:17 +0000)]
Merge clang's isRepeatedBytePattern with LLVM's isBytewiseValue
Summary:
his code was in CGDecl.cpp and really belongs in LLVM's isBytewiseValue. Teach isBytewiseValue the tricks clang's isRepeatedBytePattern had, including merging undef properly, and recursing on more types.
clang part of this patch: D51752
Subscribers: dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D51751
llvm-svn: 342709
Owen Pan [Fri, 21 Sep 2018 03:46:36 +0000 (03:46 +0000)]
[clang-format] Do not merge short case labels if followed by a block.
Do not allow short case labels on a single line if the label is followed by a
left brace.
Fixes PR38926.
llvm-svn: 342708
Dan Gohman [Fri, 21 Sep 2018 03:24:42 +0000 (03:24 +0000)]
[WebAssembly] Revert r342701, "Add WebAssembly to LLVM_ALL_TARGTS."
There is a memory leak which is detected in some of the sanitizer builds.
MCSymbolWasm contains SmallVectors for holding signature information,
however MCContext doesn't run destructors for MCSymbols, so in cases
where the SmallVectors heap-allocate, the memory is leaked.
llvm-svn: 342707
Dean Michael Berris [Fri, 21 Sep 2018 01:54:08 +0000 (01:54 +0000)]
[MCA] Remove dependency on CodeGen.
Summary:
There isn't any actual dependency - there's one #include from CodeGen
but nothing from the header is actually used.
With this change we can use the MCA library from CodeGen without
circular dependencies (e.g. for scheduling).
Reviewers: andreadb
Reviewed By: andreadb
Authored By: orodley
Subscribers: mgorny, gbedwell, llvm-commits
Differential Revision: https://reviews.llvm.org/D52288
llvm-svn: 342706
Kristina Brooks [Fri, 21 Sep 2018 01:53:51 +0000 (01:53 +0000)]
[Docs] [Support] Correct a missed reference and use up to date .inc examples.
In my original diff I missed #include "llvm/System/Thing.h" and forgot to update a
reference to .inc files a few lines down. This patch corrects these things as
they were missed in revision 342500.
llvm-svn: 342705
Petr Hosek [Fri, 21 Sep 2018 00:55:42 +0000 (00:55 +0000)]
[ELF] Use the Repl point to avoid the segfault when using ICF
This addresses PR38918.
Differential Revision: https://reviews.llvm.org/D52202
llvm-svn: 342704
Justin Bogner [Fri, 21 Sep 2018 00:51:04 +0000 (00:51 +0000)]
[MachineCopyPropagation] Refactor copy tracking into a class. NFC
This is a bit easier to follow than handling the copy and src maps
directly in the pass, and will make upcoming changes to how this is
done easier to follow.
llvm-svn: 342703
Jordan Rupprecht [Fri, 21 Sep 2018 00:47:31 +0000 (00:47 +0000)]
[llvm-objcopy/llvm-strip]: handle --version
Summary:
Implement --version for objcopy and strip.
I think there are LLVM utilities that automatically handle this, but that doesn't seem to work with custom parsing since this binary handles both objcopy and strip, so it uses custom parsing.
This fixes PR38298
Reviewers: jhenderson, alexshap, jakehehrlich
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D52328
llvm-svn: 342702
Dan Gohman [Fri, 21 Sep 2018 00:39:57 +0000 (00:39 +0000)]
[WebAssembly] Add WebAssembly to LLVM_ALL_TARGTS.
This makes WebAssembly build by default, rather than requiring
LLVM_EXPERIMENTAL_TARGETS_TO_BUILD!
Differential Revision: https://reviews.llvm.org/D43211
llvm-svn: 342701
Justin Bogner [Fri, 21 Sep 2018 00:08:33 +0000 (00:08 +0000)]
[MachineCopyPropagation] Minor clang-formatting. NFC
llvm-svn: 342700
Vedant Kumar [Thu, 20 Sep 2018 23:56:39 +0000 (23:56 +0000)]
[lldbtest] Fix self.filecheck check file lookup
The 'test_filename' property in TestBase changes over time, so
attempting to find a check file relative to the directory containing
'test_filename' is flaky.
Use the absolute path of the check file as that's always correct (and
simpler). This relies on the test driver changing into the test
directory, which it seems we can safely assume.
As a drive-by, make self.filecheck respect the trace (-t) option.
llvm-svn: 342699
Jonathan Metzman [Thu, 20 Sep 2018 23:24:48 +0000 (23:24 +0000)]
[fuzzer] Replace FuzzerExtFunctionsDlsymWin.cpp with FuzzerExtFunctionsWeakAlias.cpp
Summary:
Replace FuzzerExtFunctionsDlsymWin.cpp with FuzzerExtFunctionsWeakAlias.cpp
to get externally defined functions (eg: LLVMFuzzerInitialize,
LLVMFuzzerCustomMutator, etc) working again.
Also enable tests that depended on these functions (on windows)
Reviewers: rnk, morehouse
Reviewed By: rnk, morehouse
Subscribers: rnk, morehouse, mgorny
Differential Revision: https://reviews.llvm.org/D51700
llvm-svn: 342698
David Blaikie [Thu, 20 Sep 2018 23:11:27 +0000 (23:11 +0000)]
Fix DenseSet::ConstIterator typedefs
Fix DenseSet::ConstIterator pointer/reference typedefs to be const
Patch by Brad Moody!
Differential Revision: https://reviews.llvm.org/D52260
llvm-svn: 342697
Aditya Nandakumar [Thu, 20 Sep 2018 23:01:56 +0000 (23:01 +0000)]
Add the ability to register callbacks for removal and insertion of MachineInstrs
https://reviews.llvm.org/D52127
This patch adds the ability to watch for insertions/deletions of
MachineInstructions similar to MachineRegisterInfo.
llvm-svn: 342696
Rui Ueyama [Thu, 20 Sep 2018 22:58:00 +0000 (22:58 +0000)]
Make a member function non-member. NFC.
Non-member functions are generally preferred over member functions
because it is clear that non-member functions don't depend on an
internal state of an object.
llvm-svn: 342695
David Blaikie [Thu, 20 Sep 2018 22:48:09 +0000 (22:48 +0000)]
Remove an unused function
llvm-svn: 342694
Zachary Turner [Thu, 20 Sep 2018 22:32:51 +0000 (22:32 +0000)]
Remove failing test.
Removing on behalf of Jorge Moya. This test is broken on
Windows due to it actually being able to resolve the path. There
is an actual Windows-specific bug somewhere, but we already have
sufficient test coverage of this with a different test, so removing
this was the approach suggested by Jorge.
llvm-svn: 342693
Yonghong Song [Thu, 20 Sep 2018 22:24:27 +0000 (22:24 +0000)]
bpf: check illegal usage of XADD insn return value
Currently, BPF has XADD (locked add) insn support and the
asm looks like:
lock *(u32 *)(r1 + 0) += r2
lock *(u64 *)(r1 + 0) += r2
The instruction itself does not have a return value.
At the source code level, users often use
__sync_fetch_and_add()
which eventually translates to XADD. The return value of
__sync_fetch_and_add() is supposed to be the old value
in the xadd memory location. Since BPF::XADD insn does not
support such a return value, this patch added a PreEmit
phase to check such a usage. If such an illegal usage
pattern is detected, a fatal error will be reported like
line 4: Invalid usage of the XADD return value
if compiled with -g, or
Invalid usage of the XADD return value
if compiled without -g.
Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 342692
Thomas Lively [Thu, 20 Sep 2018 22:08:27 +0000 (22:08 +0000)]
[WebAssembly][NFC] Add missing tests for indirect calls
Summary: Depends on D52105.
Reviewers: aheejin, dschuff
Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52254
llvm-svn: 342691
Thomas Lively [Thu, 20 Sep 2018 22:07:18 +0000 (22:07 +0000)]
[WebAssembly] Add v128 value type
Reviewers: sbc100, aheejin, dschuff
Subscribers: jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52106
llvm-svn: 342690
Thomas Lively [Thu, 20 Sep 2018 22:04:44 +0000 (22:04 +0000)]
[WebAssembly] Add V128 value type to binary format
Summary: Adds the necessary support to lib/ObjectYAML and fixes SIMD
calls to allow the tests to work. Also removes some dead code that
would otherwise have to have been updated.
Reviewers: aheejin, dschuff, sbc100
Subscribers: jgravelle-google, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D52105
llvm-svn: 342689
Jessica Paquette [Thu, 20 Sep 2018 21:53:25 +0000 (21:53 +0000)]
[MachineOutliner][NFC] Don't add MBBs with a size < 2 to the search space
The suffix tree won't ever consider sequences with a length less than 2.
Therefore, we really ought to not even consider them in the first place.
Also add a FIXME explaining that this should be defined in terms of the size
in B of an outlined call versus the size in B of the MBB.
llvm-svn: 342688
Rui Ueyama [Thu, 20 Sep 2018 21:40:38 +0000 (21:40 +0000)]
Rename a function. NFC.
llvm-svn: 342687
Rui Ueyama [Thu, 20 Sep 2018 21:29:14 +0000 (21:29 +0000)]
Make variable names shorter. NFC.
llvm-svn: 342686
Rui Ueyama [Thu, 20 Sep 2018 21:18:56 +0000 (21:18 +0000)]
Simplify. NFC.
llvm-svn: 342685