platform/upstream/llvm.git
8 years agoSimplify typedefs. NFC.
Rafael Espindola [Wed, 2 Nov 2016 15:33:59 +0000 (15:33 +0000)]
Simplify typedefs. NFC.

llvm-svn: 285819

8 years agoImplement another part of P0031; adding constexpr to move_iterator
Marshall Clow [Wed, 2 Nov 2016 15:30:26 +0000 (15:30 +0000)]
Implement another part of P0031; adding constexpr to move_iterator

llvm-svn: 285818

8 years agoInline a version of getSectionStringTable into the only use.
Rafael Espindola [Wed, 2 Nov 2016 15:23:32 +0000 (15:23 +0000)]
Inline a version of getSectionStringTable into the only use.

llvm-svn: 285817

8 years agoPass the section table to getSectionStringTable. NFC.
Rafael Espindola [Wed, 2 Nov 2016 15:21:24 +0000 (15:21 +0000)]
Pass the section table to getSectionStringTable. NFC.

This will let us simplify the llvm side.

llvm-svn: 285816

8 years agoCompute the section table lazily.
Rafael Espindola [Wed, 2 Nov 2016 15:15:59 +0000 (15:15 +0000)]
Compute the section table lazily.

As a consequence this move a bunch of error checking out of the constructor.

llvm-svn: 285815

8 years ago[mips] Always run the MipsOptimizePICCall pass.
Vasileios Kalintiris [Wed, 2 Nov 2016 15:11:27 +0000 (15:11 +0000)]
[mips] Always run the MipsOptimizePICCall pass.

Summary:
Remove this pass from addMachineSSAOptimization() and register it unconditionally in through addPreRegAlloc(). This pass is required for generating correct PIC calls.

Reviewers: sdardis

Subscribers: llvm-commits

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

llvm-svn: 285814

8 years agoCreate the virtual register for the global base in the intersection of
Joerg Sonnenberger [Wed, 2 Nov 2016 15:00:31 +0000 (15:00 +0000)]
Create the virtual register for the global base in the intersection of
GPRC and GPRC_NOR0 (or the 64bit equivalent) and not just the latter.
GPRC_NOR0 contains ZERO as alternative meaning of r0 and is therefore
not a true subclass of GPRC.

llvm-svn: 285813

8 years agoInline getSectionStringTableIndex() into only caller. NFC.
Rafael Espindola [Wed, 2 Nov 2016 14:52:50 +0000 (14:52 +0000)]
Inline getSectionStringTableIndex() into only caller. NFC.

llvm-svn: 285812

8 years agoDon't use getNumSections.
Rafael Espindola [Wed, 2 Nov 2016 14:42:20 +0000 (14:42 +0000)]
Don't use getNumSections.

It is just the size of sections() which we were already calling.

llvm-svn: 285811

8 years agoTurn on the /bigobj switch for RecursiveASTVisitorTest.cpp; we are now bumping up...
Aaron Ballman [Wed, 2 Nov 2016 14:31:36 +0000 (14:31 +0000)]
Turn on the /bigobj switch for RecursiveASTVisitorTest.cpp; we are now bumping up against that limit with MSVC 2015 in Win64 debug build mode.

llvm-svn: 285810

8 years agoAdd a new clang-tidy check for cert-msc50-cpp (and cert-msc30-c) that corresponds...
Aaron Ballman [Wed, 2 Nov 2016 14:16:36 +0000 (14:16 +0000)]
Add a new clang-tidy check for cert-msc50-cpp (and cert-msc30-c) that corresponds to the CERT C++ secure coding rule: https://securecoding.cert.org/confluence/display/cplusplus/MSC50-CPP.+Do+not+use+std%3A%3Arand%28%29+for+generating+pseudorandom+numbers

Patch by Benedek Kiss

llvm-svn: 285809

8 years agoUpdate for llvm change.
Rafael Espindola [Wed, 2 Nov 2016 14:11:05 +0000 (14:11 +0000)]
Update for llvm change.

llvm-svn: 285808

8 years agoAvoid a report_fatal_error in sections().
Rafael Espindola [Wed, 2 Nov 2016 14:10:57 +0000 (14:10 +0000)]
Avoid a report_fatal_error in sections().

Have it return a ErrorOr<Range> and delete section_begin and
section_end.

llvm-svn: 285807

8 years agoRemoving a switch statement that contains a default label, but no case labels. Silenc...
Aaron Ballman [Wed, 2 Nov 2016 13:58:57 +0000 (13:58 +0000)]
Removing a switch statement that contains a default label, but no case labels. Silences an MSVC warning; NFC.

llvm-svn: 285806

8 years agoSimplify SHF_LINK_ORDER handling. NFC.
Rafael Espindola [Wed, 2 Nov 2016 13:36:31 +0000 (13:36 +0000)]
Simplify SHF_LINK_ORDER handling. NFC.

While ARM is the only currently user we support this is a general
feature.

This avoids a second walk over the sections.

llvm-svn: 285805

