platform/upstream/llvm.git
7 years agoAMDGPU : Fix SAD related instruction LIT tests function atttibute issues.
Wei Ding [Thu, 11 Aug 2016 17:14:17 +0000 (17:14 +0000)]
AMDGPU : Fix SAD related instruction LIT tests function atttibute issues.

Differential Revision: http://reviews.llvm.org/D23133

llvm-svn: 278360

7 years ago[ELF][MIPS] Add more tests for ELF flags calculation. NFC
Simon Atanasyan [Thu, 11 Aug 2016 17:07:46 +0000 (17:07 +0000)]
[ELF][MIPS] Add more tests for ELF flags calculation. NFC

llvm-svn: 278359

7 years ago[ELF][MIPS] Separate different tests by empty lines. NFC
Simon Atanasyan [Thu, 11 Aug 2016 17:07:43 +0000 (17:07 +0000)]
[ELF][MIPS] Separate different tests by empty lines. NFC

llvm-svn: 278358

7 years agotest: relax the FS test a slight bit to be more reliable
Saleem Abdulrasool [Thu, 11 Aug 2016 16:58:12 +0000 (16:58 +0000)]
test: relax the FS test a slight bit to be more reliable

Some filesystems track atime always.  This relaxes the test to accept either a
filesystem which does not accurately track atime or does track the atime
accurately.  This allows the test to pass on filesystems mounted with
`strictatime` on Linux or on macOS.

llvm-svn: 278357

7 years agoAdd 'inline' attribute to __init to inline the basic_string's constructor
Sebastian Pop [Thu, 11 Aug 2016 16:51:48 +0000 (16:51 +0000)]
Add 'inline' attribute to __init to inline the basic_string's constructor

basic_string's constructor calls init which was not getting inlined.  This
prevented optimization of const string as init would appear as a call in between
a string's def and use.

Patch by Laxman Sole and Aditya Kumar.

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

llvm-svn: 278356

7 years agoHexagon: Avoid dereferencing end() in HexagonCopyToCombine::findPairable
Duncan P. N. Exon Smith [Thu, 11 Aug 2016 16:40:03 +0000 (16:40 +0000)]
Hexagon: Avoid dereferencing end() in HexagonCopyToCombine::findPairable

Check for end() before skipping through debug values.  This avoids
dereferencing end() when the instruction is the final one in the basic
block.  (It still assumes that a debug value will not be the final
instruction in the basic block.  No tests seemed to violate that.)

Many Hexagon tests trigger this, but they happen to magically pass right
now.  I found this because WIP patches for PR26753 convert them into
crashes.

llvm-svn: 278355

7 years agoAMDGPU : Add LLVM intrinsics for SAD related instructions.
Wei Ding [Thu, 11 Aug 2016 16:33:53 +0000 (16:33 +0000)]
AMDGPU : Add LLVM intrinsics for SAD related instructions.

Differential Revision: http://reviews.llvm.org/D23133

llvm-svn: 278354

7 years agoAdd (hopefully last) remaining missing dependences to llvm-lto2
Teresa Johnson [Thu, 11 Aug 2016 16:29:47 +0000 (16:29 +0000)]
Add (hopefully last) remaining missing dependences to llvm-lto2

There are still a few missing symbols reported by:
http://bb.pgr.jp/builders/i686-mingw32-RA-on-linux/builds/15535/steps/build_llvmclang/logs/stdio
http://bb.pgr.jp/builders/i686-mingw32-RA-on-linux/builds/15535/steps/build_llvmclang/logs/stdio

This should hopefully take care of them.

llvm-svn: 278353

7 years ago[ELF][MIPS] Recognize and print machine name in case of input incompatibility
Simon Atanasyan [Thu, 11 Aug 2016 16:25:17 +0000 (16:25 +0000)]
[ELF][MIPS] Recognize and print machine name in case of input incompatibility

llvm-svn: 278352

7 years agoGlobalISel: clear vreg mapping after translating each function
Tim Northover [Thu, 11 Aug 2016 16:21:29 +0000 (16:21 +0000)]
GlobalISel: clear vreg mapping after translating each function

Otherwise we only materialize (shared) constants in the first function they
appear in. This doesn't go well.

llvm-svn: 278351

7 years agoRemove FIXME about asserting on the end iterator
Reid Kleckner [Thu, 11 Aug 2016 16:00:43 +0000 (16:00 +0000)]
Remove FIXME about asserting on the end iterator

After machine block placement, MBBs may not have terminators, and it is
appropriate to check for the end iterator here. We can fold the check
into the next if, as well. This look is really just looking for BBs that
end in CATCHRET.

llvm-svn: 278350

7 years agoMore missing llvm-lto2 dependencies
Teresa Johnson [Thu, 11 Aug 2016 15:58:49 +0000 (15:58 +0000)]
More missing llvm-lto2 dependencies

Follow-on to r278341: Update CMakeLists.txt to match LLVMBuild.txt

llvm-svn: 278349

7 years ago[MCJIT] Improve documentation and error handling for MCJIT::runFunction.
Lang Hames [Thu, 11 Aug 2016 15:56:23 +0000 (15:56 +0000)]
[MCJIT] Improve documentation and error handling for MCJIT::runFunction.

ExecutionEngine::runFunction is supposed to allow execution of arbitrary
function types, but MCJIT can only reasonably support a limited subset of
main-linke function types. This patch documents this limitation, and fixes
MCJIT::runFunction to abort with a meaningful error at runtime if called with
an unsupported function type.

llvm-svn: 278348

7 years agoX86: Use operator lookup for operator==, NFC
Duncan P. N. Exon Smith [Thu, 11 Aug 2016 15:51:29 +0000 (15:51 +0000)]
X86: Use operator lookup for operator==, NFC

