platform/upstream/llvm.git
5 years agoRecommit r346483: [CallSiteSplitting] Only record conditions up to the IDom(call...
Florian Hahn [Wed, 14 Nov 2018 10:04:30 +0000 (10:04 +0000)]
Recommit r346483: [CallSiteSplitting] Only record conditions up to the IDom(call site).

The underlying problem causing the expensive-check failure was fixed in
rL346769.

llvm-svn: 346843

5 years agoFix r346747 and r346796
Diana Picus [Wed, 14 Nov 2018 09:58:17 +0000 (09:58 +0000)]
Fix r346747 and r346796

Require x86 for the tests in order to fix non-x86 bots. This seems to be
the case for all other tests in that directory.

llvm-svn: 346842

5 years agoSuppress a "-Wliteral-conversion" compiler warning.
Haojian Wu [Wed, 14 Nov 2018 09:53:45 +0000 (09:53 +0000)]
Suppress a "-Wliteral-conversion" compiler warning.

error: implicit conversion from 'double' to 'uint64_t' (aka 'unsigned long') changes value from -0 to 0 [-Werror,-Wliteral-conversion]
llvm-svn: 346841

5 years ago[WebAssembly] Temporarily disable event-section.ll
Heejin Ahn [Wed, 14 Nov 2018 09:51:21 +0000 (09:51 +0000)]
[WebAssembly] Temporarily disable event-section.ll

This test is failing in builds with LLVM_ENABLE_EXPENSIVE_CHECKS after
rL346825 not because of the patch but due to a pre-existing codegen
problem. Marking this as XFAIL temporarily until the bug is fixed.

llvm-svn: 346840

5 years agoFix the "make_unique is ambiguous" compiler error.
Haojian Wu [Wed, 14 Nov 2018 09:42:28 +0000 (09:42 +0000)]
Fix the "make_unique is ambiguous" compiler error.

llvm-svn: 346839

5 years ago[OpenCL] Fix invalid address space generation for clk_event_t
Alexey Sotkin [Wed, 14 Nov 2018 09:40:05 +0000 (09:40 +0000)]
[OpenCL] Fix invalid address space generation for clk_event_t

Summary:
Addrspace(32) was generated when putting 0 in clk_event_t * event_ret
parameter for enqueue_kernel function.

Patch by Viktoria Maksimova

Reviewers: Anastasia, yaxunl, AlexeySotkin

Reviewed By:  Anastasia, AlexeySotkin

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D53809

llvm-svn: 346838

5 years ago[Clang] - Add '-gsplit-dwarf[=split,=single]' version for '-gsplit-dwarf' option.
George Rimar [Wed, 14 Nov 2018 09:22:16 +0000 (09:22 +0000)]
[Clang] - Add '-gsplit-dwarf[=split,=single]' version for '-gsplit-dwarf' option.

The DWARF5 specification says(Appendix F.1):

"The sections that do not require relocation, however, can be
written to the relocatable object (.o) file but ignored by the
linker or they can be written to a separate DWARF object (.dwo)
file that need not be accessed by the linker."

The first part describes a single file split DWARF feature and there
is no way to trigger this behavior atm.
Fortunately, no many changes are required to keep *.dwo sections
in a .o, the patch does that.

Differential revision: https://reviews.llvm.org/D52296

llvm-svn: 346837

5 years ago[clangd] Improve code completion for ObjC methods
Sam McCall [Wed, 14 Nov 2018 09:05:19 +0000 (09:05 +0000)]
[clangd] Improve code completion for ObjC methods

Summary:
Previously code completion did not work well for Objective-C methods
which contained multiple arguments as clangd did not expect to see
multiple typed-text chunks when handling code completion.

Note that even with this change, we do not consider selector fragments
from previous arguments to be part of the signature (although we
could in the future).

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits

Differential Revision: https://reviews.llvm.org/D53934

llvm-svn: 346836

5 years ago[clang-tidy] Avoid C arrays check
Roman Lebedev [Wed, 14 Nov 2018 09:01:08 +0000 (09:01 +0000)]
[clang-tidy] Avoid C arrays check

Summary:
[[ https://bugs.llvm.org/show_bug.cgi?id=39224 | PR39224 ]]
As discussed, we can't always do the transform automatically due to that array-to-pointer decay of C array.
In order to detect whether we can do said transform, we'd need to be able to see all usages of said array,
which is, i would say, rather impossible if e.g. it is in the header.
Thus right now no fixit exists.

Exceptions: `extern "C"` code.

References:
* [[ https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es27-use-stdarray-or-stack_array-for-arrays-on-the-stack | CPPCG ES.27: Use std::array or stack_array for arrays on the stack ]]
* [[ https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#slcon1-prefer-using-stl-array-or-vector-instead-of-a-c-array | CPPCG SL.con.1: Prefer using STL array or vector instead of a C array ]]
* HICPP `4.1.1 Ensure that a function argument does not undergo an array-to-pointer conversion`
* MISRA `5-2-12 An identifier with array type passed as a function argument shall not decay to a pointer`

Reviewers: aaron.ballman, JonasToth, alexfh, hokein, xazax.hun

Reviewed By: JonasToth

Subscribers: Eugene.Zelenko, mgorny, rnkovacs, cfe-commits

Tags: #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D53771

llvm-svn: 346835

5 years ago[X86] Add -x86-experimental-vector-widening command lines to pmulh.ll
Craig Topper [Wed, 14 Nov 2018 07:51:26 +0000 (07:51 +0000)]
[X86] Add -x86-experimental-vector-widening command lines to pmulh.ll

I've only added sse2 and sse4.1 variants as I'm only interested in the two v4i16 tests and I don't expect that to different with AVX other than a v prefix.

llvm-svn: 346834

5 years agoCorrectly instantiate `iterator_adaptor_base` when defining `pointer_iterator`
David Blaikie [Wed, 14 Nov 2018 07:19:21 +0000 (07:19 +0000)]
Correctly instantiate `iterator_adaptor_base` when defining `pointer_iterator`

The definition of `pointer_iterator` omits what should be a `iterator_traits::<>::iterator_category` parameter from `iterator_adaptor_base`. As a result, iterators based on `pointer_iterator` always have defaulted value types and the wrong iterator category.

The definition of `pointee_iterator` just a few lines above does this correctly.

This resolves [[ https://bugs.llvm.org/show_bug.cgi?id=39617 | bug 39617 ]].

Patch by Dylan MacKenzie!

Reviewers: dblaikie

Differential Revision: https://reviews.llvm.org/D54377

llvm-svn: 346833

5 years ago[HIP] Fix device only compilation
Yaxun Liu [Wed, 14 Nov 2018 04:47:31 +0000 (04:47 +0000)]
[HIP] Fix device only compilation

Fix a bug causing host code being compiled when --cude-device-only is set.

Differential Revision: https://reviews.llvm.org/D54496

llvm-svn: 346828

5 years ago[CMake] Include clang-apply-replacements in Fuchsia toolchain
Petr Hosek [Wed, 14 Nov 2018 04:06:47 +0000 (04:06 +0000)]
[CMake] Include clang-apply-replacements in Fuchsia toolchain

This is needed for run-clang-tidy.py.

Differential Revision: https://reviews.llvm.org/D54505

llvm-svn: 346827

5 years ago[libcxx] [test] Strip trailing whitespace. NFC.
Stephan T. Lavavej [Wed, 14 Nov 2018 03:06:06 +0000 (03:06 +0000)]
[libcxx] [test] Strip trailing whitespace. NFC.

llvm-svn: 346826

5 years ago[WebAssembly] Add support for the event section
Heejin Ahn [Wed, 14 Nov 2018 02:46:21 +0000 (02:46 +0000)]
[WebAssembly] Add support for the event section

Summary:
This adds support for the 'event section' specified in the exception
handling proposal. (This was named 'exception section' first, but later
renamed to 'event section' to take possibilities of other kinds of
events into consideration. But currently we only store exception info in
this section.)

The event section is added between the global section and the export
section. This is for ease of validation per request of the V8 team.

This patch:
- Creates the event symbol type, which is a weak symbol
- Makes 'throw' instruction take the event symbol '__cpp_exception'
- Adds relocation support for events
- Adds WasmObjectWriter / WasmObjectFile (Reader) support
- Adds obj2yaml / yaml2obj support
- Adds '.eventtype' printing support

Reviewers: dschuff, sbc100, aardappel

Subscribers: jgravelle-google, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D54096

llvm-svn: 346825

5 years ago[PowerPC] Enhance the selection(ISD::VSELECT) of vector type
Zi Xuan Wu [Wed, 14 Nov 2018 02:34:45 +0000 (02:34 +0000)]
[PowerPC] Enhance the selection(ISD::VSELECT) of vector type

To make ISD::VSELECT available(legal) so long as there are altivec instruction, otherwise it's default behavior is expanding,
which is legalized at type-legalization phase. Use xxsel to match vselect if vsx is open, or use vsel.

Differential Revision: https://reviews.llvm.org/D49531

llvm-svn: 346824

5 years agoRevert r346810 "Preserve loop metadata when splitting exit blocks"
Reid Kleckner [Wed, 14 Nov 2018 01:47:32 +0000 (01:47 +0000)]
Revert r346810 "Preserve loop metadata when splitting exit blocks"

It broke the Windows self-host:
http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/1457

llvm-svn: 346823

5 years ago[HeaderSearch] loadSubdirectoryModuleMaps should respect -working-directory
Alex Lorenz [Wed, 14 Nov 2018 01:08:03 +0000 (01:08 +0000)]
[HeaderSearch] loadSubdirectoryModuleMaps should respect -working-directory

Include search paths can be relative paths. The loadSubdirectoryModuleMaps function
should account for that and respect the -working-directory parameter given to Clang.

rdar://46045849

Differential Revision: https://reviews.llvm.org/D54503

llvm-svn: 346822

5 years ago[CodeGen] Fix forward scan in MachineBasicBlock::computeRegisterLiveness.
Eli Friedman [Wed, 14 Nov 2018 00:39:29 +0000 (00:39 +0000)]
[CodeGen] Fix forward scan in MachineBasicBlock::computeRegisterLiveness.

The scan was incorrectly skipping the first instruction, so a register
could appear to be dead when it was actually live. This eventually leads
to a machine verifier failure and miscompile in arm-ldst-opt.

Differential Revision: https://reviews.llvm.org/D54491

llvm-svn: 346821

5 years ago[CMake] Passthrough CFLAGS when checking the compiler-rt path
Petr Hosek [Wed, 14 Nov 2018 00:09:26 +0000 (00:09 +0000)]
[CMake] Passthrough CFLAGS when checking the compiler-rt path

This is needed when cross-compiling for a different target since
CFLAGS may contain additional flags like -resource-dir which
change the location in which compiler-rt builtins are found.

Differential Revision: https://reviews.llvm.org/D54371

llvm-svn: 346820

5 years agoComplete reverting r346191
Tatyana Krasnukha [Wed, 14 Nov 2018 00:08:34 +0000 (00:08 +0000)]
Complete reverting r346191

llvm-svn: 346819

5 years agoComplete reverting r346191
Tatyana Krasnukha [Tue, 13 Nov 2018 23:59:25 +0000 (23:59 +0000)]
Complete reverting r346191

llvm-svn: 346818

5 years ago[PDB] Simplify symbol handling code, NFC
Reid Kleckner [Tue, 13 Nov 2018 23:44:39 +0000 (23:44 +0000)]
[PDB] Simplify symbol handling code, NFC

- Make mergeSymbolRecords a method of PDBLinker to reduce the number of
parameters it needs.

- Remove a stale FIXME comment about error handling. We already drop
unknown symbol records, log them, and continue.

- Update a comment about why we're copying the symbol record. We do it
to realign the record. We can already mutate the symbol record memory,
it's memory allocated by relocateDebugChunk.

- Avoid the extra `CVSymbol NewSym` variable. We can mutate Sym in
place, which is best, since we're mutating the underlying record anyway.

llvm-svn: 346817

5 years ago[MachineOutliner][NFC] Use flags set in all candidates to check for calls
Jessica Paquette [Tue, 13 Nov 2018 23:41:31 +0000 (23:41 +0000)]
[MachineOutliner][NFC] Use flags set in all candidates to check for calls

If we keep track of if the ContainsCalls bit is set in the MBB flags for each
candidate, then we have a better chance of not checking the candidate for calls
at all.

This saves quite a few checks in some CTMark tests (~200 in Bullet, for
example.)

llvm-svn: 346816

5 years agoMake dsymutil more robust when parsing load commands.
Adrian Prantl [Tue, 13 Nov 2018 23:31:25 +0000 (23:31 +0000)]
Make dsymutil more robust when parsing load commands.

rdar://problem/45883463

llvm-svn: 346815

5 years ago[InstCombine] fold funnel shift amount based on demanded bits
Sanjay Patel [Tue, 13 Nov 2018 23:27:23 +0000 (23:27 +0000)]
[InstCombine] fold funnel shift amount based on demanded bits

The shift amount of a funnel shift is modulo the scalar bitwidth:
http://llvm.org/docs/LangRef.html#llvm-fshl-intrinsic
...so we can use demanded bits analysis on that operand to simplify it
when we have a power-of-2 bitwidth.

This is another step towards canonicalizing {shift/shift/or} to the
intrinsics in IR.

Differential Revision: https://reviews.llvm.org/D54478

llvm-svn: 346814

5 years agoMake the ExpandTilde unit test expect "\" (not "/") on Win32
Matthew Voss [Tue, 13 Nov 2018 23:21:00 +0000 (23:21 +0000)]
Make the ExpandTilde unit test expect "\" (not "/") on Win32

llvm-svn: 346813

5 years agoFix a bug in the parsing of the LC_BUILD_VERSION Mach-O load command.
Adrian Prantl [Tue, 13 Nov 2018 23:14:37 +0000 (23:14 +0000)]
Fix a bug in the parsing of the LC_BUILD_VERSION Mach-O load command.

LC_BUILD_VERSION records are of variable length. The original code
would use uninitialized memory when the size of a record was exactly 24.

rdar://problem/46032185

llvm-svn: 346812

5 years agoAdd cxx-benchmark-unittests target
Eric Fiselier [Tue, 13 Nov 2018 23:08:31 +0000 (23:08 +0000)]
Add cxx-benchmark-unittests target

This patch adds the cxx-benchmark-unittests target so we can start
getting test coverage on the benchmarks, including building with
sanitizers. Because we're only looking for test-coverage, the benchmarks
run for the shortest time possible, and in parallel.

The target is excluded from all by default. It only
builds and runs the libcxx configurations of the benchmarks, and not
any versions built against the systems native standard library.

llvm-svn: 346811

5 years agoPreserve loop metadata when splitting exit blocks
Craig Topper [Tue, 13 Nov 2018 23:06:49 +0000 (23:06 +0000)]
Preserve loop metadata when splitting exit blocks

LoopUtils.cpp contains a utility that splits an loop exit block, so that the new block contains only edges coming from the loop. In the case of nested loops, the exit path for the inner loop might also be the back-edge of the outer loop. The new block which is inserted on this path, is now a latch for the outer loop, and it needs to hold the loop metadata for the outer loop. (The test case gives a more concrete view of the situation.)

Patch by Chang Lin (clin1)

Differential Revision: https://reviews.llvm.org/D53876

llvm-svn: 346810

5 years ago[MachineOutliner][NFC] Use MBB flags to avoid call checks in getOutliningInfo
Jessica Paquette [Tue, 13 Nov 2018 23:01:34 +0000 (23:01 +0000)]
[MachineOutliner][NFC] Use MBB flags to avoid call checks in getOutliningInfo

We already determine a bunch of information about an MBB in
getMachineOutlinerMBBFlags. We can reuse that information to avoid calculating
things that must be false/true.

The first thing we can easily check is if an outlined sequence could ever
contain calls. There's no reason to walk over the outlined range, checking for
calls, if we already know that there are no calls in the block containing the
sequence.

llvm-svn: 346809

5 years agoFix "use of" uninitialized memory in benchmark.
Eric Fiselier [Tue, 13 Nov 2018 23:00:55 +0000 (23:00 +0000)]
Fix "use of" uninitialized memory in benchmark.

An argument to DoNotOptimize was not fully initialized, which caused
msan to complain.

llvm-svn: 346808

5 years ago[InstCombine] canonicalize rotate patterns with cmp/select
Sanjay Patel [Tue, 13 Nov 2018 22:47:24 +0000 (22:47 +0000)]
[InstCombine] canonicalize rotate patterns with cmp/select

The cmp+branch variant of this pattern is shown in:
https://bugs.llvm.org/show_bug.cgi?id=34924
...and as discussed there, we probably can't transform
that without a rotate intrinsic. We do have that now
via funnel shift, but we're not quite ready to
canonicalize IR to that form yet. The case with 'select'
should already be transformed though, so that's this patch.

The sequence with negation followed by masking is what we
use in the backend and partly in clang (though that part
should be updated).

https://rise4fun.com/Alive/TplC
  %cmp = icmp eq i32 %shamt, 0
  %sub = sub i32 32, %shamt
  %shr = lshr i32 %x, %shamt
  %shl = shl i32 %x, %sub
  %or = or i32 %shr, %shl
  %r = select i1 %cmp, i32 %x, i32 %or
  =>
  %neg = sub i32 0, %shamt
  %masked = and i32 %shamt, 31
  %maskedneg = and i32 %neg, 31
  %shl2 = lshr i32 %x, %masked
  %shr2 = shl i32 %x, %maskedneg
  %r = or i32 %shl2, %shr2

llvm-svn: 346807

5 years agoOpenCL: Don't warn on v printf modifier
Matt Arsenault [Tue, 13 Nov 2018 22:30:35 +0000 (22:30 +0000)]
OpenCL: Don't warn on v printf modifier

This avoids spurious warnings, but could use
a lot of work. For example the number of vector
elements is not verified, and the passed
value type is not checked.

Fixes bug 39486

llvm-svn: 346806

5 years agoMark #2184 as complete; the tests are fine. (I thought that they were wrong before)
Marshall Clow [Tue, 13 Nov 2018 22:26:03 +0000 (22:26 +0000)]
Mark #2184 as complete; the tests are fine. (I thought that they were wrong before)

llvm-svn: 346805

5 years ago[lsan] [FIXUP] Fixup for http://reviews.llvm.org/D54484
George Karpenkov [Tue, 13 Nov 2018 22:17:16 +0000 (22:17 +0000)]
[lsan] [FIXUP] Fixup for reviews.llvm.org/D54484

After the change, the tests started failing, as skipped sections can be
equal in size to kMaxSegName.
Changing `<` to `<=` to address the off-by-one problem.

llvm-svn: 346804

5 years ago[MachineOutliner][NFC] Exit getOutliningType if there are < 2 candidates
Jessica Paquette [Tue, 13 Nov 2018 22:16:27 +0000 (22:16 +0000)]
[MachineOutliner][NFC] Exit getOutliningType if there are < 2 candidates

Since we never outline anything with fewer than 2 occurrences, there's no
reason to compute cost model information if there's less than that.

llvm-svn: 346803

5 years ago[Driver] Support g++ headers in include/g++
David Greene [Tue, 13 Nov 2018 21:38:45 +0000 (21:38 +0000)]
[Driver] Support g++ headers in include/g++

ray's gcc installation puts C++ headers in PREFIX/include/g++ without
indicating a gcc version at all. Typically this is because the version
is encoded somewhere in PREFIX.

Differential Revision: https://reviews.llvm.org/D53770

llvm-svn: 346802

5 years ago[AST] Revert r346793 and r346781
Bruno Ricci [Tue, 13 Nov 2018 21:33:22 +0000 (21:33 +0000)]
[AST] Revert r346793 and r346781

This somehow breaks the msan bots. Revert while I figure it out.

llvm-svn: 346801

5 years ago[AMDGPU] combine extractelement into several selects
Stanislav Mekhanoshin [Tue, 13 Nov 2018 21:18:21 +0000 (21:18 +0000)]
[AMDGPU] combine extractelement into several selects

An extractelement with non-constant index will be lowered either to
scratch or movrel loop in most cases. This patch converts such
instruction into a set of selects if vector size is not too big.

Differential Revision: https://reviews.llvm.org/D54351

llvm-svn: 346800

5 years ago[NFC] Mark LWG3128 and LWG3132 as requiring no work
Louis Dionne [Tue, 13 Nov 2018 21:13:10 +0000 (21:13 +0000)]
[NFC] Mark LWG3128 and LWG3132 as requiring no work

Those LWG issues were adopted in San Diego and require no work
on our side.

llvm-svn: 346799

5 years ago[MemorySSA] Create query after checking if instruction is a fence.
Alina Sbirlea [Tue, 13 Nov 2018 21:12:49 +0000 (21:12 +0000)]
[MemorySSA] Create query after checking if instruction is a fence.

The alternative is checking if I is a fence in the Query constructor, so
as to not attempt to get a non-existent MemoryLocation.

llvm-svn: 346798

5 years ago[AsmPrinter] Fix DebugInfo/X86/gnu-public-names.ll after rL346790
Fangrui Song [Tue, 13 Nov 2018 20:59:25 +0000 (20:59 +0000)]
[AsmPrinter] Fix DebugInfo/X86/gnu-public-names.ll after rL346790

llvm-svn: 346797

5 years ago[ELF] Add a better test for the multi-CU .gdb_index bug that D54361 fixed
Fangrui Song [Tue, 13 Nov 2018 20:49:36 +0000 (20:49 +0000)]
[ELF] Add a better test for the multi-CU .gdb_index bug that D54361 fixed

gdb-index-multiple-cu-2.s puts the symbol in question to another object file %t1.o, so that its CuIndex is affected by the number of CUs in %t.o

Also change `Kind:` in a comment to `Attributes:` as a follow-up of D54480 and D54481

llvm-svn: 346796

5 years agoFixed DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT i1 handling
Stanislav Mekhanoshin [Tue, 13 Nov 2018 20:26:27 +0000 (20:26 +0000)]
Fixed DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT i1 handling

Legalizer used to request an ext load from i8 to i1 when promoting
vector element type to i8. Fixed.

Differential Revision: https://reviews.llvm.org/D54440

llvm-svn: 346795

5 years ago[ELF] Rename NameTypeEntry to NameAttrEntry and its field "Type" to CuIndexAndAttrs
Fangrui Song [Tue, 13 Nov 2018 20:25:51 +0000 (20:25 +0000)]
[ELF] Rename NameTypeEntry to NameAttrEntry and its field "Type" to CuIndexAndAttrs

Summary:
NameTypeEntry::Type is a bit-packed value of CU index+attributes (https://sourceware.org/gdb//onlinedocs/gdb/Index-Section-Format.html), which is named cu_index_and_attrs in a local variable in gdb/dwarf2read.c:dw2_symtab_iter_next

The new name CuIndexAndAttrs is more meaningful.

Reviewers: ruiu, dblaikie, espindola

Reviewed By: dblaikie

Subscribers: emaste, aprantl, arichardson, JDevlieghere, arphaman, llvm-commits

Differential Revision: https://reviews.llvm.org/D54481

llvm-svn: 346794

5 years ago[AST][NFC] Order the bit-field classes of Stmt like in StmtNodes.td
Bruno Ricci [Tue, 13 Nov 2018 20:23:11 +0000 (20:23 +0000)]
[AST][NFC] Order the bit-field classes of Stmt like in StmtNodes.td

Reorder the bit-field classes and the members of the anonymous union
so that they both match the order in StmtNodes.td.

There is already a fair amount of them, and this is not going to
improve. Therefore lets try to keep some order here.

Strictly NFC.

llvm-svn: 346793

5 years ago[lsan] [NFC] Change ARRAY_SIZE to internal_strnlen
George Karpenkov [Tue, 13 Nov 2018 20:19:38 +0000 (20:19 +0000)]
[lsan] [NFC] Change ARRAY_SIZE to internal_strnlen

Calling ARRAY_SIZE on a char* will not actually compute it's size, but just the pointer size.
A new Clang warning enabled by default warns about this.

Replaced the call with internal_strnlen.

Differential Revision: https://reviews.llvm.org/D54484

llvm-svn: 346792

5 years ago[MS Demangler] Print public:, protected:, private: if set in FunctionClass or a varia...
Nico Weber [Tue, 13 Nov 2018 20:18:26 +0000 (20:18 +0000)]
[MS Demangler] Print public:, protected:, private: if set in FunctionClass or a variable's StorageClass.

undname prints them, and the information is in the decorated name, so we probably shouldn't lose it when undecorating.

I spot-checked a few of the funnier-looking outputs, and undname has the same output.

Differential Revision: https://reviews.llvm.org/D54396

llvm-svn: 346791

5 years ago[AsmPrinter] Rename a comment of .debug_gnu_pubnames entry
Fangrui Song [Tue, 13 Nov 2018 20:18:08 +0000 (20:18 +0000)]
[AsmPrinter] Rename a comment of .debug_gnu_pubnames entry

Summary:
The comment refers to the field as "Kind:". However, in gdb,

https://sourceware.org/gdb//onlinedocs/gdb/Index-Section-Format.html names it "attributes",
gdb/dwarf2read.c:dw2_symtab_iter_next refers to the whole value as "cu_index_and_attrs"

Change it to `Attributes:` for consistency.

Reviewers: dblaikie

Reviewed By: dblaikie

Subscribers: aprantl, JDevlieghere, arphaman, llvm-commits

Differential Revision: https://reviews.llvm.org/D54480

llvm-svn: 346790

5 years agoDebugInfo: Add a driver flag for DWARF debug_ranges base address specifier use.
David Blaikie [Tue, 13 Nov 2018 20:08:13 +0000 (20:08 +0000)]
DebugInfo: Add a driver flag for DWARF debug_ranges base address specifier use.

Summary:
This saves a lot of relocations in optimized object files (at the cost
of some cost/increase in linked executable bytes), but gold's 32 bit
gdb-index support has a bug (
https://sourceware.org/bugzilla/show_bug.cgi?id=21894 ) so we can't
switch to this unconditionally. (& even if it weren't for that bug, one
might argue that some users would want to optimize in one direction or
the other - prioritizing object size or linked executable size)

Differential Revision: https://reviews.llvm.org/D54243

llvm-svn: 346789

5 years agoDebugInfo: Add a CU metadata attribute for use of DWARF ranges base address specifiers
David Blaikie [Tue, 13 Nov 2018 20:08:10 +0000 (20:08 +0000)]
DebugInfo: Add a CU metadata attribute for use of DWARF ranges base address specifiers

Summary:
Ranges base address specifiers can save a lot of object size in
relocation records especially in optimized builds.

For an optimized self-host build of Clang with split DWARF and debug
info compression in object files, but uncompressed debug info in the
executable, this change produces about 18% smaller object files and 6%
larger executable.

While it would've been nice to turn this on by default, gold's 32 bit
gdb-index support crashes on this input & I don't think there's any
perfect heuristic to implement solely in LLVM that would suffice - so
we'll need a flag one way or another (also possible people might want to
aggressively optimized for executable size that contains debug info
(even with compression this would still come at some cost to executable
size)) - so let's plumb it through.

Differential Revision: https://reviews.llvm.org/D54242

llvm-svn: 346788

5 years ago[NativePDB] Add support for S_CONSTANT records.
Zachary Turner [Tue, 13 Nov 2018 20:07:57 +0000 (20:07 +0000)]
[NativePDB] Add support for S_CONSTANT records.

clang-cl does not emit these, but MSVC does, so we need to be able to
handle them.

Because clang-cl does not generate them, it was a bit hard to write a
test. So what I had to do was get an PDB file with some S_CONSTANT
records in using cl and link, dump it using llvm-pdbutil dump -globals
-sym-data to get the bytes of the records, generate the same object file
using clang-cl but with -S to emit an assembly file, and replace all the
S_LDATA32 records with the bytes of the S_CONSTANT records. This way, we
can compile the file using llvm-mc and link it with lld-link.

Differential Revision: https://reviews.llvm.org/D54452

llvm-svn: 346787

5 years ago[NativePDB] Improved support for nested type reconstruction.
Zachary Turner [Tue, 13 Nov 2018 20:07:32 +0000 (20:07 +0000)]
[NativePDB] Improved support for nested type reconstruction.

In a previous patch, we pre-processed the TPI stream in order to build
the reverse mapping from nested type -> parent type so that we could
accurately reconstruct a DeclContext hierarchy.

However, there were some issues. An LF_NESTTYPE record is really just a
typedef, so although it happens to be used to indicate the name of the
nested type and referring to the global record which defines the type,
it is also used for every other kind of nested typedef. When we rebuild
the DeclContext hierarchy, we want it to be as accurate as possible,
which means that if we have something like:

  struct A {
    struct B {};
    using C = B;
  };

We don't want to create two CXXRecordDecls in the AST each with the
exact same definition. We just want to create one for B and then
define C as an alias to B. Previously, however, it would not be able
to distinguish between the two cases and it would treat A::B and
A::C as being two classes each with separate definitions. We address
the first half of improving the pre-processing logic so that only
actual definitions are treated this way.

Later, in a followup patch, we can handle the case of nested
typedefs since we're already going to be enumerating the field list
anyway and this patch introduces the general framework for
distinguishing between the two cases.

Differential Revision: https://reviews.llvm.org/D54357

llvm-svn: 346786

5 years agoAdd fneg instruction to syntax highlighting lists
Matt Arsenault [Tue, 13 Nov 2018 19:50:38 +0000 (19:50 +0000)]
Add fneg instruction to syntax highlighting lists

llvm-svn: 346785

5 years ago[SelectionDAG][X86] Relax restriction on the width of an input to *_EXTEND_VECTOR_INR...
Craig Topper [Tue, 13 Nov 2018 19:45:21 +0000 (19:45 +0000)]
[SelectionDAG][X86] Relax restriction on the width of an input to *_EXTEND_VECTOR_INREG. Use them and regular *_EXTEND to replace the X86 specific VSEXT/VZEXT opcodes

Previously, the extend_vector_inreg opcode required their input register to be the same total width as their output. But this doesn't match up with how the X86 instructions are defined. For X86 the input just needs to be a legal type with at least enough elements to cover the output.

This patch weakens the check on these nodes and allows them to be used as long as they have more input elements than output elements. I haven't changed type legalization behavior so it will still create them with matching input and output sizes.

X86 will custom legalize these nodes by shrinking the input to be a 128 bit vector and once we've done that we treat them as legal operations. We still have one case during type legalization where we must custom handle v64i8 on avx512f targets without avx512bw where v64i8 isn't a legal type. In this case we will custom type legalize to a *extend_vector_inreg with a v16i8 input. After that the input is a legal type so type legalization should ignore the node and doesn't need to know about the relaxed restriction. We are no longer allowed to use the default expansion for these nodes during vector op legalization since the default expansion uses a shuffle which required the widths to match. Custom legalization for all types will prevent us from reaching the default expansion code.

I believe DAG combine works correctly with the released restriction because it doesn't check the number of input elements.

The rest of the patch is changing X86 to use either the vector_inreg nodes or the regular zero_extend/sign_extend nodes. I had to add additional isel patterns to handle any_extend during isel since simplifydemandedbits can create them at any time so we can't legalize to zero_extend before isel. We don't yet create any_extend_vector_inreg in simplifydemandedbits.

Differential Revision: https://reviews.llvm.org/D54346

llvm-svn: 346784

5 years ago[Cocoa] Implement formatter for the new NSDate representation.
Davide Italiano [Tue, 13 Nov 2018 19:43:43 +0000 (19:43 +0000)]
[Cocoa] Implement formatter for the new NSDate representation.

<rdar://problem/46002786>

llvm-svn: 346783

5 years ago[llvm-objcopy] Rename --keep to --keep-section.
Jordan Rupprecht [Tue, 13 Nov 2018 19:32:27 +0000 (19:32 +0000)]
[llvm-objcopy] Rename --keep to --keep-section.

Summary:
llvm-objcopy/strip support `--keep` (for sections) and `--keep-symbols` (for symbols). For consistency and clarity, rename `--keep` to `--keep-section`.
In fact, for GNU compatability, -K is --keep-symbol, so it's weird that the alias `-K` is not the same as the short-ish `--keep`.

Reviewers: jakehehrlich, jhenderson, alexshap, MaskRay, espindola

Reviewed By: jakehehrlich, MaskRay

Subscribers: emaste, arichardson, llvm-commits

Differential Revision: https://reviews.llvm.org/D54477

llvm-svn: 346782

5 years ago[AST][NFC] Style fixes for UnaryOperator
Bruno Ricci [Tue, 13 Nov 2018 19:27:39 +0000 (19:27 +0000)]
[AST][NFC] Style fixes for UnaryOperator

In preparation for the patch which will move some data to the bit-fields
of Stmt. In particular, rename the private variable "Val" -> "Operand"
since the substatement is the operand of the unary operator.
Run clang-format on UnaryOperator. NFC otherwise.

llvm-svn: 346781

5 years agoAdd GDB remote packet reproducer.
Jonas Devlieghere [Tue, 13 Nov 2018 19:18:16 +0000 (19:18 +0000)]
Add GDB remote packet reproducer.

llvm-svn: 346780

5 years agoFix UB in string.bench.cpp.
Eric Fiselier [Tue, 13 Nov 2018 19:16:19 +0000 (19:16 +0000)]
Fix UB in string.bench.cpp.

The usage of aligned_storage failed to pass the alignment it wanted,
which caused it to have a larger size and alignment that the
std::string's it was intended to store.

This patch manually specifies the alignment, as well as cleaning up
type alias bugs.

llvm-svn: 346779

5 years ago[WebAssembly] Fix broken assumption that all bitcasts are to functions types
Sam Clegg [Tue, 13 Nov 2018 19:14:02 +0000 (19:14 +0000)]
[WebAssembly] Fix broken assumption that all bitcasts are to functions types

Specifically, we can bitcast to void.

Fixes PR39591

Differential Revision: https://reviews.llvm.org/D54447

llvm-svn: 346778

5 years ago[COFF] Simplify relocation to discarded section diagnostic code, NFC
Reid Kleckner [Tue, 13 Nov 2018 18:30:31 +0000 (18:30 +0000)]
[COFF] Simplify relocation to discarded section diagnostic code, NFC

Move it out of the loop that applies relocations for readability.

llvm-svn: 346777

5 years ago[FileSystem] Add expand_tilde function
Jonas Devlieghere [Tue, 13 Nov 2018 18:23:32 +0000 (18:23 +0000)]
[FileSystem] Add expand_tilde function

In D54435 there was some discussion about the expand_tilde flag for
real_path that I wanted to expose through the VFS. The consensus is that
these two things should be separate functions. Since we already have the
code for this I went ahead and added a function expand_tilde that does
just that.

Differential revision: https://reviews.llvm.org/D54448

llvm-svn: 346776

5 years agoSince ABI's now hold a process WP, they should be handed
Jim Ingham [Tue, 13 Nov 2018 18:18:32 +0000 (18:18 +0000)]
Since ABI's now hold a process WP, they should be handed
out one per process rather than keeping a single global instance.

Differential Revision: https://reviews.llvm.org/D54460

llvm-svn: 346775

5 years ago[IR] Add a dedicated FNeg IR Instruction
Cameron McInally [Tue, 13 Nov 2018 18:15:47 +0000 (18:15 +0000)]
[IR] Add a dedicated FNeg IR Instruction

The IEEE-754 Standard makes it clear that fneg(x) and
fsub(-0.0, x) are two different operations. The former is a bitwise
operation, while the latter is an arithmetic operation. This patch
creates a dedicated FNeg IR Instruction to model that behavior.

Differential Revision: https://reviews.llvm.org/D53877

llvm-svn: 346774

5 years ago[WebAssembly] Mark immediates.ll as XFAILed on MIPS hosts
Simon Atanasyan [Tue, 13 Nov 2018 18:14:29 +0000 (18:14 +0000)]
[WebAssembly] Mark immediates.ll as XFAILed on MIPS hosts

Usually MIPS hosts uses a legacy (non IEEE 754-2008) encoding for NaNs.
Tests like `nan_f32` failed in attempt to compare hard-coded IEEE
754-2008 NaN value and a legacy NaN value provided by a system.

llvm-svn: 346773

5 years agoRemove duplicate entry for issue 3134
Marshall Clow [Tue, 13 Nov 2018 18:07:51 +0000 (18:07 +0000)]
Remove duplicate entry for issue 3134

llvm-svn: 346772

5 years agoUpdate status for issue 3122
Marshall Clow [Tue, 13 Nov 2018 18:05:10 +0000 (18:05 +0000)]
Update status for issue 3122

llvm-svn: 346771

5 years ago[AST][NFC] Pack DeclRefExpr
Bruno Ricci [Tue, 13 Nov 2018 17:56:44 +0000 (17:56 +0000)]
[AST][NFC] Pack DeclRefExpr

Move the SourceLocation to the bit-fields of Stmt + clang-format.
This saves one pointer per DeclRefExpr but otherwise NFC.

llvm-svn: 346770

5 years ago[CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater.
Florian Hahn [Tue, 13 Nov 2018 17:54:43 +0000 (17:54 +0000)]
[CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater.

This patch updates DuplicateInstructionsInSplitBetween to update a DTU
instead of applying updates to the DT directly.

Given that there only are 2 users, also updated them in this patch to
avoid churn.

I slightly moved the code in CallSiteSplitting around to reduce the
places where we have to pass in DTU. If necessary, I could split those
changes in a separate patch.

This fixes missing DT updates when dealing with musttail calls in
CallSiteSplitting, by using DTU->deleteBB.

Reviewers: junbuml, kuhar, NutshellySima, indutny, brzycki

Reviewed By: NutshellySima

llvm-svn: 346769

5 years agoRevert "[ThinLTO] Internalize readonly globals"
Steven Wu [Tue, 13 Nov 2018 17:35:04 +0000 (17:35 +0000)]
Revert "[ThinLTO] Internalize readonly globals"

This reverts commit 10c84a8f35cae4a9fc421648d9608fccda3925f2.

llvm-svn: 346768

5 years ago[NFC][libcxx] Mark P1006R1 as complete
Louis Dionne [Tue, 13 Nov 2018 17:33:11 +0000 (17:33 +0000)]
[NFC][libcxx] Mark P1006R1 as complete

llvm-svn: 346767

5 years agoImplement P0972R0: <chrono> zero(), min(), and max() should be noexcept. Reviewed...
Marshall Clow [Tue, 13 Nov 2018 17:22:41 +0000 (17:22 +0000)]
Implement P0972R0: <chrono> zero(), min(), and max() should be noexcept. Reviewed as https://reviews.llvm.org/D53828

llvm-svn: 346766

5 years ago[NFC][libcxx] Mark P1006 as implemented in LLVM 8.0
Louis Dionne [Tue, 13 Nov 2018 17:09:25 +0000 (17:09 +0000)]
[NFC][libcxx] Mark P1006 as implemented in LLVM 8.0

It was implemented in https://reviews.llvm.org/D53867

llvm-svn: 346765

5 years ago[libcxx] Implement http://wg21.link/p1006, constexpr in pointer_traits
Louis Dionne [Tue, 13 Nov 2018 17:04:05 +0000 (17:04 +0000)]
[libcxx] Implement wg21.link/p1006, constexpr in pointer_traits

Summary:
P1006 adds support for constexpr in the specialization of pointer_traits
for raw pointers. This is necessary in order to use pointer_traits in
the upcoming constexpr containers. We expect P1006 to be voted into the
working draft for C++20 at the San Diego meeting.

Reviewers: mclow.lists, EricWF

Subscribers: christof, dexonsmith, libcxx-commits

Differential Revision: https://reviews.llvm.org/D53867

llvm-svn: 346764

5 years ago[libcxx] GNU/Hurd uses BSD-based interfaces, but does not (and won't) provide <sys...
Louis Dionne [Tue, 13 Nov 2018 17:00:04 +0000 (17:00 +0000)]
[libcxx] GNU/Hurd uses BSD-based interfaces, but does not (and won't) provide <sys/sysctl.h>

Reviewed as https://reviews.llvm.org/D54338.

Thanks to sthibaul for the patch.

llvm-svn: 346763

5 years ago[InstCombine] add tests for funnel shift demanded bits; NFC
Sanjay Patel [Tue, 13 Nov 2018 16:47:16 +0000 (16:47 +0000)]
[InstCombine] add tests for funnel shift demanded bits; NFC

llvm-svn: 346762

5 years agoFix uninitialized variable.
Alexander Kornienko [Tue, 13 Nov 2018 16:41:05 +0000 (16:41 +0000)]
Fix uninitialized variable.

Flags variable was not initialized and later used (both isMBBSafeToOutlineFrom
implementations assume it's initialized), which breaks
test/CodeGen/AArch64/machine-outliner.mir. under memory sanitizer:
MemorySanitizer: use-of-uninitialized-value
    #0  in llvm::AArch64InstrInfo::getOutliningType(llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>&, unsigned int) const llvm/lib/Target/AArch64/AArch64InstrInfo.cpp:5494:9
    #1  in (anonymous namespace)::InstructionMapper::convertToUnsignedVec(llvm::MachineBasicBlock&, llvm::TargetInstrInfo const&) llvm/lib/CodeGen/MachineOutliner.cpp:772:19
    #2  in (anonymous namespace)::MachineOutliner::populateMapper((anonymous namespace)::InstructionMapper&, llvm::Module&, llvm::MachineModuleInfo&) llvm/lib/CodeGen/MachineOutliner.cpp:1543:14
    #3  in (anonymous namespace)::MachineOutliner::runOnModule(llvm::Module&) llvm/lib/CodeGen/MachineOutliner.cpp:1645:3
    #4  in (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) llvm/lib/IR/LegacyPassManager.cpp:1744:27
    #5  in llvm::legacy::PassManagerImpl::run(llvm::Module&) llvm/lib/IR/LegacyPassManager.cpp:1857:44
    #6  in compileModule(char**, llvm::LLVMContext&) llvm/tools/llc/llc.cpp:597:8

llvm-svn: 346761

5 years ago[CostModel][X86] Fix constant vector XOP rights shifts
Simon Pilgrim [Tue, 13 Nov 2018 16:40:10 +0000 (16:40 +0000)]
[CostModel][X86] Fix constant vector XOP rights shifts

We'll constant fold these cases so they are as cheap as vector left shift cases.

Noticed while improving funnel shift costs.

llvm-svn: 346760

5 years ago[VectorUtils] Use namespace for InterleaveGroup template specialization.
Florian Hahn [Tue, 13 Nov 2018 16:26:34 +0000 (16:26 +0000)]
[VectorUtils] Use namespace for InterleaveGroup template specialization.

llvm-svn: 346759

5 years ago[VPlan] VPlan version of InterleavedAccessInfo.
Florian Hahn [Tue, 13 Nov 2018 15:58:18 +0000 (15:58 +0000)]
[VPlan] VPlan version of InterleavedAccessInfo.

This patch turns InterleaveGroup into a template with the instruction type
being a template parameter. It also adds a VPInterleavedAccessInfo class, which
only contains a mapping from VPInstructions to their respective InterleaveGroup.
As we do not have access to scalar evolution in VPlan, we can re-use
convert InterleavedAccessInfo to VPInterleavedAccess info.

Reviewers: Ayal, mssimpso, hfinkel, dcaballe, rengolin, mkuper, hsaito

Reviewed By: rengolin

Differential Revision: https://reviews.llvm.org/D49489

llvm-svn: 346758

5 years ago[NFC] Move storage of dispatch-version to GlobalDecl
Erich Keane [Tue, 13 Nov 2018 15:48:08 +0000 (15:48 +0000)]
[NFC] Move storage of dispatch-version to GlobalDecl

As suggested by Richard Smith, and initially put up for review here:
https://reviews.llvm.org/D53341, this patch removes a hack that was used
to ensure that proper target-feature lists were used when emitting
cpu-dispatch (and eventually, target-clones) implementations. As a part
of this, the GlobalDecl object is proliferated to a bunch more
locations.

Originally, this was put up for review (see above) to get acceptance on
the approach, though discussion with Richard in San Diego showed he
approved of the approach taken here.  Thus, I believe this is acceptable
for Review-After-commit

Differential Revision: https://reviews.llvm.org/D53341

Change-Id: I0a0bd673340d334d93feac789d653e03d9f6b1d5
llvm-svn: 346757

5 years ago[clang-format] Do not treat the asm clobber [ as ObjCExpr
Krasimir Georgiev [Tue, 13 Nov 2018 15:38:12 +0000 (15:38 +0000)]
[clang-format] Do not treat the asm clobber [ as ObjCExpr

Summary:
The opening square of an inline asm clobber was being annotated as an ObjCExpr.
This caused, amongst other things, the ObjCGuesser to guess header files
containing that pattern as ObjC files.

Reviewers: benhamilton

Reviewed By: benhamilton

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D54111

llvm-svn: 346756

5 years ago[TTI] Make TargetTransformInfo::getOperandInfo static. NFCI.
Simon Pilgrim [Tue, 13 Nov 2018 13:45:10 +0000 (13:45 +0000)]
[TTI] Make TargetTransformInfo::getOperandInfo static. NFCI.

It has no member dependencies and this makes it easier to reuse in other cost analysis code.

llvm-svn: 346755

5 years ago[CostModel][X86] Add more cost tests for funnel shifts
Simon Pilgrim [Tue, 13 Nov 2018 12:11:15 +0000 (12:11 +0000)]
[CostModel][X86] Add more cost tests for funnel shifts

Added full uniform/constant coverage for funnel shifts + rotates

llvm-svn: 346754

5 years agoFix comment for XOP rotates. NFCI.
Simon Pilgrim [Tue, 13 Nov 2018 12:09:27 +0000 (12:09 +0000)]
Fix comment for XOP rotates. NFCI.

llvm-svn: 346753

5 years agoAdd bracket that was lost in rL346727 and has been causing buildbot failures for...
Simon Pilgrim [Tue, 13 Nov 2018 11:28:46 +0000 (11:28 +0000)]
Add bracket that was lost in rL346727 and has been causing buildbot failures for some time.

llvm-svn: 346752

5 years agoFix .cfi_restore with register numbers > 64
Alexander Richardson [Tue, 13 Nov 2018 10:54:49 +0000 (10:54 +0000)]
Fix .cfi_restore with register numbers > 64

Summary:
DW_CFA_restore can only encode register numbers up to 64 (6 bits unsigned
int). For regsiter numbers > 64 we have to use DW_CFA_restore_extended
instead which uses a ULEB128 value.
I discovered this problem in the out-of-tree CHERI target since we use
DWARF register number 89 for our return capability register.

Reviewers: probinson, dblaikie, aprantl, espindola

Reviewed By: dblaikie

Subscribers: JohnReagan, emaste, JDevlieghere, llvm-commits

Differential Revision: https://reviews.llvm.org/D54420

llvm-svn: 346751

5 years agoFix modules build of AVRAsmParser.cpp
Alexander Richardson [Tue, 13 Nov 2018 10:54:44 +0000 (10:54 +0000)]
Fix modules build of AVRAsmParser.cpp

Summary:
Without this change I get the following error:

lib/Target/AVR/AVRGenAsmMatcher.inc:1135:1: error: redundant #include of module 'LLVM_Utils.Support.Format' appears within namespace 'llvm' [-Wmodules-import-nested-redundant]

Reviewers: dylanmckay

Reviewed By: dylanmckay

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D53425

llvm-svn: 346750

5 years ago[ELF] - Renamed AArch64 specific relocations expressions. NFC.
George Rimar [Tue, 13 Nov 2018 10:16:36 +0000 (10:16 +0000)]
[ELF] - Renamed AArch64 specific relocations expressions. NFC.

They did not have AArch64 prefix. Now they do.

llvm-svn: 346749

5 years agoUserManual: Tweak the /Zc:dllexportInlines- docs some
Hans Wennborg [Tue, 13 Nov 2018 09:05:12 +0000 (09:05 +0000)]
UserManual: Tweak the /Zc:dllexportInlines- docs some

Addressing comments on https://reviews.llvm.org/D54319

llvm-svn: 346748

5 years ago[ELF] .gdb_index: fix CuOff when a .debug_info section contains more than 1 DW_TAG_co...
Fangrui Song [Tue, 13 Nov 2018 08:43:07 +0000 (08:43 +0000)]
[ELF] .gdb_index: fix CuOff when a .debug_info section contains more than 1 DW_TAG_compile_unit

Summary:
Idx passed to readPubNamesAndTypes was an index into Chunks, not an
index into the CU list. This would be incorrect if some .debug_info
section contained more than 1 DW_TAG_compile_unit.

In real world, glibc Scrt1.o is a partial link of start.os abi-note.o init.o and contains 2 CUs in debug builds.
Without this patch, any application linking such Scrt1.o would have invalid .gdb_index
The issue could be demonstrated by:

    (gdb) py print(gdb.lookup_global_symbol('main'))
    None

Reviewers: espindola, ruiu

Reviewed By: ruiu

Subscribers: Higuoxing, grimar, dblaikie, emaste, aprantl, arichardson, JDevlieghere, arphaman, llvm-commits

Differential Revision: https://reviews.llvm.org/D54361

llvm-svn: 346747

5 years ago[SystemZ] Increase the number of VLREPs
Jonas Paulsson [Tue, 13 Nov 2018 08:37:09 +0000 (08:37 +0000)]
[SystemZ]  Increase the number of VLREPs

If a loaded value is replicated it is best to combine these two operations
into a VLREP (load and replicate), but isel will not produce this if the load
has other users as well.

This patch handles this by putting the other users of the load to use the
REPLICATE 0-element instead of the load. This way the load has only the
REPLICATE node as user, and we get a VLREP.

Review: Ulrich Weigand
https://reviews.llvm.org/D54264

llvm-svn: 346746

5 years ago[X86] Add more tests for -x86-experimental-vector-widening-legalization
Craig Topper [Tue, 13 Nov 2018 07:47:52 +0000 (07:47 +0000)]
[X86] Add more tests for -x86-experimental-vector-widening-legalization

I'm looking into whether we can make this the default legalization strategy. Adding these tests to help cover the changes that will be necessary.

This patch adds copies of some tests with the command line switch enabled. By making copies its easier to compare the two legalization strategies.

I've also removed RUN lines from some of these tests that already had -x86-experimental-vector-widening-legalization

llvm-svn: 346745

5 years agoAttempt to make benchmarks fall back to -std=c++1z when C++17 isn't supported.
Eric Fiselier [Tue, 13 Nov 2018 07:03:16 +0000 (07:03 +0000)]
Attempt to make benchmarks fall back to -std=c++1z when C++17 isn't supported.

The benchmarks currently require C++17, however Clang 3.9 doesn't
support -std=c++17 while still supporting all the C++17 features needed
to compile the benchmarks.

This patch makes the benchmark build attempt to fall back to -std=c++1z
when -std=c++17 isn't supported.

See llvm.org/PR39629

llvm-svn: 346744

5 years agoAdd emplace tests for multiset/unordered_multiset.
Eric Fiselier [Tue, 13 Nov 2018 06:30:36 +0000 (06:30 +0000)]
Add emplace tests for multiset/unordered_multiset.

This patch adds tests to ensure that multiset/unordered_multiset's emplace
method correctly constructs the elements without any intervening
constructions.

llvm-svn: 346743

5 years ago[FileCheck] fixing docs buildbot - use proper code-block type
Fedor Sergeev [Tue, 13 Nov 2018 05:47:01 +0000 (05:47 +0000)]
[FileCheck] fixing docs buildbot - use proper code-block type

llvm-svn: 346740

5 years agoFix PR39619 - iterator_traits isn't SFINAE-friendly enough. Thanks to Eric for the...
Marshall Clow [Tue, 13 Nov 2018 05:33:31 +0000 (05:33 +0000)]
Fix PR39619 - iterator_traits isn't SFINAE-friendly enough. Thanks to Eric for the report

llvm-svn: 346738

5 years ago[clang-cl] Do not allow using both /Zc:dllexportInlines- and /fallback flag
Takuto Ikuta [Tue, 13 Nov 2018 04:14:09 +0000 (04:14 +0000)]
[clang-cl] Do not allow using both /Zc:dllexportInlines- and /fallback flag

Summary: /Zc:dllexportInlines with /fallback may cause unexpected linker error. It is better to disallow compile rather than warn for this combination.

Reviewers: hans, thakis

Reviewed By: hans

Subscribers: cfe-commits, llvm-commits

Differential Revision: https://reviews.llvm.org/D54426

llvm-svn: 346733