8 years agogetNumSections should return a uintX_t. NFC.
Rafael Espindola [Wed, 2 Nov 2016 13:07:38 +0000 (13:07 +0000)]
getNumSections should return a uintX_t. NFC.

llvm-svn: 285804

8 years agoSimplify getSection. NFC.
Rafael Espindola [Wed, 2 Nov 2016 12:49:55 +0000 (12:49 +0000)]
Simplify getSection. NFC.

llvm-svn: 285803

8 years agoSimplify.
Joerg Sonnenberger [Wed, 2 Nov 2016 12:45:28 +0000 (12:45 +0000)]
Simplify.

llvm-svn: 285802

8 years agoRemove TimeValue usage from two files
Pavel Labath [Wed, 2 Nov 2016 12:18:42 +0000 (12:18 +0000)]
Remove TimeValue usage from two files

llvm-svn: 285801

8 years ago[SystemZ] Fix compiler warnings introduced by r285574
Ulrich Weigand [Wed, 2 Nov 2016 11:32:28 +0000 (11:32 +0000)]
[SystemZ] Fix compiler warnings introduced by r285574

SystemZAsmParser::parseOperand returns a bool, not an enum.

llvm-svn: 285800

8 years agoFix Clang-tidy readability-redundant-string-cstr warnings
Malcolm Parsons [Wed, 2 Nov 2016 10:39:27 +0000 (10:39 +0000)]
Fix Clang-tidy readability-redundant-string-cstr warnings

Reviewers: aaron.ballman, mehdi_amini, dblaikie

Subscribers: cfe-commits

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

llvm-svn: 285799

8 years agoFix printf errors in ProcessMinidump
Pavel Labath [Wed, 2 Nov 2016 10:29:47 +0000 (10:29 +0000)]
Fix printf errors in ProcessMinidump

llvm-svn: 285798

8 years agoRemove TimeValue from UnwindLLDB.cpp
Pavel Labath [Wed, 2 Nov 2016 10:27:54 +0000 (10:27 +0000)]
Remove TimeValue from UnwindLLDB.cpp

Really NFC, as the code is #ifdefed out, but I did make sure it compiles if I enable it.

llvm-svn: 285797

8 years ago[ELF] - Check that .dynsym is present in DSO if SHT_GNU_versym section is.
George Rimar [Wed, 2 Nov 2016 10:16:25 +0000 (10:16 +0000)]
[ELF] - Check that .dynsym is present in DSO if SHT_GNU_versym section is.

When we have SHT_GNU_versym section, it is should be associated with symbol table
section. Usually (and in out implementation) it is .dynsym.
In case when .dynsym is absent (due to broken object for example),
lld crashes in parseVerdefs() when accesses null pointer:

Versym = reinterpret_cast<const Elf_Versym *>(this->ELFObj.base() +
                                              VersymSec->sh_offset) +
         this->Symtab->sh_info;

DIfferential revision: https://reviews.llvm.org/D25553

llvm-svn: 285796

8 years agoRemove TimeValue usages from MacOSX-Kernel process plugin. NFC
Pavel Labath [Wed, 2 Nov 2016 10:13:54 +0000 (10:13 +0000)]
Remove TimeValue usages from MacOSX-Kernel process plugin. NFC

llvm-svn: 285795

8 years ago[llvm] FIx if-clause -Wmisleading-indentation issue.
Kirill Bobyrev [Wed, 2 Nov 2016 10:00:40 +0000 (10:00 +0000)]
[llvm] FIx if-clause -Wmisleading-indentation issue.

While bootstrapping Clang with recent `gcc 6.2.0` I found a bug related to misleading indentation.

I believe, a pair of `{}` was forgotten, especially given the above similar piece of code:

```
      if (!RDef || !HII->isPredicable(*RDef)) {
        Done = coalesceRegisters(RD, RegisterRef(S1));
        if (Done) {
          UpdRegs.insert(RD.Reg);
          UpdRegs.insert(S1.getReg());
        }
      }
```

Reviewers: kparzysz

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

llvm-svn: 285794

8 years ago[Reassociate] Skip analysis of dead code to avoid infinite loop.
Bjorn Pettersson [Wed, 2 Nov 2016 08:55:19 +0000 (08:55 +0000)]
[Reassociate] Skip analysis of dead code to avoid infinite loop.

Summary:
It was detected that the reassociate pass could enter an inifite
loop when analysing dead code. Simply skipping to analyse basic
blocks that are dead avoids such problems (and as a side effect
we avoid spending time on optimising dead code).

The solution is using the same Reverse Post Order ordering of the
basic blocks when doing the optimisations, as when building the
precalculated rank map. A nice side-effect of this solution is
that we now know that we only try to do optimisations for blocks
with ranked instructions.

Fixes https://llvm.org/bugs/show_bug.cgi?id=30818

Reviewers: llvm-commits, davide, eli.friedman, mehdi_amini

Subscribers: dberlin

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

llvm-svn: 285793

8 years agoRemove spurious token from #endif
Roger Ferrer Ibanez [Wed, 2 Nov 2016 08:36:43 +0000 (08:36 +0000)]
Remove spurious token from #endif