Avoid relying on the MachineInstrBundleIterator operator== being
implemented as a member function.

llvm-svn: 278347

7 years agoIR: Don't cast the end iterator to Instruction*
Duncan P. N. Exon Smith [Thu, 11 Aug 2016 15:45:04 +0000 (15:45 +0000)]
IR: Don't cast the end iterator to Instruction*

End iterators are usually sentinels, not actually Instruction* at all.
Stop casting to it just to get an iterator back.

There is likely no observable functionality change here right now
(although this is relying on UB, I doubt it was triggering anything),
but I'll be removing the cast soon.

llvm-svn: 278346

7 years agoFix unit tests on windows
Pavel Labath [Thu, 11 Aug 2016 15:31:30 +0000 (15:31 +0000)]
Fix unit tests on windows

Python headers need to be included before PosixApi.h

llvm-svn: 278345

7 years agoCodeGen: Check for a terminator in llvm::getFuncletMembership
Duncan P. N. Exon Smith [Thu, 11 Aug 2016 15:29:02 +0000 (15:29 +0000)]
CodeGen: Check for a terminator in llvm::getFuncletMembership

Check for an end iterator from MachineBasicBlock::getFirstTerminator in
llvm::getFuncletMembership.  If this is turned into an assertion, it
fires in 48 X86 testcases (for example,
CodeGen/X86/regalloc-spill-at-ehpad.ll).

Since this is likely a latent bug (shouldn't all basic blocks end with a
terminator?) I've filed PR28938.

llvm-svn: 278344

7 years ago[SLP] Make RecursionMaxDepth a command line option (NFC)
Matthew Simpson [Thu, 11 Aug 2016 15:28:45 +0000 (15:28 +0000)]
[SLP] Make RecursionMaxDepth a command line option (NFC)

llvm-svn: 278343

7 years agofix comment; NFC
Sanjay Patel [Thu, 11 Aug 2016 15:23:56 +0000 (15:23 +0000)]
fix comment; NFC

llvm-svn: 278342

7 years agoFix bot failure from r278338 due to missing dependences
Teresa Johnson [Thu, 11 Aug 2016 15:23:05 +0000 (15:23 +0000)]
Fix bot failure from r278338 due to missing dependences

Add some missing dependences to the llvm-lto2 tool to attempt to appease
missing symbols in link from bot:
http://bb.pgr.jp/builders/i686-mingw32-RA-on-linux/builds/15527

llvm-svn: 278341

7 years agouse auto* with dyn_cast ; NFC
Sanjay Patel [Thu, 11 Aug 2016 15:21:21 +0000 (15:21 +0000)]
use auto* with dyn_cast ; NFC

llvm-svn: 278340

7 years agogetParent()->getParent() == getFunction() ; NFC
Sanjay Patel [Thu, 11 Aug 2016 15:16:06 +0000 (15:16 +0000)]
getParent()->getParent() == getFunction() ; NFC

llvm-svn: 278339

7 years agoRestore "Resolution-based LTO API."
Teresa Johnson [Thu, 11 Aug 2016 14:58:12 +0000 (14:58 +0000)]
Restore "Resolution-based LTO API."

This restores commit r278330, with fixes for a few bot failures:
- Fix a late change I had made to the save temps output file that I
  missed due to existing files sitting on my disk
- Fix a bunch of Windows bot failures with "ambiguous call to overloaded
  function" due to confusion between llvm::make_unique vs
  std::make_unique (preface the new make_unique calls with "llvm::")
- Attempt to fix a modules bot failure by adding a missing include
  to LTO/Config.h.

Original change:

Resolution-based LTO API.

Summary:
This introduces a resolution-based LTO API. The main advantage of this API over
existing APIs is that it allows the linker to supply a resolution for each
symbol in each object, rather than the combined object as a whole. This will
become increasingly important for use cases such as ThinLTO which require us
to process symbol resolutions in a more complicated way than just adjusting
linkage.

Patch by Peter Collingbourne.

Reviewers: rafael, tejohnson, mehdi_amini

Subscribers: lhames, tejohnson, mehdi_amini, llvm-commits

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

llvm-svn: 278338

7 years agorevert 278334
Ehsan Amiri [Thu, 11 Aug 2016 14:51:14 +0000 (14:51 +0000)]
revert 278334

llvm-svn: 278337

7 years agoRevert "[AMDGPU] fix failure on printing of non-existing instruction operands."
Valery Pykhtin [Thu, 11 Aug 2016 14:22:05 +0000 (14:22 +0000)]
Revert "[AMDGPU] fix failure on printing of non-existing instruction operands."

This reverts revision 278333, newly added test failed.

llvm-svn: 278336

7 years agoMake sure files include what they use (part 2/2)
Pavel Labath [Thu, 11 Aug 2016 14:12:10 +0000 (14:12 +0000)]
Make sure files include what they use (part 2/2)

This makes lldb still compile on linux after a project-wide clang-format

llvm-svn: 278335

7 years agoExtend trip count instead of truncating IV in LFTR, when legal
Ehsan Amiri [Thu, 11 Aug 2016 13:51:20 +0000 (13:51 +0000)]
Extend trip count instead of truncating IV in LFTR, when legal

When legal, extending trip count in the loop control logic generates better code compared to truncating IV. This is because

(1) extending trip count is a loop invariant operation (see genLoopLimit where we prove trip count is loop invariant).
(2) Scalar Evolution seems to have problems understanding trunc when computing loop trip count. So removing them allows better analysis performed in Scalar Evolution. (In particular this fixes PR 28363 which is the motivation for this change).

I am not going to perform any performance test. Any degradation caused by this should be an indication of a bug elsewhere.

To prove legality, we rely on SCEV to prove zext(trunc(IV)) == IV (or similarly for sext). If this holds, we can prove equivalence of trunc(IV)==ExitCnt (1) and IV == zext(ExitCnt). Simply take zext of boths sides of (1) and apply the proven equivalence.