llvm-svn: 285792

8 years agoProtect tests for new/delete under libcpp-no-exceptions
Roger Ferrer Ibanez [Wed, 2 Nov 2016 08:14:57 +0000 (08:14 +0000)]
Protect tests for new/delete under libcpp-no-exceptions

Skip the tests that expect an exception be thrown and protect unreachable catch blocks.

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

llvm-svn: 285791

8 years ago[AVR] Add instruction selection lowering code
Dylan McKay [Wed, 2 Nov 2016 06:47:40 +0000 (06:47 +0000)]
[AVR] Add instruction selection lowering code

Summary: This adds AVRISelLowering.cpp

Reviewers: arsenm, kparzysz

Subscribers: llvm-commits, modocache, japaric, wdng, beanz, mgorny

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

llvm-svn: 285790

8 years ago[CMake] Set default build type correctly
Shoaib Meenai [Wed, 2 Nov 2016 06:10:03 +0000 (06:10 +0000)]
[CMake] Set default build type correctly

At least with cmake 3.6.1, the default build type setting was having no
effect; the generated CMakeCache.txt still had an empty CMAKE_BUILD_TYPE.
Force the variable to be set to achieve the desired behavior.

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

llvm-svn: 285789

8 years agoFix GCC test failure caused by manually defining _LIBCPP_HAS_NO_VARIADICS
Eric Fiselier [Wed, 2 Nov 2016 05:08:58 +0000 (05:08 +0000)]
Fix GCC test failure caused by manually defining _LIBCPP_HAS_NO_VARIADICS

llvm-svn: 285788

8 years ago[XRay][x86_64] Define a tail exit trampoline.
Dean Michael Berris [Wed, 2 Nov 2016 04:11:29 +0000 (04:11 +0000)]
[XRay][x86_64] Define a tail exit trampoline.

Summary:
We define a new trampoline that's a hybrid between the exit and entry
trampolines with the following properties:

- Saves all of the callee-saved registers according to the x86_64
  calling conventions.
- Indicate to the log handler function being called that this is a
  function exit event.

This fixes a bug that is a result of not saving enough of the register
states, and that the log handler is clobbering registers that would be
used by the function being tail-exited into manifesting as runtime
errors.

Reviewers: rSerge, echristo, majnemer

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 285787

8 years agoFix __libcpp_is_constructible for source types with explicit conversion operators.
Eric Fiselier [Wed, 2 Nov 2016 03:57:34 +0000 (03:57 +0000)]
Fix __libcpp_is_constructible for source types with explicit conversion operators.

Previously __libcpp_is_constructible checked the validity of reference
construction using 'eat<To>(declval<From>())' but this doesn't consider
From's explicit conversion operators. This patch teaches __libcpp_is_constructible
how to handle these cases. To do this we need to check the validity
using 'static_cast<To>(declval<From>())'. Unfortunately static_cast allows
additional base-to-derived and lvalue-to-rvalue conversions, which have to be
checked for and manually rejected.

While implementing these changes I discovered that Clang incorrectly
rejects `static_cast<int&&>(declval<float&>())` even though
`int &&X(declval<float&>())` is well formed. In order to tolerate this bug
the `__eat<T>(...)` needs to be left in-place. Otherwise it could be replaced
entirely with the new static_cast implementation.

Thanks to Walter Brown for providing the test cases.

llvm-svn: 285786

8 years agoBitcode: Fix short read implementation.
Peter Collingbourne [Wed, 2 Nov 2016 02:58:47 +0000 (02:58 +0000)]
Bitcode: Fix short read implementation.

We need to zero extend the byte in order to correctly shift it into a
64-bit value.

llvm-svn: 285785

8 years agoAdd strings to .dynstr early.
Rui Ueyama [Wed, 2 Nov 2016 02:18:01 +0000 (02:18 +0000)]
Add strings to .dynstr early.

Previously, we added strings from DynamicSection::finalize().
It was a bit tricky because finalize() is supposed to fix the final
size of the section, but adding new strings would change the size of
.dynstr section. So there was a dependency between finalize functions
of .dynamic and .dynstr.

However, I noticed that we can elimiante the dependency by simply
add strings early; we don't have to do that in finalize() but can do
from DynamicSection's ctor.

This patch defines a new function, DynamicSection::addEntries, to
add .dynamic entries that doesn't depend on other sections.

llvm-svn: 285784

8 years agoDisable the use of std::call_once on OpenBSD with libstdc++.
Brad Smith [Wed, 2 Nov 2016 01:39:01 +0000 (01:39 +0000)]
Disable the use of std::call_once on OpenBSD with libstdc++.

It was noticed this caused performance regressions and deadlocks. PR30768.

Reorder the code to make it clearer what is tested.

PPC now disables the use of std::call_once only with libstdc++ with
the reordering of the code, as was the original intent.

llvm-svn: 285782

8 years agoFix SBWatchpoint::SetEnabled to send an event.
Jim Ingham [Wed, 2 Nov 2016 01:06:42 +0000 (01:06 +0000)]
Fix SBWatchpoint::SetEnabled to send an event.

We really shouldn't be sending events for SB API's, dunno when we started
doing that.  We don't do it for other things.  But first restore the status quo.

llvm-svn: 285781

8 years ago[ilist_node] Add a getReverseIterator() method and a unittest for it.
Michael Gottesman [Wed, 2 Nov 2016 00:59:58 +0000 (00:59 +0000)]
[ilist_node] Add a getReverseIterator() method and a unittest for it.

This is the reverse_iterator analogue of getIterator().

llvm-svn: 285780

8 years agoMore forcibly resolve exception specifications when checking a function
Richard Smith [Wed, 2 Nov 2016 00:47:52 +0000 (00:47 +0000)]
More forcibly resolve exception specifications when checking a function
redeclaration in C++1z mode. We need the exception specification in order for
the function's type to be complete.

llvm-svn: 285779

8 years ago[Documentation] Clang-tidy readability-redundant-declaration consistency.
Eugene Zelenko [Wed, 2 Nov 2016 00:43:23 +0000 (00:43 +0000)]
[Documentation] Clang-tidy readability-redundant-declaration consistency.

Release notes checks order and consistent Clang-tidy readability-redundant-declaration description.

llvm-svn: 285778

8 years agoBitcode: Check file size before reading bitcode header.
Peter Collingbourne [Wed, 2 Nov 2016 00:39:11 +0000 (00:39 +0000)]
Bitcode: Check file size before reading bitcode header.

Should unbreak ocaml binding tests.

Also added an llvm-dis test that checks for the same thing.

llvm-svn: 285777

8 years agoUse ArrayRef instead of const std::vector.
Rui Ueyama [Wed, 2 Nov 2016 00:29:06 +0000 (00:29 +0000)]
Use ArrayRef instead of const std::vector.

llvm-svn: 285776

8 years agoMake a function in a header "inline" instead of "static".
Rui Ueyama [Wed, 2 Nov 2016 00:16:43 +0000 (00:16 +0000)]
Make a function in a header "inline" instead of "static".

llvm-svn: 285775

8 years agoSupport: Remove MemoryObject and DataStreamer interfaces.
Peter Collingbourne [Wed, 2 Nov 2016 00:08:37 +0000 (00:08 +0000)]
Support: Remove MemoryObject and DataStreamer interfaces.

These interfaces are no longer used.

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

llvm-svn: 285774

8 years agoBitcode: Change reader interface to take memory buffers.
Peter Collingbourne [Wed, 2 Nov 2016 00:08:19 +0000 (00:08 +0000)]
Bitcode: Change reader interface to take memory buffers.

As proposed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2016-October/106595.html

This change also fixes an API oddity where BitstreamCursor::Read() would
return zero for the first read past the end of the bitstream, but would
report_fatal_error for subsequent reads. Now we always report_fatal_error
for all reads past the end. Updated clients to check for the end of the
bitstream before reading from it.

I also needed to add padding to the invalid bitcode tests in
test/Bitcode/. This is because the streaming interface was not checking that
the file size is a multiple of 4.

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

llvm-svn: 285773

8 years ago[docs] Fix some typos. NFC.
Vedant Kumar [Tue, 1 Nov 2016 23:55:50 +0000 (23:55 +0000)]
[docs] Fix some typos. NFC.

llvm-svn: 285772

8 years ago[RISCV] Add bare-bones RISC-V MCTargetDesc
Alex Bradbury [Tue, 1 Nov 2016 23:47:30 +0000 (23:47 +0000)]
[RISCV] Add bare-bones RISC-V MCTargetDesc

This is enough to compile and link but doesn't yet do anything particularly
useful. Once an ASM parser and printer are added in the next two patches, the
whole thing can be usefully tested.

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

llvm-svn: 285770

8 years ago[RISCV 4/10] Add basic RISCV{InstrFormats,InstrInfo,RegisterInfo,}.td
Alex Bradbury [Tue, 1 Nov 2016 23:40:28 +0000 (23:40 +0000)]
[RISCV 4/10] Add basic RISCV{InstrFormats,InstrInfo,RegisterInfo,}.td

For now, only add instruction definitions for basic ALU operations. Our
initial target is a working MC layer rather than codegen, so appropriate
SelectionDAG patterns will come later.

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

llvm-svn: 285769

8 years agoAMDGPU: Handle CopyToReg in getOperandRegClass
Matt Arsenault [Tue, 1 Nov 2016 23:22:17 +0000 (23:22 +0000)]
AMDGPU: Handle CopyToReg in getOperandRegClass

llvm-svn: 285768

8 years agoInline a variable that is used only once.
Rui Ueyama [Tue, 1 Nov 2016 23:17:47 +0000 (23:17 +0000)]
Inline a variable that is used only once.

llvm-svn: 285767

8 years agoSplit writeResult. NFC.
Rui Ueyama [Tue, 1 Nov 2016 23:17:45 +0000 (23:17 +0000)]
Split writeResult. NFC.