https://reviews.llvm.org/D23075

llvm-svn: 278334

7 years ago[AMDGPU] fix failure on printing of non-existing instruction operands.
Valery Pykhtin [Thu, 11 Aug 2016 13:49:46 +0000 (13:49 +0000)]
[AMDGPU] fix failure on printing of non-existing instruction operands.

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

llvm-svn: 278333

7 years agoFixes for hierarchical barrier (possible hang if team size changed).
Andrey Churbanov [Thu, 11 Aug 2016 13:04:00 +0000 (13:04 +0000)]
Fixes for hierarchical barrier (possible hang if team size changed).

Differential Revision: http://reviews.llvm.org/D23175

llvm-svn: 278332

7 years agoRevert "Resolution-based LTO API."
Teresa Johnson [Thu, 11 Aug 2016 13:03:56 +0000 (13:03 +0000)]
Revert "Resolution-based LTO API."

This reverts commit r278330.

I made a change to the save temps output that is causing issues with the
bots. Didn't realize this because I had older output files sitting on
disk in my test output directory.

llvm-svn: 278331

7 years agoResolution-based LTO API.
Teresa Johnson [Thu, 11 Aug 2016 12:56:40 +0000 (12:56 +0000)]
Resolution-based LTO API.

Summary:
This introduces a resolution-based LTO API. The main advantage of this API over
existing APIs is that it allows the linker to supply a resolution for each
symbol in each object, rather than the combined object as a whole. This will
become increasingly important for use cases such as ThinLTO which require us
to process symbol resolutions in a more complicated way than just adjusting
linkage.

Patch by Peter Collingbourne.

Reviewers: rafael, tejohnson, mehdi_amini

Subscribers: lhames, tejohnson, mehdi_amini, llvm-commits

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

Address review comments

llvm-svn: 278330

7 years agoFixed VS2015 (Update 3) warning - differing const/volatile qualifiers for overridden...
Simon Pilgrim [Thu, 11 Aug 2016 12:19:43 +0000 (12:19 +0000)]
Fixed VS2015 (Update 3) warning - differing const/volatile qualifiers for overridden function

Dropped the const qualifier to match llvm::CallLowering::lowerCall

llvm-svn: 278329

7 years ago[AVX512] Fix extractelement i1 lowering.
Igor Breger [Thu, 11 Aug 2016 12:13:46 +0000 (12:13 +0000)]
[AVX512] Fix extractelement i1 lowering.
The previous implementation (not custom) doesn't enforce zeroing off upper bits. The assumption is that i1 PRODUCER (truncate and extractelement) must zero all upper bits, so i1 CONSUMER instructions ( test, zext, save, etc) can be done without additional zeroing.
Make extractelement i1 lowering custom for all vector i1.

Differential Revision: http://reviews.llvm.org/D23246

llvm-svn: 278328

7 years ago[Core] Retire addReplacement() member function.
Davide Italiano [Thu, 11 Aug 2016 10:50:01 +0000 (10:50 +0000)]
[Core] Retire addReplacement() member function.

llvm-svn: 278327

7 years agoMake sure LldbGdbServerTestCase is built in arm mode to avoid failures due thumb...
Omair Javaid [Thu, 11 Aug 2016 10:35:05 +0000 (10:35 +0000)]
Make sure LldbGdbServerTestCase is built in arm mode to avoid failures due thumb instructions

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

llvm-svn: 278326

7 years agoRemove a double send of eRunPacketSent event
Pavel Labath [Thu, 11 Aug 2016 09:22:22 +0000 (09:22 +0000)]
Remove a double send of eRunPacketSent event

I accidentaly added the send both to the base class and the derived class in my refactor. Fix
that.

llvm-svn: 278325

7 years ago[clang-tidy] fix readability-else-after-return test
Kirill Bobyrev [Thu, 11 Aug 2016 08:18:39 +0000 (08:18 +0000)]
[clang-tidy] fix readability-else-after-return test

As pointed by Yung Douglas, exceptions in
test/clang-tidy/readability-else-after-return.cpp are causing PS4 bots to be
red, because exceptions aren't enabled by default on PS4 target. This patch is a
fix.

llvm-svn: 278324

7 years agoUnbreak C++03 build.
Eric Fiselier [Thu, 11 Aug 2016 08:15:35 +0000 (08:15 +0000)]
Unbreak C++03 build.

llvm-svn: 278323

7 years ago[ELF] Symbol assignment within output section description
Eugene Leviant [Thu, 11 Aug 2016 07:56:43 +0000 (07:56 +0000)]
[ELF] Symbol assignment within output section description

llvm-svn: 278322

7 years agoAvoid false dependencies of undef machine operands
Marina Yatsina [Thu, 11 Aug 2016 07:32:08 +0000 (07:32 +0000)]
Avoid false dependencies of undef machine operands

This patch helps avoid false dependencies on undef registers by updating the machine instructions' undef operand to use a register that the instruction is truly dependent on, or use a register with clearance higher than Pref.

Pseudo example:

loop:
xmm0 = ...
xmm1 = vcvtsi2sdl eax, xmm0<undef>
... = inst xmm0
jmp loop

In this example, selecting xmm0 as the undef register creates false dependency between loop iterations.
This false dependency cannot be solved by inserting an xor before vcvtsi2sdl because xmm0 is alive at the point of the vcvtsi2sdl instruction.
Selecting a different register instead of xmm0, especially a register that is not used in the loop, will eliminate this problem.

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

llvm-svn: 278321

7 years ago[Debug Info] Added a LIT test that covers the fix committed in rL277290.
Amjad Aboud [Thu, 11 Aug 2016 07:22:53 +0000 (07:22 +0000)]
[Debug Info] Added a LIT test that covers the fix committed in rL277290.