This is now doable because this code doesn't have to be in the
dynamic scope of Writer::run().

llvm-svn: 285766

8 years agoAMDGPU: Use brev for materializing SGPR constants
Matt Arsenault [Tue, 1 Nov 2016 23:14:20 +0000 (23:14 +0000)]
AMDGPU: Use brev for materializing SGPR constants

This is already done with VGPR immediates and saves 4 bytes.

llvm-svn: 285765

8 years agoCreate Out members using make() to simplify.
Rui Ueyama [Tue, 1 Nov 2016 23:12:51 +0000 (23:12 +0000)]
Create Out members using make() to simplify.

llvm-svn: 285764

8 years agoRemove Out::Pool and use make() instead.
Rui Ueyama [Tue, 1 Nov 2016 23:09:07 +0000 (23:09 +0000)]
Remove Out::Pool and use make() instead.

llvm-svn: 285763

8 years agoAMDGPU: Default to using scalar mov to materialize immediate
Matt Arsenault [Tue, 1 Nov 2016 22:55:07 +0000 (22:55 +0000)]
AMDGPU: Default to using scalar mov to materialize immediate

This is the conservatively correct way because it's easy to
move or replace a scalar immediate. This was incorrect in the case
when the register class wasn't known from the static instruction
definition, but still needed to be an SGPR. The main example of this
is inlineasm has an SGPR constraint.

Also start verifying the register classes of inlineasm operands.

llvm-svn: 285762

8 years agoXfail this while I figure out why the event isn't getting sent.
Jim Ingham [Tue, 1 Nov 2016 22:53:54 +0000 (22:53 +0000)]
Xfail this while I figure out why the event isn't getting sent.

llvm-svn: 285761

8 years agoProvide a convenient function to allocate and initialize objects.
Rui Ueyama [Tue, 1 Nov 2016 22:53:18 +0000 (22:53 +0000)]
Provide a convenient function to allocate and initialize objects.

You can now write make<T>(Args) instead of new (alloc<T>()) T(Args).

llvm-svn: 285760

8 years ago[analyzer] Fix capitalization in ObjCSuperDealloc checker diagnostic.
Devin Coughlin [Tue, 1 Nov 2016 22:16:39 +0000 (22:16 +0000)]
[analyzer] Fix capitalization in ObjCSuperDealloc checker diagnostic.

Change "use of 'self'..." to "Use of 'self'...". The convention is to
start diagnostics with a capital letter.

rdar://problem/28322494

llvm-svn: 285759

8 years agoMove the initialization of PreferredLoopExit into runOnMachineFunction to be near...
Eric Christopher [Tue, 1 Nov 2016 22:15:50 +0000 (22:15 +0000)]
Move the initialization of PreferredLoopExit into runOnMachineFunction to be near the other function specific initializations.

llvm-svn: 285758

8 years agoFix uninitialized access in MachineBlockPlacement.
Sam McCall [Tue, 1 Nov 2016 22:02:14 +0000 (22:02 +0000)]
Fix uninitialized access in MachineBlockPlacement.

Summary:
Currently PreferredLoopExit is set only in buildLoopChains, which is
never called if there are no MachineLoops.

MSan is currently broken by this:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/145/steps/check-llvm%20msan/logs/stdio

This is a naive fix to get things green again. iteratee: you may have a better fix.

This change will also mean PreferredLoopExit will not carry over if
buildCFGChains() is called a second time in runOnMachineFunction, this
appears to be the right thing.

Reviewers: bkramer, iteratee, echristo

Subscribers: llvm-commits

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

llvm-svn: 285757

8 years agoAMDGPU: Stop creating unused virtual registers
Matt Arsenault [Tue, 1 Nov 2016 21:58:07 +0000 (21:58 +0000)]
AMDGPU: Stop creating unused virtual registers

These are only used in the spill to VMEM path. Move them to
the one use.

llvm-svn: 285756

8 years agoDon't fetch the section string table multiple times. NFC.
Rafael Espindola [Tue, 1 Nov 2016 21:48:00 +0000 (21:48 +0000)]
Don't fetch the section string table multiple times. NFC.

llvm-svn: 285755

8 years agoUpdate for llvm change.
Rafael Espindola [Tue, 1 Nov 2016 21:34:26 +0000 (21:34 +0000)]
Update for llvm change.

We no longer use the section names in this test.

llvm-svn: 285754

8 years agoDon't compute DotShstrtab eagerly.
Rafael Espindola [Tue, 1 Nov 2016 21:33:55 +0000 (21:33 +0000)]
Don't compute DotShstrtab eagerly.

This saves a field that is not always used. It also avoids failing a
program that doesn't need the section names.

llvm-svn: 285753

8 years ago[clang-tidy] Handle bitfields in cppcoreguidelines-pro-type-member-init
Malcolm Parsons [Tue, 1 Nov 2016 21:26:53 +0000 (21:26 +0000)]
[clang-tidy] Handle bitfields in cppcoreguidelines-pro-type-member-init

Summary:
Unnamed bitfields cannot be initialized.
Bitfields cannot be in-class initialized.

Reviewers: alexfh, hokein, aaron.ballman

Subscribers: Prazek, nemanjai, cfe-commits

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

llvm-svn: 285752

8 years agoRemove string table offsets from tests.
Rui Ueyama [Tue, 1 Nov 2016 21:26:28 +0000 (21:26 +0000)]
Remove string table offsets from tests.

<N> where "foo (<N>)" is the offset of string "foo" in the string table.

llvm-svn: 285751

8 years ago[MemorySSA] Tighten up types to make our API prettier. NFC.
George Burgess IV [Tue, 1 Nov 2016 21:17:46 +0000 (21:17 +0000)]
[MemorySSA] Tighten up types to make our API prettier. NFC.

Patch by bryant.

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

llvm-svn: 285750

8 years agoAdd missing #include.
Zachary Turner [Tue, 1 Nov 2016 21:08:34 +0000 (21:08 +0000)]
Add missing #include.

llvm-svn: 285749

8 years agoReplace GAlloc with a template function.
Rafael Espindola [Tue, 1 Nov 2016 21:06:40 +0000 (21:06 +0000)]
Replace GAlloc with a template function.

This patch replaces GAlloc<ELFT>::<sometype>.Allocate() with
alloc<sometype<ELFT>>().

Patch by Rui!

llvm-svn: 285748

8 years agoSimplify getStringTableIndex.
Rafael Espindola [Tue, 1 Nov 2016 20:56:15 +0000 (20:56 +0000)]
Simplify getStringTableIndex.

The description in the ELF spec is just

---------------------------
If the section name string table section index is greater than or
equal to SHN_LORESERVE (0xff00), this member has the value SHN_XINDEX
(0xffff) and the actual index of the section name string table section
is contained in the sh_link field of the section header at index 0.
---------------------------

So we only have to check for it being SHN_XINDEX. Also, sh_link is
always 32 bits, so don't return an uintX_t.

llvm-svn: 285747

8 years ago[ScopInfo] Make memset etc. affine where possible.
Eli Friedman [Tue, 1 Nov 2016 20:53:11 +0000 (20:53 +0000)]
[ScopInfo] Make memset etc. affine where possible.

We don't actually check whether a MemoryAccess is affine in very many
places, but one important one is in checks for aliasing.

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

llvm-svn: 285746

8 years agoAdd missing test from r284848.
Eli Friedman [Tue, 1 Nov 2016 20:45:28 +0000 (20:45 +0000)]
Add missing test from r284848.

Original commit title: [SCEVAffinator] Make precise modular math
more correct.

llvm-svn: 285745

8 years ago[ValueTracking] remove TODO comment; NFC
Sanjay Patel [Tue, 1 Nov 2016 20:43:00 +0000 (20:43 +0000)]
[ValueTracking] remove TODO comment; NFC

InstCombine should always canonicalize patterns like the one shown in the comment
when visiting 'select' insts in adjustMinMax().

Scalars were already handled there, and vector splats are handled after:
https://reviews.llvm.org/rL285732

llvm-svn: 285744

8 years agoAMDGPU: Workaround for instruction size with literals
Matt Arsenault [Tue, 1 Nov 2016 20:42:24 +0000 (20:42 +0000)]
AMDGPU: Workaround for instruction size with literals

Instructions with a 32-bit base encoding with an optional
32-bit literal encoded after them report their size as 4
for the disassembler. Consider these when computing the
MachineInstr size. This fixes problems caused by size estimate
consistency in BranchRelaxation.

llvm-svn: 285743

8 years agoSwitch SBWatchpoint::SetEnabled over to using Process::{Enable,Disable}Watchpoint.
Jim Ingham [Tue, 1 Nov 2016 20:37:02 +0000 (20:37 +0000)]
Switch SBWatchpoint::SetEnabled over to using Process::{Enable,Disable}Watchpoint.

We don't have a good story for what happens to watchpoints when you don't
have a process, or if your process exits.  Clearing that up will instruct
how to fix this for real.

Also added a test to make sure disable->enable works as well.
This resolves llvm.org/pr30789.

llvm-svn: 285742

8 years ago[test] Fix detecting LLVM zlib support in stand-alone builds
Michal Gorny [Tue, 1 Nov 2016 20:31:52 +0000 (20:31 +0000)]
[test] Fix detecting LLVM zlib support in stand-alone builds

Fix the test run to declare missing HAVE_LIBZ value in stand-alone
builds, using the LLVM_ENABLE_ZLIB that is exported in LLVMConfig.cmake.

When using in-tree builds, HAVE_LIBZ is declared in
cmake/config-ix.cmake as a result of LLVM's CMake checks. When building
stand-alone, this value is not available and as a result caused clang to
wrongly assume that LLVM was built without zlib support.

To fix it, set it to the value of LLVM_ENABLE_ZLIB. While this variable
is originally used to control the user preference, LLVM updates its
value to 0 if zlib checks fail. Therefore, we can use it to reliably
determine whether LLVM was built with zlib support or not.

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

llvm-svn: 285741