Differential Revision: http://reviews.llvm.org/D23056

llvm-svn: 278320

7 years agoRefactor test archetypes implementation.
Eric Fiselier [Thu, 11 Aug 2016 07:04:14 +0000 (07:04 +0000)]
Refactor test archetypes implementation.

llvm-svn: 278319

7 years ago[AVX-512] Promote 512-bit integer loads to v8i64 similar to what is done for 128...
Craig Topper [Thu, 11 Aug 2016 06:04:07 +0000 (06:04 +0000)]
[AVX-512] Promote 512-bit integer loads to v8i64 similar to what is done for 128/256-bit vectors for overall consistency.

llvm-svn: 278318

7 years ago[AVX-512] Add patterns to allow EVEX encoded stores of v16i16/v8i16/v16i8/v32i8 even...
Craig Topper [Thu, 11 Aug 2016 06:04:04 +0000 (06:04 +0000)]
[AVX-512] Add patterns to allow EVEX encoded stores of v16i16/v8i16/v16i8/v32i8 even when BWI is not supported.

llvm-svn: 278317

7 years ago[AVX-512] Fix the 128-bit and 256-bit nontemporal load patterns with elements type...
Craig Topper [Thu, 11 Aug 2016 06:04:00 +0000 (06:04 +0000)]
[AVX-512] Fix the 128-bit and 256-bit nontemporal load patterns with elements type other than i64. These loads have all been promoted to v2i64/v4i64 loads so we need bitcasts or we end up selecting VMOVDQA32/VMOVDQU32 instead.

llvm-svn: 278316

7 years agobindings: expose diagnostic formatting to Python
Saleem Abdulrasool [Thu, 11 Aug 2016 05:31:07 +0000 (05:31 +0000)]
bindings: expose diagnostic formatting to Python

This makes it easier for tools using the Python libclang bindings to display
diagnostics in a manner consistent with clang.

Patch by Omar Sandoval!

llvm-svn: 278315

7 years ago[Profile] improve warning control option
Xinliang David Li [Thu, 11 Aug 2016 05:09:30 +0000 (05:09 +0000)]
[Profile] improve warning control option

Change --no-pgo-warn-missing to -pgo-warn-missing-function
and negate the default. /NFC

Add more test to make sure the warning is off by default

llvm-svn: 278314

7 years ago[WebAssembly] Cleanup trailing whitespace
Dominic Chen [Thu, 11 Aug 2016 04:10:56 +0000 (04:10 +0000)]
[WebAssembly] Cleanup trailing whitespace

Summary: Test for commit access.

Subscribers: jfb, dschuff

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

llvm-svn: 278313

7 years agoMake more fields of InlineParams Optional.
Easwaran Raman [Thu, 11 Aug 2016 03:58:05 +0000 (03:58 +0000)]
Make more fields of InlineParams Optional.

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

llvm-svn: 278312

7 years agoAdd missing REQUIRES for C++14
Eric Fiselier [Thu, 11 Aug 2016 03:33:41 +0000 (03:33 +0000)]
Add missing REQUIRES for C++14

llvm-svn: 278311

7 years ago[libcxx] Add std::any
Eric Fiselier [Thu, 11 Aug 2016 03:13:11 +0000 (03:13 +0000)]
[libcxx] Add std::any

Summary:
This patch adds std::any by moving/adapting <experimental/any>.