8 years agoCreate SyntheticSections.cpp.
Rui Ueyama [Tue, 1 Nov 2016 20:28:21 +0000 (20:28 +0000)]
Create SyntheticSections.cpp.

We are going to have many more classes for linker-synthesized
input sections, so it's worth to be added to a separate file
than to the file for regular input sections.

llvm-svn: 285740

8 years agoUpdate for llvm change.
Rafael Espindola [Tue, 1 Nov 2016 20:25:27 +0000 (20:25 +0000)]
Update for llvm change.

llvm-svn: 285739

8 years agoUse the existing std::error_code out parameter.
Rafael Espindola [Tue, 1 Nov 2016 20:24:22 +0000 (20:24 +0000)]
Use the existing std::error_code out parameter.

This avoids calling exit with a partially constructed object.

llvm-svn: 285738

8 years agoFix llvm-shlib cmake build
Chris Bieneman [Tue, 1 Nov 2016 20:19:33 +0000 (20:19 +0000)]
Fix llvm-shlib cmake build

Summary:
This fixes a few things that used to work with a Makefile build, but were broken in cmake.

1. Treat MINGW like a Linux system.
2. The shlib should never contain other shared libraries.

Patch By: Valentin Churavy

Reviewers: axw, beanz

Subscribers: modocache, beanz, mgorny

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

llvm-svn: 285737

8 years agoAdd helpers for the notion of a type scavenger that is "either this or that" source...
Enrico Granata [Tue, 1 Nov 2016 20:17:14 +0000 (20:17 +0000)]
Add helpers for the notion of a type scavenger that is "either this or that" source, and one that is "both this and that" source

Use the helper to rewrite the ObjC type lookup logic (first modules, then runtime) in terms of an either scavenger

llvm-svn: 285736

8 years ago[ELF/GC] Fix pending references to garbage collected sections.
Davide Italiano [Tue, 1 Nov 2016 20:11:01 +0000 (20:11 +0000)]
[ELF/GC] Fix pending references to garbage collected sections.

The example reported in PR30793 shows a case where gc reclaims
a SHF_TLS section, but it doesn't reclaim the section containing
the debug info for it.
This is expected, as we do not reclaim non-alloc sections
during the garbage collection phase (and this is not going to
change anytime soon, at least this is what I gathered last I
talked with Rafael about it).
So, we end up with a pending reference, thinking that the input
was invalid (which is not true, as it's GC that removed the
SHT_TLS section, and therefore didn't create the PT_TLS *segment*
for it). In cases like this, just assign a VA of zero at relocation
time instead of error'ing out (this is what gold does as well, FWIW).

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

llvm-svn: 285735

8 years agoGC empty subdirectories.
Joerg Sonnenberger [Tue, 1 Nov 2016 20:09:41 +0000 (20:09 +0000)]
GC empty subdirectories.

llvm-svn: 285734

8 years agoclang/test/CodeGenOpenCL/convergent.cl: Satisfy -Asserts with "opt -instnamer".
NAKAMURA Takumi [Tue, 1 Nov 2016 20:08:17 +0000 (20:08 +0000)]
clang/test/CodeGenOpenCL/convergent.cl: Satisfy -Asserts with "opt -instnamer".

llvm-svn: 285733

8 years ago[InstCombine] allow splat vector folds in adjustMinMax()
Sanjay Patel [Tue, 1 Nov 2016 20:08:02 +0000 (20:08 +0000)]
[InstCombine] allow splat vector folds in adjustMinMax()

llvm-svn: 285732

8 years ago[clang-query] Fix Clang-tidy readability-redundant-string-cstr warnings
Malcolm Parsons [Tue, 1 Nov 2016 20:07:05 +0000 (20:07 +0000)]
[clang-query] Fix Clang-tidy readability-redundant-string-cstr warnings

Reviewers: pcc, dblaikie

Subscribers: cfe-commits

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

llvm-svn: 285731

8 years ago[RISCV] Add RISCV.def to module.modulemap
Alex Bradbury [Tue, 1 Nov 2016 19:31:30 +0000 (19:31 +0000)]
[RISCV] Add RISCV.def to module.modulemap

llvm-svn: 285730

8 years ago[InstCombine] Fold nuw left-shifts in `ugt`/`ule` comparisons.
Sanjay Patel [Tue, 1 Nov 2016 19:19:29 +0000 (19:19 +0000)]
[InstCombine] Fold nuw left-shifts in `ugt`/`ule` comparisons.

This transforms

%a = shl nuw %x, c1
%b = icmp {ugt|ule} %a, c0

into

%b = icmp {ugt|ule} %x, (c0 >> c1)

z3:

(declare-const x (_ BitVec 64))
(declare-const c0 (_ BitVec 64))
(declare-const c1 (_ BitVec 64))

(push)
(assert (= x (bvlshr (bvshl x c1) c1)))  ; nuw
(assert (not (= (bvugt (bvshl x c1) c0)
                (bvugt x
                       (bvlshr c0 c1)))))
(check-sat)
(get-model)
(pop)

(push)
(assert (= x (bvlshr (bvshl x c1) c1)))  ; nuw
(assert (not (= (bvule (bvshl x c1) c0)
                (bvule x
                       (bvlshr c0 c1)))))
(check-sat)
(get-model)
(pop)

Patch by bryant!

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

llvm-svn: 285729

8 years ago[Hexagon] Rename operand/predicate names for unshifted integers
Krzysztof Parzyszek [Tue, 1 Nov 2016 19:02:10 +0000 (19:02 +0000)]
[Hexagon] Rename operand/predicate names for unshifted integers

For example, rename s6Ext to s6_0Ext. The names for shifted integers
include the underscore and this will make the naming consistent. It
also exposed a few duplicates that were removed.

llvm-svn: 285728

8 years agoImplement a general type scavenger that can dig types from debug info + a filtering...
Enrico Granata [Tue, 1 Nov 2016 18:50:49 +0000 (18:50 +0000)]
Implement a general type scavenger that can dig types from debug info + a filtering mechanism to accept/reject results thusly obtained

Implement the C++ type lookup support in terms of this general scavenger

The idea is that we may want other languages to do debug info based search (exclusively, or as an add-on to runtime/module based searching) and it makes sense to avoid duplicating this functionality

llvm-svn: 285727

8 years agochange ProcessAttach test to no-debug-info
Todd Fiala [Tue, 1 Nov 2016 18:50:34 +0000 (18:50 +0000)]
change ProcessAttach test to no-debug-info

Fixes:
https://bugs.swift.org/browse/SR-3103

llvm-svn: 285726

8 years ago[OpenCL] Mark group functions as convergent in opencl-c.h
Yaxun Liu [Tue, 1 Nov 2016 18:45:32 +0000 (18:45 +0000)]
[OpenCL] Mark group functions as convergent in opencl-c.h

Certain OpenCL builtin functions are supposed to be executed by all threads in a work group or sub group. Such functions should not be made divergent during transformation. It makes sense to mark them with convergent attribute.

The adding of convergent attribute is based on Ettore Speziale's work and the original proposal and patch can be found at https://www.mail-archive.com/cfe-commits@lists.llvm.org/msg22271.html.

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

llvm-svn: 285725

8 years agoBranchRelaxation: Expand unconditional branches first
Matt Arsenault [Tue, 1 Nov 2016 18:34:00 +0000 (18:34 +0000)]
BranchRelaxation: Expand unconditional branches first

It's likely if a conditional branch needs to be expanded, the following
unconditional branch will also need expansion. By expanding the
unconditional branch first, the conditional branch can be simply
inverted to jump over the inserted indirect branch block. If the
conditional branch is expanded first, it results in an additional
branch.

This avoids test regressions in future commits.

llvm-svn: 285722

8 years ago[Clang-tidy] Fix copy-paste error in misc-redundant-expression detected by PVS-Studio
Eugene Zelenko [Tue, 1 Nov 2016 18:33:50 +0000 (18:33 +0000)]
[Clang-tidy] Fix copy-paste error in misc-redundant-expression detected by PVS-Studio

Also fix some Include What You Use and modernize-use-bool-literals warnings.

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

llvm-svn: 285721

8 years agoImplement R_PPC_ADDR32.
Rui Ueyama [Tue, 1 Nov 2016 18:30:28 +0000 (18:30 +0000)]
Implement R_PPC_ADDR32.

Patch from Jack Andersen.

llvm-svn: 285720

8 years agoImplement R_PPC_REL24 and R_PPC_REL32 relocations.
Rui Ueyama [Tue, 1 Nov 2016 18:30:26 +0000 (18:30 +0000)]
Implement R_PPC_REL24 and R_PPC_REL32 relocations.

This enables LLD to relocate PC-relative R_PPC_REL32 and
R_PPC_REL24 types (as used in bl instructions).

Patch from Jack Andersen!

llvm-svn: 285719

8 years ago[InstCombine] clean up adjustMinMax(); NFCI
Sanjay Patel [Tue, 1 Nov 2016 18:15:03 +0000 (18:15 +0000)]
[InstCombine] clean up adjustMinMax(); NFCI

1. Change param names for readability
2. Change pointer param to ref
3. Early exit to reduce indent
4. Change switch to if/else

llvm-svn: 285718

8 years agoTest Commit, removed extraneous newline
Erich Keane [Tue, 1 Nov 2016 17:54:05 +0000 (17:54 +0000)]
Test Commit, removed extraneous newline

llvm-svn: 285717

8 years ago[AMDGPU] Check if type transforms to i16 (VI+) when getting AMDGPUISD::FFBH_U32
Konstantin Zhuravlyov [Tue, 1 Nov 2016 17:49:33 +0000 (17:49 +0000)]
[AMDGPU] Check if type transforms to i16 (VI+) when getting AMDGPUISD::FFBH_U32

This will prevent following regression when enabling i16 support (D18049):

test/CodeGen/AMDGPU/ctlz.ll
test/CodeGen/AMDGPU/ctlz_zero_undef.ll

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

llvm-svn: 285716