This patch also implements the std::any parts of p0032r3 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf)
and LWG 2509 (http://cplusplus.github.io/LWG/lwg-defects.html#2509).

I plan to push it in a day or two if there are no comments.

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits

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

llvm-svn: 278310

7 years ago[Statepoints] Minor cosmetic change; NFC
Sanjoy Das [Thu, 11 Aug 2016 00:56:46 +0000 (00:56 +0000)]
[Statepoints] Minor cosmetic change; NFC

The verification failure message was missing a space.

llvm-svn: 278309

7 years ago[asan] abort_on_error=1 by default on Android.
Evgeniy Stepanov [Thu, 11 Aug 2016 00:26:29 +0000 (00:26 +0000)]
[asan] abort_on_error=1 by default on Android.

With this change, the default behavior on error is to call abort()
instead of _exit(). This should help the OS to capture a tombstone of
the error.

RAM usage of the lit test suite goes up because of all the tombstone
gathering, so I'm limiting the parallelism of the test target.
Previously it was based on the number of the CPUs on the host
machine, which is definitely wrong.

llvm-svn: 278308

7 years ago[MachOYAML] Don't output empty ExportTrie
Chris Bieneman [Thu, 11 Aug 2016 00:20:03 +0000 (00:20 +0000)]
[MachOYAML] Don't output empty ExportTrie

The YAML representation was always outputting the root node of an export trie even if the trie was empty. While this doesn't really have any functional impact, it does add visual clutter to the yaml file.

llvm-svn: 278307

7 years ago[Order Files] Don't use empty order files
Chris Bieneman [Thu, 11 Aug 2016 00:19:51 +0000 (00:19 +0000)]
[Order Files] Don't use empty order files

LD64 does optimization on symbol layouts that gets disabled whenever an order file is passed (even if it is empty). This change prevents disabling that optimization, and still enables iterative generation and usage of order files.

If the order file is empty it does not setup the order file flags, instead it sets the empty order file as a configuration dependency. When the order file changes it will then trigger a re-configuration that adds the linker flag.

llvm-svn: 278306

7 years agodlopen & dlclose can't throw C++ or ObjC exceptions, so don't do the extra work of
Jim Ingham [Thu, 11 Aug 2016 00:15:28 +0000 (00:15 +0000)]
dlopen & dlclose can't throw C++ or ObjC exceptions, so don't do the extra work of
setting & deleting the breakpoints to watch for this.

<rdar://problem/27780214>

llvm-svn: 278305

7 years agoFix a problem where if a uint64_t value is placed into a python dictionary and sent...
Greg Clayton [Wed, 10 Aug 2016 23:25:57 +0000 (23:25 +0000)]
Fix a problem where if a uint64_t value is placed into a python dictionary and sent up to LLDB and converted to StructuredData, it would not be able to parse the full 64 bit value. A number like 0xf000000000000000L could be placed into a dictionary, and sent to LLDB and it would end up being 0xffffffffffffffff since it would overflow a int64_t. We leave the old code there, but if it overflows, we treat the number like a uint64_t and get it to decode correctly. Added a gtest to cover this so we don't regress. I verified the gtest failed prior to the fix, and it succeeds after it.

<rdar://problem/27409265>

llvm-svn: 278304

7 years agoGlobalISel: support same ConstantExprs as Instructions.
Tim Northover [Wed, 10 Aug 2016 23:02:41 +0000 (23:02 +0000)]
GlobalISel: support same ConstantExprs as Instructions.

It's more than just inttoptr, but the others can't be tested until we have
support for non-trivial constants (they currently get unavoidably folded to a
ConstantInt).

llvm-svn: 278303

7 years agoMake pascal debugging work again.
Greg Clayton [Wed, 10 Aug 2016 22:55:26 +0000 (22:55 +0000)]
Make pascal debugging work again.

<rdar://problem/27652051>

llvm-svn: 278302

7 years agoImplement LWG 2148: Make non-enum default hash specialization well-formed
Eric Fiselier [Wed, 10 Aug 2016 22:45:26 +0000 (22:45 +0000)]
Implement LWG 2148: Make non-enum default hash specialization well-formed

Summary:
This patch removes the static_assert for non-enum types in the primary hash template. Instead non-enum types create a hash<T> specialization that is not constructible nor callable.

See also:
  * http://cplusplus.github.io/LWG/lwg-active.html#2543
  * https://llvm.org/bugs/show_bug.cgi?id=28917

Reviewers: mclow.lists, EricWF

Subscribers: mehdi_amini, cfe-commits

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

llvm-svn: 278300

7 years agoCentralize all select() calls into one place so that we can take advantage of system...
Greg Clayton [Wed, 10 Aug 2016 22:43:48 +0000 (22:43 +0000)]
Centralize all select() calls into one place so that we can take advantage of system specific optimizations to deal with more file descriptors than FD_SETSIZE on some systems.

<rdar://problem/25325383>
https://reviews.llvm.org/D22950

llvm-svn: 278299

7 years ago[ADT] Move LLVM_ATTRIBUTE_UNUSED_RESULT to the function, otherwise gcc 4.8 complains...
Tim Shen [Wed, 10 Aug 2016 22:35:38 +0000 (22:35 +0000)]
[ADT] Move LLVM_ATTRIBUTE_UNUSED_RESULT to the function, otherwise gcc 4.8 complains about it.

It's a fix for the original patch r278251.

llvm-svn: 278298

7 years ago[lld][MachO] Fix LC_SEGEMENT[_64] filesize computation in -r mode.
Lang Hames [Wed, 10 Aug 2016 22:15:09 +0000 (22:15 +0000)]
[lld][MachO] Fix LC_SEGEMENT[_64] filesize computation in -r mode.

Using vmsize to populate this file works when outputing MachO images, but fails
when outputting relocatable objects. This patch fixes the computation to use
file offsets, which works for both output types.

Fixes <rdar://problem/27727666>

llvm-svn: 278297

7 years agoGlobalISel: add tests forgotten in r278293.
Tim Northover [Wed, 10 Aug 2016 22:13:48 +0000 (22:13 +0000)]
GlobalISel: add tests forgotten in r278293.

llvm-svn: 278296

7 years ago[Documentation] Improve consistency.
Eugene Zelenko [Wed, 10 Aug 2016 22:00:49 +0000 (22:00 +0000)]
[Documentation] Improve consistency.

Mention Clang-rename Emacs integration in release notes.

llvm-svn: 278295

7 years ago[LangRef] Fix formatting (no semantic change)
Sanjoy Das [Wed, 10 Aug 2016 21:48:24 +0000 (21:48 +0000)]
[LangRef] Fix formatting (no semantic change)

llvm-svn: 278294

7 years agoGlobalISel: implement simple function calls on AArch64.
Tim Northover [Wed, 10 Aug 2016 21:44:01 +0000 (21:44 +0000)]
GlobalISel: implement simple function calls on AArch64.

We're still limited in the arguments we support, but this at least handles the
basic cases.

llvm-svn: 278293

7 years agotsan: Remove __pointer_chk_guard@GLIBC_PRIVATE requirement for AArch64
Adhemerval Zanella [Wed, 10 Aug 2016 21:39:28 +0000 (21:39 +0000)]
tsan: Remove __pointer_chk_guard@GLIBC_PRIVATE requirement for AArch64

Current AArch64 {sig}{set,long}jmp interposing requires accessing glibc
private __pointer_chk_guard to get process xor mask to demangled the
internal {sig}jmp_buf function pointers.

It causes some packing issues, as described in gcc PR#71042 [1], and is
is not a godd practice to rely on a private glibc namespace (since ABI is
not meant to be stable).

This patch fixes it by changing how libtsan obtains the guarded pointer
value: at initialization a specific routine issues a setjmp call and
using the mangled function pointer and the original value derive the
random guarded pointer.

Checked on aarch64 39-bit VMA.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71042

llvm-svn: 278292

7 years agoAMDGPU/SI: Implement amdgcn image intrinsics with sampler
Changpeng Fang [Wed, 10 Aug 2016 21:15:30 +0000 (21:15 +0000)]
AMDGPU/SI: Implement amdgcn image intrinsics with sampler

Summary:
  This patch define and implement amdgcn image intrinsics with sampler.

    1. define vdata type to be llvm_anyfloat_ty, address type to be llvm_anyfloat_ty,
       and rsrc type to be llvm_anyint_ty. As a result, we expect the intrinsics name
       to have three suffixes to overload each of these three types;

    2. D128 as well as two other flags are implied in the three types, for example,
       if you use v8i32 as resource type, then r128 is 0!

    3. don't expose TFE flag, and other flags are exposed in the instruction order:
       unrm, glc, slc, lwe and da.

Differential Revision: http://reviews.llvm.org/D22838

Reviewed by:
  arsenm and tstellarAMD

llvm-svn: 278291

7 years agoChanged sign of LastCallToStaticBouns
Piotr Padlewski [Wed, 10 Aug 2016 21:15:22 +0000 (21:15 +0000)]
Changed sign of LastCallToStaticBouns

Summary:
I think it is much better this way.
When I firstly saw line:
  Cost += InlineConstants::LastCallToStaticBonus;
I though that this is a bug, because everywhere where the cost is being reduced
it is usuing -=.

Reviewers: eraman, tejohnson, mehdi_amini

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 278290

7 years agoxfailed TestObjCNewSyntax.py on macOS for gmodules
Todd Fiala [Wed, 10 Aug 2016 21:07:48 +0000 (21:07 +0000)]
xfailed TestObjCNewSyntax.py on macOS for gmodules

Tracked by:
rdar://27792848

llvm-svn: 278289

7 years agoCodegen: Don't tail-duplicate blocks with un-analyzable fallthrough.
Kyle Butt [Wed, 10 Aug 2016 21:03:27 +0000 (21:03 +0000)]
Codegen: Don't tail-duplicate blocks with un-analyzable fallthrough.

If AnalyzeBranch can't analyze a block and it is possible to
fallthrough, then duplicating the block doesn't make sense, as only one
block can be the layout predecessor for the un-analyzable fallthrough.

Submitted wit a test case, but NOTE: the test case doesn't currently
fail. However, the test case fails with D20505 and would have saved me
some time debugging.

llvm-svn: 278288

7 years agoCodeGen: If Convert blocks that would form a diamond when tail-merged.
Kyle Butt [Wed, 10 Aug 2016 20:45:56 +0000 (20:45 +0000)]
CodeGen: If Convert blocks that would form a diamond when tail-merged.

The following function currently relies on tail-merging for if
conversion to succeed. The common tail of cond_true and cond_false is
extracted, and this then forms a diamond pattern that can be
successfully if converted.

If this block does not get extracted, either because tail-merging is
disabled or the threshold is higher, we should still recognize this
pattern and if-convert it.

Fixed a regression in the original commit. Need to un-reverse branches after
reversing them, or other conversions go awry.

define i32 @t2(i32 %a, i32 %b) nounwind {
entry:
        %tmp1434 = icmp eq i32 %a, %b           ; <i1> [#uses=1]
        br i1 %tmp1434, label %bb17, label %bb.outer

bb.outer:               ; preds = %cond_false, %entry
        %b_addr.021.0.ph = phi i32 [ %b, %entry ], [ %tmp10, %cond_false ]
        %a_addr.026.0.ph = phi i32 [ %a, %entry ], [ %a_addr.026.0, %cond_false ]
        br label %bb

bb:             ; preds = %cond_true, %bb.outer
        %indvar = phi i32 [ 0, %bb.outer ], [ %indvar.next, %cond_true ]
        %tmp. = sub i32 0, %b_addr.021.0.ph
        %tmp.40 = mul i32 %indvar, %tmp.
        %a_addr.026.0 = add i32 %tmp.40, %a_addr.026.0.ph
        %tmp3 = icmp sgt i32 %a_addr.026.0, %b_addr.021.0.ph
        br i1 %tmp3, label %cond_true, label %cond_false

cond_true:              ; preds = %bb
        %tmp7 = sub i32 %a_addr.026.0, %b_addr.021.0.ph
        %tmp1437 = icmp eq i32 %tmp7, %b_addr.021.0.ph
        %indvar.next = add i32 %indvar, 1
        br i1 %tmp1437, label %bb17, label %bb

cond_false:             ; preds = %bb
        %tmp10 = sub i32 %b_addr.021.0.ph, %a_addr.026.0
        %tmp14 = icmp eq i32 %a_addr.026.0, %tmp10
        br i1 %tmp14, label %bb17, label %bb.outer

bb17:           ; preds = %cond_false, %cond_true, %entry
        %a_addr.026.1 = phi i32 [ %a, %entry ], [ %tmp7, %cond_true ], [ %a_addr.026.0, %cond_false ]
        ret i32 %a_addr.026.1
}

Without tail-merging or diamond-tail if conversion:
LBB1_1:                                 @ %bb
                                        @ =>This Inner Loop Header: Depth=1
        cmp     r0, r1
        ble     LBB1_3
@ BB#2:                                 @ %cond_true
                                        @   in Loop: Header=BB1_1 Depth=1
        subs    r0, r0, r1
        cmp     r1, r0
        it      ne
        cmpne   r0, r1
        bgt     LBB1_4
LBB1_3:                                 @ %cond_false
                                        @   in Loop: Header=BB1_1 Depth=1
        subs    r1, r1, r0
        cmp     r1, r0
        bne     LBB1_1
LBB1_4:                                 @ %bb17
        bx      lr

With diamond-tail if conversion, but without tail-merging:
@ BB#0:                                 @ %entry
        cmp     r0, r1
        it      eq
        bxeq    lr
LBB1_1:                                 @ %bb
                                        @ =>This Inner Loop Header: Depth=1
        cmp     r0, r1
        ite     le
        suble   r1, r1, r0
        subgt   r0, r0, r1
        cmp     r1, r0
        bne     LBB1_1
@ BB#2:                                 @ %bb17
        bx      lr

llvm-svn: 278287

7 years agoFix the lookup of dictionary values by name to not do a linear search.
Greg Clayton [Wed, 10 Aug 2016 20:37:45 +0000 (20:37 +0000)]
Fix the lookup of dictionary values by name to not do a linear search.

llvm-svn: 278286

7 years agoDisable sancov tests failing due to apparent endianness issues
Reid Kleckner [Wed, 10 Aug 2016 20:11:35 +0000 (20:11 +0000)]
Disable sancov tests failing due to apparent endianness issues

Undoes some of the effect of r278271

llvm-svn: 278285

7 years ago[sancov] Port sancov -print-coverage-pcs to COFF
Reid Kleckner [Wed, 10 Aug 2016 20:08:19 +0000 (20:08 +0000)]
[sancov] Port sancov -print-coverage-pcs to COFF

The export table is not considered part of the object file symbol table,
so we have to look through it separately.

Reviewers: kcc

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

llvm-svn: 278284

7 years agostd:: quailfy the calls for cend/crend/cbegin/cend. Fixes bug 28927.
Marshall Clow [Wed, 10 Aug 2016 20:04:46 +0000 (20:04 +0000)]
std:: quailfy the calls for cend/crend/cbegin/cend. Fixes bug 28927.

llvm-svn: 278282

7 years agoFix UB in APInt::ashr
Jonathan Roelofs [Wed, 10 Aug 2016 19:50:14 +0000 (19:50 +0000)]
Fix UB in APInt::ashr

i64 -1, whose sign bit is the 0th one, can't be left shifted without invoking UB.

https://reviews.llvm.org/D23362

llvm-svn: 278280

7 years ago[Documentation] Fix style and grammar mistake in Clang-tidy readability-else-after...
Eugene Zelenko [Wed, 10 Aug 2016 19:49:38 +0000 (19:49 +0000)]
[Documentation] Fix style and grammar mistake in Clang-tidy readability-else-after-return description spotted by Alexander Kornienko.

llvm-svn: 278279

7 years agoAMDGPU: s_setpc_b64 should be an indirect branch
Matt Arsenault [Wed, 10 Aug 2016 19:20:02 +0000 (19:20 +0000)]
AMDGPU: s_setpc_b64 should be an indirect branch

llvm-svn: 278278

7 years agoAMDGPU: Set sizes on control flow pseudos
Matt Arsenault [Wed, 10 Aug 2016 19:11:51 +0000 (19:11 +0000)]
AMDGPU: Set sizes on control flow pseudos

llvm-svn: 278276

7 years agoAMDGPU: Remove empty file comment
Matt Arsenault [Wed, 10 Aug 2016 19:11:48 +0000 (19:11 +0000)]
AMDGPU: Remove empty file comment

llvm-svn: 278275

7 years agoAMDGPU: Remove unnecessary cast
Matt Arsenault [Wed, 10 Aug 2016 19:11:45 +0000 (19:11 +0000)]
AMDGPU: Remove unnecessary cast

llvm-svn: 278274

7 years agoAMDGPU: Change insertion point of si_mask_branch
Matt Arsenault [Wed, 10 Aug 2016 19:11:42 +0000 (19:11 +0000)]
AMDGPU: Change insertion point of si_mask_branch

Insert before the skip branch if one is created.
This is a somewhat more natural placement relative
to the skip branches, and makes it possible to implement
analyzeBranch for skip blocks.

The test changes are mostly due to a quirk where
the block label is not emitted if there is a terminator
that is not also a branch.

llvm-svn: 278273

7 years agoAMDGPU: Use CreateStackObject instead of CreateSpillStackObject
Matt Arsenault [Wed, 10 Aug 2016 19:11:36 +0000 (19:11 +0000)]
AMDGPU: Use CreateStackObject instead of CreateSpillStackObject

I'm not sure what the difference is, but no other target
uses this for emergency spill slots.

llvm-svn: 278272

7 years ago[sancov] Run more sancov tests on non-x86-Linux machines
Reid Kleckner [Wed, 10 Aug 2016 19:03:18 +0000 (19:03 +0000)]
[sancov] Run more sancov tests on non-x86-Linux machines

Add the $arch-registered-target features that clang uses to disable
tests that require a registered backend, so that we can run the sancov
tests on Windows. LLVM's lit suite did not appear to have a per-test way
to do this, and I would rather not split up the sancov tests into
architecture directories.

Split out of https://reviews.llvm.org/D23321

llvm-svn: 278271

7 years ago[x86, AVX] allow FP vector select folding to bitwise logic ops (PR28895)
Sanjay Patel [Wed, 10 Aug 2016 19:00:11 +0000 (19:00 +0000)]
[x86, AVX] allow FP vector select folding to bitwise logic ops (PR28895)

This handles the case in:
https://llvm.org/bugs/show_bug.cgi?id=28895

...but we are not getting all of the possibilities yet.
Eg, we use 'X86::FANDN' for scalar FP select combines.

That enhancement is filed as:
https://llvm.org/bugs/show_bug.cgi?id=28925

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

llvm-svn: 278270

7 years ago[IndVarSimplify] Eliminate zext of a signed IV when the IV is known to be non-negative
Andrew Kaylor [Wed, 10 Aug 2016 18:56:35 +0000 (18:56 +0000)]
[IndVarSimplify] Eliminate zext of a signed IV when the IV is known to be non-negative

Patch by Li Huang

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

llvm-svn: 278269

7 years agoLiveIntervalAnalysis: fix a crash in repairOldRegInRange
Nicolai Haehnle [Wed, 10 Aug 2016 18:51:14 +0000 (18:51 +0000)]
LiveIntervalAnalysis: fix a crash in repairOldRegInRange

Summary:
See the new test case for one that was (non-deterministically) crashing
on trunk and deterministically hit the assertion that I added in D23302.
Basically, the machine function contains a sequence

     DS_WRITE_B32 %vreg4, %vreg14:sub0, ...
     DS_WRITE_B32 %vreg4, %vreg14:sub0, ...
     %vreg14:sub1<def> = COPY %vreg14:sub0

and SILoadStoreOptimizer::mergeWrite2Pair merges the two DS_WRITE_B32
instructions into one before calling repairIntervalsInRange.

Now repairIntervalsInRange wants to repair %vreg14, in particular, and
ends up trying to repair %vreg14:sub1 as well, but that only becomes
active _after_ the range that is to be repaired, hence the crash due
to LR.find(...) == LR.begin() at the start of repairOldRegInRange.

I believe that just skipping those subrange is fine, but again, not too
familiar with that code.

Reviewers: MatzeB, kparzysz, tstellarAMD

Subscribers: llvm-commits, MatzeB

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

llvm-svn: 278268

7 years ago[ValueTracking] An improvement to IR ValueTracking on Non-negative Integers
Andrew Kaylor [Wed, 10 Aug 2016 18:47:19 +0000 (18:47 +0000)]
[ValueTracking] An improvement to IR ValueTracking on Non-negative Integers

Patch by Li Huang

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

llvm-svn: 278267

7 years ago[Hexagon] Remove unused variants of LO/HI instructions
Krzysztof Parzyszek [Wed, 10 Aug 2016 18:40:36 +0000 (18:40 +0000)]
[Hexagon] Remove unused variants of LO/HI instructions

llvm-svn: 278266

7 years agoCodegen: Tail Merge: Be less aggressive with special cases.
Kyle Butt [Wed, 10 Aug 2016 18:36:18 +0000 (18:36 +0000)]
Codegen: Tail Merge: Be less aggressive with special cases.

This change makes it possible for tail-duplication and tail-merging to
be disjoint. By being less aggressive when merging during layout, there are no
overlapping cases between tail-duplication and tail-merging, provided the
thresholds are disjoint.

There is a remaining TODO to benchmark the succ_size() test for non-layout tail
merging.

llvm-svn: 278265

7 years agoReapply [Sema] Add sizeof diagnostics for bzero
Bruno Cardoso Lopes [Wed, 10 Aug 2016 18:34:47 +0000 (18:34 +0000)]
Reapply [Sema] Add sizeof diagnostics for bzero

Reapply r277787. For memset (and others) we can get diagnostics like:

  struct stat { int x; };
  void foo(struct stat *stamps) {
    bzero(stamps, sizeof(stamps));
    memset(stamps, 0, sizeof(stamps));
  }

  t.c:7:28: warning: 'memset' call operates on objects of type 'struct stat' while the size is based on a different type 'struct stat *' [-Wsizeof-pointer-memaccess]
    memset(stamps, 0, sizeof(stamps));
           ~~~~~~            ^~~~~~
  t.c:7:28: note: did you mean to dereference the argument to 'sizeof' (and multiply it by the number of elements)?
    memset(stamps, 0, sizeof(stamps));
                             ^~~~~~

This patch implements the same class of warnings for bzero.

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

rdar://problem/18963514

llvm-svn: 278264

7 years ago[Documentation] Highlighting consistency and spelling mistake fix in Clang-tidy reada...
Eugene Zelenko [Wed, 10 Aug 2016 18:30:14 +0000 (18:30 +0000)]
[Documentation] Highlighting consistency and spelling mistake fix in Clang-tidy readability-else-after-return description.

llvm-svn: 278263

7 years ago[Release Notes] Consistency in Clang-tidy entries' style.
Eugene Zelenko [Wed, 10 Aug 2016 18:15:51 +0000 (18:15 +0000)]
[Release Notes] Consistency in Clang-tidy entries' style.

llvm-svn: 278262

7 years ago[ELF] Support LLVM-style casting for OutputSectionBase<ELFT> derived classes
Eugene Leviant [Wed, 10 Aug 2016 18:10:41 +0000 (18:10 +0000)]
[ELF] Support LLVM-style casting for OutputSectionBase<ELFT> derived classes

llvm-svn: 278261

7 years ago[X86][SSE] Dropped blend(insertps(x,y),zero) combine - this is now handled by target...
Simon Pilgrim [Wed, 10 Aug 2016 18:10:29 +0000 (18:10 +0000)]
[X86][SSE] Dropped blend(insertps(x,y),zero) combine - this is now handled by target shuffle chain combining

llvm-svn: 278260

7 years ago[ADT] Removed synthesized constructor introduced in r278251, since MSVC doesn't suppo...
Tim Shen [Wed, 10 Aug 2016 18:08:38 +0000 (18:08 +0000)]
[ADT] Removed synthesized constructor introduced in r278251, since MSVC doesn't support them

llvm-svn: 278259

7 years agoTargetOpcodes: Rewrite the documentation for SUBREG_TO_REG
Matthias Braun [Wed, 10 Aug 2016 18:05:50 +0000 (18:05 +0000)]
TargetOpcodes: Rewrite the documentation for SUBREG_TO_REG

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

llvm-svn: 278258

7 years ago[clang-tidy] enhance readability-else-after-return
Kirill Bobyrev [Wed, 10 Aug 2016 18:05:47 +0000 (18:05 +0000)]
[clang-tidy] enhance readability-else-after-return

`readability-else-after-return` only warns about `return` calls, but LLVM Coding
Standars stat that `throw`, `continue`, `goto`, etc after `return` calls are
bad, too.

Reviwers: alexfh, aaron.ballman

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

llvm-svn: 278257