platform/upstream/llvm.git
7 years ago[InstCombine] use APInt in isSignTest instead of ConstantInt; NFC
Sanjay Patel [Thu, 18 Aug 2016 14:59:14 +0000 (14:59 +0000)]
[InstCombine] use APInt in isSignTest instead of ConstantInt; NFC

This will enable vector splat folding, but NFC until the callers
have their ConstantInt restrictions removed.

llvm-svn: 279072

7 years ago[compiler-rt][tests] cpu_model_test.c test fails to compile if X86 is not clang's...
Oleg Ranevskyy [Thu, 18 Aug 2016 14:39:39 +0000 (14:39 +0000)]
[compiler-rt][tests] cpu_model_test.c test fails to compile if X86 is not clang's default target

Summary:
test/builtins/Unit/cpu_model_test.c tests the X86 specific builtin `__builtin_cpu_supports`.
It fails if the clang's default target is not X86.

The proposed patch adds an additional requirement for the X86 target to the test, making lit ignore the test if the target is different.

Reviewers: asbirlea

Subscribers: dberris, llvm-commits

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

llvm-svn: 279071

7 years agogdb-remote: Remove manual locking from GetShlibInfoAddr
Pavel Labath [Thu, 18 Aug 2016 14:33:55 +0000 (14:33 +0000)]
gdb-remote: Remove manual locking from GetShlibInfoAddr

The function can simply call the non-NoLock version of the SendPacket function and let it do the
locking.

llvm-svn: 279070

7 years agollvm-readobj: handle import libraries with -coff-exports
Saleem Abdulrasool [Thu, 18 Aug 2016 14:32:11 +0000 (14:32 +0000)]
llvm-readobj: handle import libraries with -coff-exports

`link -dump -exports` lists exported symbols from import libraries as well as
normal dlls.  Ensure that we can handle import libraries as well in
llvm-readobj.

llvm-svn: 279069

7 years agofix typo; NFC
Sanjay Patel [Thu, 18 Aug 2016 14:17:34 +0000 (14:17 +0000)]
fix typo; NFC

llvm-svn: 279068

7 years ago[Hexagon] Create vcombine in HexagonCopyToCombine
Krzysztof Parzyszek [Thu, 18 Aug 2016 14:12:34 +0000 (14:12 +0000)]
[Hexagon] Create vcombine in HexagonCopyToCombine

llvm-svn: 279067

7 years ago[InstCombine] use m_APInt to allow icmp (xor X, Y), C folds for splat constant vectors
Sanjay Patel [Thu, 18 Aug 2016 14:10:48 +0000 (14:10 +0000)]
[InstCombine] use m_APInt to allow icmp (xor X, Y), C folds for splat constant vectors

This is a sibling of:
https://reviews.llvm.org/rL278859
https://reviews.llvm.org/rL278935
https://reviews.llvm.org/rL278945

llvm-svn: 279066

7 years ago[X86][SSE] Add SSE1 tests to make sure we don't merge loads on illegal types
Simon Pilgrim [Thu, 18 Aug 2016 13:41:26 +0000 (13:41 +0000)]
[X86][SSE] Add SSE1 tests to make sure we don't merge loads on illegal types

llvm-svn: 279065

7 years ago[mips] Correct tail call encoding for MIPSR6
Simon Dardis [Thu, 18 Aug 2016 13:22:43 +0000 (13:22 +0000)]
[mips] Correct tail call encoding for MIPSR6

r277708 enabled tails calls for MIPS but used the 'jr' instruction when the
jump target was held in a register. For MIPSR6, 'jalr $zero, $reg' should
have been used. Additionally, add missing patterns for external and global
symbols for tail calls.

Reviewers: dsanders, vkalintiris

Differential Review: https://reviews.llvm.org/D23301

llvm-svn: 279064

7 years ago[Reassociate] Add test for PR28367.
Chad Rosier [Thu, 18 Aug 2016 13:22:37 +0000 (13:22 +0000)]
[Reassociate] Add test for PR28367.

llvm-svn: 279063

7 years agoAdd header guards to asan_descriptions.h
Filipe Cabecinhas [Thu, 18 Aug 2016 13:22:00 +0000 (13:22 +0000)]
Add header guards to asan_descriptions.h

llvm-svn: 279062

7 years ago(Trivial) TargetPassConfig: assert when TargetMachine has no MCAsmInfo
Alex Bradbury [Thu, 18 Aug 2016 13:08:58 +0000 (13:08 +0000)]
(Trivial) TargetPassConfig: assert when TargetMachine has no MCAsmInfo

Summary:
This is a pretty trivial, but I thought it was worth just checking that nobody feels it's completely the wrong thing to be doing.

The motivation is that when starting a new backend, you often start with a minimal stub, pretty much just FooTargetMachine and FooTargetInfo. Once that's built, you might naturally try `llc -march=foo myinput.ll` and it seems more developer-friendly if this ends up asserting due to the lack of MCAsmInfo with an informative message rather than just segfaulting.

Reviewers: MatzeB, chandlerc

Subscribers: bogner, llvm-commits

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

llvm-svn: 279061

7 years ago[ELF] - Linkerscript: removed duplicate forward declarations, regrouped. NFC.
George Rimar [Thu, 18 Aug 2016 13:00:49 +0000 (13:00 +0000)]
[ELF] - Linkerscript: removed duplicate forward declarations, regrouped. NFC.

llvm-svn: 279060

7 years ago[ELF] - Inline defineSymbolVersion(). NFC.
George Rimar [Thu, 18 Aug 2016 12:53:57 +0000 (12:53 +0000)]
[ELF] - Inline defineSymbolVersion(). NFC.

llvm-svn: 279059

7 years agoELF: ignore -EB and -EL options
Ed Maste [Thu, 18 Aug 2016 12:44:45 +0000 (12:44 +0000)]
ELF: ignore -EB and -EL options

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

llvm-svn: 279058

7 years agoMove QSyncThreadState packet generation to the gdb-remote client
Pavel Labath [Thu, 18 Aug 2016 12:32:41 +0000 (12:32 +0000)]
Move QSyncThreadState packet generation to the gdb-remote client

llvm-svn: 279057

7 years ago[analyzer] Teach CloneDetector to find clones that look like copy-paste errors.
Artem Dergachev [Thu, 18 Aug 2016 12:29:41 +0000 (12:29 +0000)]
[analyzer] Teach CloneDetector to find clones that look like copy-paste errors.

The original clone checker tries to find copy-pasted code that is exactly
identical to the original code, up to minor details.

As an example, if the copy-pasted code has all references to variable 'a'
replaced with references to variable 'b', it is still considered to be
an exact clone.

The new check finds copy-pasted code in which exactly one variable seems
out of place compared to the original code, which likely indicates
a copy-paste error (a variable was forgotten to be renamed in one place).

Patch by Raphael Isemann!

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

llvm-svn: 279056

7 years agoCorrect the documentation for isSignedInteger() and isUnsignedInteger().
Aaron Ballman [Thu, 18 Aug 2016 12:26:17 +0000 (12:26 +0000)]
Correct the documentation for isSignedInteger() and isUnsignedInteger().

Patch by Visoiu Mistrih Francis

llvm-svn: 279055

7 years agoRemove trailing whitespace
Simon Pilgrim [Thu, 18 Aug 2016 11:22:22 +0000 (11:22 +0000)]
Remove trailing whitespace

llvm-svn: 279054

7 years agoRevert "ADT: Remove UB in ilist (and use a circular linked list)"
Diana Picus [Thu, 18 Aug 2016 11:17:53 +0000 (11:17 +0000)]
Revert "ADT: Remove UB in ilist (and use a circular linked list)"

This reverts commit r278974 which broke some of our bots (e.g.
clang-cmake-aarch64-42vma, clang-cmake-aarch64-full).

llvm-svn: 279053

7 years agoRevert "ADT: Tidy up ilist_traits static asserts, NFC"
Diana Picus [Thu, 18 Aug 2016 11:17:47 +0000 (11:17 +0000)]
Revert "ADT: Tidy up ilist_traits static asserts, NFC"

This reverts commit r279012.
r278974 broke some bots, I have to revert this to get to it.

llvm-svn: 279052

7 years ago[clang-tidy docs] Minor fix
Alexander Kornienko [Thu, 18 Aug 2016 11:12:03 +0000 (11:12 +0000)]
[clang-tidy docs] Minor fix

llvm-svn: 279051

7 years ago[clang-tidy docs] Fix formatting.
Alexander Kornienko [Thu, 18 Aug 2016 11:10:52 +0000 (11:10 +0000)]
[clang-tidy docs] Fix formatting.

llvm-svn: 279050

7 years ago[clang-tidy docs] Fix build errors on Sphinx 1.4.5
Alexander Kornienko [Thu, 18 Aug 2016 11:06:09 +0000 (11:06 +0000)]
[clang-tidy docs] Fix build errors on Sphinx 1.4.5

llvm-svn: 279049

7 years ago[mips][msan] Fix all the XPASSes following r278793 and r278795
Daniel Sanders [Thu, 18 Aug 2016 10:50:46 +0000 (10:50 +0000)]
[mips][msan] Fix all the XPASSes following r278793 and r278795

All msan tests are now passing for mipsel and mips64el except for
allocator_mapping.cc which is marked unsupported.

llvm-svn: 279048

7 years ago[BlockGenerator] Invalidate SCEV values for instructions in scop
Tobias Grosser [Thu, 18 Aug 2016 10:45:57 +0000 (10:45 +0000)]
[BlockGenerator] Invalidate SCEV values for instructions in scop

We already invalidated a couple of critical values earlier on, but we now
invalidate all instructions contained in a scop after the scop has been code
generated. This is necessary as later scops may otherwise obtain SCEV
expressions that reference values in the earlier scop that before dominated
the later scop, but which had been moved into the conditional branch and
consequently do not dominate the later scop any more. If these very values are
then used during code generation of the later scop, we generate used that are
dominated by the values they use.

This fixes: http://llvm.org/PR28984

llvm-svn: 279047

7 years agoConvert AsanLocateAddress to Get*AddressInformation functions.
Filipe Cabecinhas [Thu, 18 Aug 2016 10:31:19 +0000 (10:31 +0000)]
Convert AsanLocateAddress to Get*AddressInformation functions.

llvm-svn: 279046

7 years agoRevert "[OpenMP] Sema and parsing for 'teams distribute simd’ pragma"
Diana Picus [Thu, 18 Aug 2016 09:25:07 +0000 (09:25 +0000)]
Revert "[OpenMP] Sema and parsing for 'teams distribute simd’ pragma"

This reverts commit r279003 as it breaks some of our buildbots (e.g.
clang-cmake-aarch64-quick, clang-x86_64-linux-selfhost-modules).

The error is in OpenMP/teams_distribute_simd_ast_print.cpp:
clang: /home/buildslave/buildslave/clang-cmake-aarch64-quick/llvm/include/llvm/ADT/DenseMap.h:527:
bool llvm::DenseMapBase<DerivedT, KeyT, ValueT, KeyInfoT, BucketT>::LookupBucketFor(const LookupKeyT&, const BucketT*&) const
[with LookupKeyT = clang::Stmt*; DerivedT = llvm::DenseMap<clang::Stmt*, long unsigned int>;
      KeyT = clang::Stmt*; ValueT = long unsigned int;
      KeyInfoT = llvm::DenseMapInfo<clang::Stmt*>;
      BucketT = llvm::detail::DenseMapPair<clang::Stmt*, long unsigned int>]:
Assertion `!KeyInfoT::isEqual(Val, EmptyKey) && !KeyInfoT::isEqual(Val, TombstoneKey) &&
"Empty/Tombstone value shouldn't be inserted into map!"' failed.

llvm-svn: 279045

7 years agorevert [analyzer] Added valist related checkers.
Gabor Horvath [Thu, 18 Aug 2016 09:13:37 +0000 (09:13 +0000)]
revert [analyzer] Added valist related checkers.

llvm-svn: 279043

7 years agotest commit
Guy Blank [Thu, 18 Aug 2016 08:44:33 +0000 (08:44 +0000)]
test commit

llvm-svn: 279042

7 years ago[analyzer] Added valist related checkers.
Gabor Horvath [Thu, 18 Aug 2016 08:43:26 +0000 (08:43 +0000)]
[analyzer] Added valist related checkers.

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

llvm-svn: 279041

7 years agogdb-remote: Centralize thread specific packet handling
Pavel Labath [Thu, 18 Aug 2016 08:30:03 +0000 (08:30 +0000)]
gdb-remote: Centralize thread specific packet handling

Summary:
Before this, each function had a copy of the code which handled appending of the thread suffix to
the packet (or using $Hg instead). I have moved that code into a single function and made
everyone else use that. The function takes the partial packet as a StreamString rvalue reference,
to avoid a copy and to remind the users that the packet will have undeterminate contents after
the call.

This also fixes the incorrect formatting of the QRestoreRegisterState packet in case thread
suffix is not supported.

Reviewers: clayborg

Subscribers: lldb-commits

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

llvm-svn: 279040

7 years agoFix tests for the gdb-remote memory read packets
Pavel Labath [Thu, 18 Aug 2016 08:21:42 +0000 (08:21 +0000)]
Fix tests for the gdb-remote memory read packets

Part of TestGDBRemoteMemoryRead has been disabled since r259379 because it was incompatible with
python3. This changes the test to use the lldb-server test framework, which is a more appropriate
method of testing raw stub behaviour anyway (and should avoid the whole python 3 issue).

llvm-svn: 279039

7 years agoFix parsing of complicated C++ names
Pavel Labath [Thu, 18 Aug 2016 08:21:38 +0000 (08:21 +0000)]
Fix parsing of complicated C++ names

Summary:
CPlusPlusLanguage::MethodName was not correctly parsing templated functions whose demangled name
included the return type -- the space before the function name was included in the "context" and
the context itself was not terminated correctly due to a misuse of the substr function (second
argument is length, not the end position). Fix that and add a regression test.

Reviewers: clayborg

Subscribers: lldb-commits

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

llvm-svn: 279038

7 years ago[analyzer] Small cleanups when checkers retrieving statements from exploded
Gabor Horvath [Thu, 18 Aug 2016 07:54:50 +0000 (07:54 +0000)]
[analyzer] Small cleanups when checkers retrieving statements from exploded
nodes.

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

llvm-svn: 279037

7 years ago[ELF] Don't add input sections twice when linker script is used
Eugene Leviant [Thu, 18 Aug 2016 07:27:37 +0000 (07:27 +0000)]
[ELF] Don't add input sections twice when linker script is used

llvm-svn: 279036

7 years ago[Driver] Use llvm-config.h, not config.h to unbreak out-of-tree builds
Vedant Kumar [Thu, 18 Aug 2016 06:43:07 +0000 (06:43 +0000)]
[Driver] Use llvm-config.h, not config.h to unbreak out-of-tree builds

llvm/Config/config.h has intentionally been excluded from llvm
installations (see: llvm/CMakeLists.txt). Un-break out-of-tree builds
post-r278882 by switching to llvm-config.h, which is exported.

Suggested by Will Dietz!

llvm-svn: 279035

7 years agoRemove debugging aids from this test and fix its expectations.
Richard Smith [Thu, 18 Aug 2016 06:15:19 +0000 (06:15 +0000)]
Remove debugging aids from this test and fix its expectations.

llvm-svn: 279034

7 years ago[ELF] Linkerscript: support assignment outside SECTIONS
Petr Hosek [Thu, 18 Aug 2016 04:34:27 +0000 (04:34 +0000)]
[ELF] Linkerscript: support assignment outside SECTIONS

We only support assignments inside SECTIONS, but this does not match
the behavior of GNU linker which also allows them outside SECTIONS.
The only restriction on assignments outside SECTIONS is that they
cannot reference . (they have to be absolute expressions).

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

llvm-svn: 279033

7 years ago[Docs] More MemorySSA doc updates!
George Burgess IV [Thu, 18 Aug 2016 02:56:05 +0000 (02:56 +0000)]
[Docs] More MemorySSA doc updates!

Thanks again to Michael Kuperstein for the feedback.

llvm-svn: 279032

7 years agoTestcase for r279022
Matthias Braun [Thu, 18 Aug 2016 02:21:54 +0000 (02:21 +0000)]
Testcase for r279022

llvm-svn: 279031

7 years ago[asan] trying to fix the windows bot
Kostya Serebryany [Thu, 18 Aug 2016 02:04:03 +0000 (02:04 +0000)]
[asan] trying to fix the windows bot

llvm-svn: 279030

7 years agoRevert r279016 -- it breaks win32-elf JIT tests.
Lang Hames [Thu, 18 Aug 2016 01:33:28 +0000 (01:33 +0000)]
Revert r279016 -- it breaks win32-elf JIT tests.

llvm-svn: 279029

7 years ago[sanitizer-coverag] update the docs in __sanitizer_cov_trace_cmp
Kostya Serebryany [Thu, 18 Aug 2016 01:26:36 +0000 (01:26 +0000)]
[sanitizer-coverag] update the docs in __sanitizer_cov_trace_cmp

llvm-svn: 279028

7 years ago[sanitizer-coverage/libFuzzer] instrument comparisons with __sanitizer_cov_trace_cmp...
Kostya Serebryany [Thu, 18 Aug 2016 01:25:28 +0000 (01:25 +0000)]
[sanitizer-coverage/libFuzzer] instrument comparisons with  __sanitizer_cov_trace_cmp[1248] instead of  __sanitizer_cov_trace_cmp, don't pass the comparison type to save a bit performance. Use these new callbacks in libFuzzer

llvm-svn: 279027

7 years ago[sanitizer-coverage] add __sanitizer_cov_trace_cmp[1248] to the sanitizer-coverage...
Kostya Serebryany [Thu, 18 Aug 2016 01:23:27 +0000 (01:23 +0000)]
[sanitizer-coverage] add __sanitizer_cov_trace_cmp[1248] to the sanitizer-coverage interface

llvm-svn: 279026

7 years agoFix bot failure due to new test
Teresa Johnson [Thu, 18 Aug 2016 01:18:15 +0000 (01:18 +0000)]
Fix bot failure due to new test

I had updated the output file name but not the corresponding nm based check
before submitting as r279023. This should fix the bot failures

llvm-svn: 279025

7 years agoPR28438: Update the information on an identifier with local definitions before
Richard Smith [Thu, 18 Aug 2016 01:16:55 +0000 (01:16 +0000)]
PR28438: Update the information on an identifier with local definitions before
trying to write out its macro graph, in case we imported a module that added
another module macro between the most recent local definition and the end of
the module.

llvm-svn: 279024

7 years ago[ThinLTO] Keep common symbols in ThinLTO modules
Teresa Johnson [Thu, 18 Aug 2016 01:08:50 +0000 (01:08 +0000)]
[ThinLTO] Keep common symbols in ThinLTO modules

Summary:
Skip the merging of common symbols for ThinLTO modules, they will be
merged by the final native object link. Trying to merge the symbols and
add to a combined module will incorrectly enable the common symbol to be
internalized in the ThinLTO module. Additionally, we will not want to
create a combined module for ThinLTO distributed builds.

This fixes failures in 7 cpu2006 benchmarks from the new LTO API in
ThinLTO mode.

Reviewers: mehdi_amini

Subscribers: pcc, llvm-commits, mehdi_amini

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

llvm-svn: 279023

7 years agoTailDuplicator: Fix crash after r278974
Matthias Braun [Thu, 18 Aug 2016 00:59:32 +0000 (00:59 +0000)]
TailDuplicator: Fix crash after r278974

Some inputs would after r278974 without this fix (see
http://lab.llvm.org:8080/green/job/clang-stage2-cmake-RgSan_build/2733/console
for an example)

llvm-svn: 279022

7 years ago[LTO] Promote before performing weak resolution
Mehdi Amini [Thu, 18 Aug 2016 00:59:24 +0000 (00:59 +0000)]
[LTO] Promote before performing weak resolution

Summary:
This was reversed compared to ThinLTOCodeGenerator for some reason,
and lead to an increased code-size on my tests. I figured that the
weak resolution may internalize a linkonce function, which will be
promoted immediately (and renamed), before being internalized again.

Reviewers: tejohnson

Subscribers: pcc, llvm-commits, mehdi_amini

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

llvm-svn: 279021

7 years ago[asan] Add support of lifetime poisoning into ComputeASanStackFrameLayout
Vitaly Buka [Thu, 18 Aug 2016 00:56:58 +0000 (00:56 +0000)]
[asan] Add support of lifetime poisoning into ComputeASanStackFrameLayout

Summary:
We are going to combine poisoning of red zones and scope poisoning.

PR27453

Reviewers: kcc, eugenis

Subscribers: llvm-commits

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

llvm-svn: 279020

7 years ago[asan] Add __asan_set_shadow_*
Vitaly Buka [Thu, 18 Aug 2016 00:56:11 +0000 (00:56 +0000)]
[asan] Add __asan_set_shadow_*

Summary:
We are poisoning small allocas using store instruction from instrumented code.
For larger allocas we'd like to insert function calls instead of multiple stores.

PR27453

Reviewers: kcc, eugenis

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 279019

7 years ago[RuntimeDyld] Strip leading '_' from symbols on 32-bit windows in
Lang Hames [Thu, 18 Aug 2016 00:22:34 +0000 (00:22 +0000)]
[RuntimeDyld] Strip leading '_' from symbols on 32-bit windows in
RTDyldMemoryManager::getSymbolAddressInProcess()

This should allow JIT'd code for win32 to find in-process symbols. See
http://llvm.org/PR28699 .

Patch by James Holderness. Thanks James!

llvm-svn: 279016

7 years ago[LTO] Change addSaveTemps API: do not add dot to the supplied prefix path
Mehdi Amini [Thu, 18 Aug 2016 00:12:33 +0000 (00:12 +0000)]
[LTO] Change addSaveTemps API: do not add dot to the supplied prefix path

Summary:
It does not play well with directories (end up with a bunch of hidden
files).
Also, do not strip the 0 suffix for the first task, especially since
0 can be used by ThinLTO as well now.

Reviewers: tejohnson

Subscribers: mehdi_amini, pcc, llvm-commits

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

llvm-svn: 279014

7 years ago[ELF] Allow specifying the stack size
Petr Hosek [Wed, 17 Aug 2016 23:59:58 +0000 (23:59 +0000)]
[ELF] Allow specifying the stack size

This option can be used to specify the stack size of the
PT_GNU_STACK segment.

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

llvm-svn: 279013

7 years agoADT: Tidy up ilist_traits static asserts, NFC
Duncan P. N. Exon Smith [Wed, 17 Aug 2016 23:47:56 +0000 (23:47 +0000)]
ADT: Tidy up ilist_traits static asserts, NFC

Change the ilist traits to use decltype instead of sizeof, and add
HasObsoleteCustomization so that additions to this list don't need to be
added in two places.

I suspect this will now work with MSVC, since the trait tested in
r278991 seems to work.  If for some reason it continues to fail on
Windows I'll follow up by adding back the #ifndef _MSC_VER.

llvm-svn: 279012

7 years ago[WebAssembly] Handle debug information and virtual registers without crashing (reland...
Dominic Chen [Wed, 17 Aug 2016 23:42:27 +0000 (23:42 +0000)]
[WebAssembly] Handle debug information and virtual registers without crashing (reland r278967)

Summary: Currently, enabling debug information when compiling for WebAssembly crashes the backend. This commit fixes these by skipping debug values in backend passes.

Reviewers: jfb, aprantl, dschuff, echristo

Subscribers: llvm-commits, dschuff, jfb, MatzeB, dexonsmith, yurydelendik, mehdi_amini

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

llvm-svn: 279011

7 years ago[asan] Remove "Stack partial redzone" from report
Vitaly Buka [Wed, 17 Aug 2016 23:38:08 +0000 (23:38 +0000)]
[asan] Remove "Stack partial redzone" from report

Summary: This value is never used.

Reviewers: kcc, eugenis

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 279010

7 years ago[Release notes] Mention Emacs integration in Include-fixer.
Eugene Zelenko [Wed, 17 Aug 2016 23:36:22 +0000 (23:36 +0000)]
[Release notes] Mention Emacs integration in Include-fixer.

llvm-svn: 279009

7 years agomake the associative containers do the right thing for propogate_on_container_assignm...
Marshall Clow [Wed, 17 Aug 2016 23:24:02 +0000 (23:24 +0000)]
make the associative containers do the right thing for propogate_on_container_assignment. Fixes bug #29001. Tests are only for <map> right now - more complete tests will come when we revamp our allocator testing structure.

llvm-svn: 279008

7 years ago[Docs] Update MemorySSA doc to address more feedback.
George Burgess IV [Wed, 17 Aug 2016 23:21:56 +0000 (23:21 +0000)]
[Docs] Update MemorySSA doc to address more feedback.

Primarily, this clarifies wording in a few places, and adds "\ "s to
make the formatting of things like "``Foo`` s" better.

Thanks to Michael Kuperstein for the comments.

llvm-svn: 279007

7 years ago[Documentation] Remove duplicated checks groups descriptions from clang-tidy/index...
Eugene Zelenko [Wed, 17 Aug 2016 23:20:00 +0000 (23:20 +0000)]
[Documentation] Remove duplicated checks groups descriptions from clang-tidy/index.rst.

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

llvm-svn: 279006

7 years agoPrint the module format in clang -module-file-info.
Adrian Prantl [Wed, 17 Aug 2016 23:14:00 +0000 (23:14 +0000)]
Print the module format in clang -module-file-info.

llvm-svn: 279005

7 years agoSupport object-file-wrapped modules in clang -module-file-info.
Adrian Prantl [Wed, 17 Aug 2016 23:13:53 +0000 (23:13 +0000)]
Support object-file-wrapped modules in clang -module-file-info.

rdar://problem/24504815

llvm-svn: 279004

7 years ago[OpenMP] Sema and parsing for 'teams distribute simd’ pragma
Kelvin Li [Wed, 17 Aug 2016 23:13:03 +0000 (23:13 +0000)]
[OpenMP] Sema and parsing for 'teams distribute simd’ pragma

This patch is to implement sema and parsing for 'teams distribute simd’ pragma.

This patch is originated by Carlo Bertolli.

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

llvm-svn: 279003

7 years ago[libFuzzer] force proper popcnt instruction
Kostya Serebryany [Wed, 17 Aug 2016 23:09:57 +0000 (23:09 +0000)]
[libFuzzer] force proper popcnt instruction

llvm-svn: 279002

7 years agoMake llvm-pdbdump print column info when available
Adrian McCarthy [Wed, 17 Aug 2016 23:01:03 +0000 (23:01 +0000)]
Make llvm-pdbdump print column info when available

llvm-pdbdump already had code to retrieve column information in the line tables, but it wasn't using it.

Most Microsoft PDBs don't seem to have column info, so this wasn't missed. But Clang includes column info by default (at least for now), and being able to see that is useful for ensuring we get the column info correct.

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

llvm-svn: 279001

7 years agoActually enable new test for const RangeAdapter. Missing from r278991
Pete Cooper [Wed, 17 Aug 2016 22:52:39 +0000 (22:52 +0000)]
Actually enable new test for const RangeAdapter.  Missing from r278991

llvm-svn: 279000

7 years agoSCEV: Don't assert about non-SCEV-able value in isSCEVExprNeverPoison() (PR28932)
Hans Wennborg [Wed, 17 Aug 2016 22:50:18 +0000 (22:50 +0000)]
SCEV: Don't assert about non-SCEV-able value in isSCEVExprNeverPoison() (PR28932)

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

llvm-svn: 278999

7 years ago[LoopUnroll] Move a simple check earlier. NFC.
Haicheng Wu [Wed, 17 Aug 2016 22:42:58 +0000 (22:42 +0000)]
[LoopUnroll] Move a simple check earlier. NFC.

Move the check of CallInst earlier to skip expensive recursive operations.

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

llvm-svn: 278998

7 years ago[LV] Move LoopBodyTraits to a better place, and add comment for simplifying LoopBlock...
Tim Shen [Wed, 17 Aug 2016 22:20:07 +0000 (22:20 +0000)]
[LV] Move LoopBodyTraits to a better place, and add comment for simplifying LoopBlocksTraversal. NFC.

Summary: I later (after r278573) found that LoopIterator.h has some overlapping with LoopBodyTraits. It's good to use LoopBodyTraits because a *Traits struct is algorithm independent.

Reviewers: anemet, nadav, mkuper

Subscribers: mzolotukhin, llvm-commits

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

llvm-svn: 278996

7 years ago[InstCombine] add test for missing vector icmp fold
Sanjay Patel [Wed, 17 Aug 2016 22:18:57 +0000 (22:18 +0000)]
[InstCombine] add test for missing vector icmp fold

Also, add a scalar test to demonstrate one of the intermediate folds that
is necessary to accomplish the existing, multi-step test. And simplify
the vector tests to only check the final piece of that multi-step transform.

llvm-svn: 278995

7 years agowordsmith the "new targets" section a bit.
Chris Lattner [Wed, 17 Aug 2016 22:17:03 +0000 (22:17 +0000)]
wordsmith the "new targets" section a bit.

llvm-svn: 278994

7 years ago[RegionIterator] clang-format some pieces. NFC.
Tim Shen [Wed, 17 Aug 2016 22:12:49 +0000 (22:12 +0000)]
[RegionIterator] clang-format some pieces. NFC.

llvm-svn: 278992

7 years agoFix reverse to work on const rbegin()/rend().
Pete Cooper [Wed, 17 Aug 2016 22:06:59 +0000 (22:06 +0000)]
Fix reverse to work on const rbegin()/rend().

Duncan found that reverse worked on mutable rbegin(), but the has_rbegin
trait didn't work with a const method.  See http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160815/382890.html
for more details.

Turns out this was already solved in clang with has_getDecl.  Copied that and made it work for rbegin.

This includes the tests Duncan attached to that thread, including the traits test.

llvm-svn: 278991

7 years ago[Darwin] Stop linking libclang_rt.eprintf.a
Chris Bieneman [Wed, 17 Aug 2016 21:54:30 +0000 (21:54 +0000)]
[Darwin] Stop linking libclang_rt.eprintf.a

Summary:
The eprintf library was added before the general OS X builtins library existed as a place to store one builtin function. Since we have for several years had an actual mandated builtin library for OS X > 10.5, we should just merge eprintf into the main library.

This change will resolve PR28855.

As a follow up I'll also patch compiler-rt to not generate the eprintf library anymore.

Reviewers: ddunbar, bob.wilson

Subscribers: cfe-commits

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

llvm-svn: 278988

7 years ago[CMake] Adding toolchain targets to PGO and Apple CMake caches
Chris Bieneman [Wed, 17 Aug 2016 21:51:38 +0000 (21:51 +0000)]
[CMake] Adding toolchain targets to PGO and Apple CMake caches

The Xcode toolchain targets are useful on OS X hosts because you can construct and install multiple toolchians that can be used seamlessly.

llvm-svn: 278987

7 years ago[libFuzzer] given 0 and 255 more preference when inserting repeated bytes
Kostya Serebryany [Wed, 17 Aug 2016 21:50:54 +0000 (21:50 +0000)]
[libFuzzer] given 0 and 255 more preference when inserting repeated bytes

llvm-svn: 278986

7 years ago[macho2yaml] Don't write empty linkedit data
Chris Bieneman [Wed, 17 Aug 2016 21:46:04 +0000 (21:46 +0000)]
[macho2yaml] Don't write empty linkedit data

Since I stopped writing empty export tries it causes LinkEdit to potentially be completely empty which results in invalid yaml being generated.

To prevent this we skip linkedit data if it is empty.

llvm-svn: 278985

7 years agoAdd test missed from r278983.
Richard Smith [Wed, 17 Aug 2016 21:42:10 +0000 (21:42 +0000)]
Add test missed from r278983.

llvm-svn: 278984

7 years agoPR18417: Increase -ftemplate-depth to the value 1024 recommended by the C++
Richard Smith [Wed, 17 Aug 2016 21:41:45 +0000 (21:41 +0000)]
PR18417: Increase -ftemplate-depth to the value 1024 recommended by the C++
standard's Annex B. We now attempt to increase the process's stack rlimit to
8MiB on startup, which appears to be enough to allow this to work reliably.
(And if it turns out not to be, we can investigate increasing it further.)

llvm-svn: 278983

7 years ago[libFuzzer] one more mutation: ChangeBinaryInteger; also fix the breakage from r278970
Kostya Serebryany [Wed, 17 Aug 2016 21:30:30 +0000 (21:30 +0000)]
[libFuzzer] one more mutation: ChangeBinaryInteger; also fix the breakage from r278970

llvm-svn: 278982

7 years agoTail Duplication: Accept explicit threshold for duplicating.
Kyle Butt [Wed, 17 Aug 2016 21:07:35 +0000 (21:07 +0000)]
Tail Duplication: Accept explicit threshold for duplicating.

This will allow tail duplication and tail merging during layout to have a
shared threshold to make sure that they don't overlap. No observable change
intended.

llvm-svn: 278981

7 years agoTailDuplicator: Use optForSize instead of hasFnAttribute.
Kyle Butt [Wed, 17 Aug 2016 21:07:33 +0000 (21:07 +0000)]
TailDuplicator: Use optForSize instead of hasFnAttribute.

This will cause minsize functions to have the same threshold as optsize
functions, but otherwise should have no effects.

llvm-svn: 278980

7 years agoRevert "Add a test for clang-tidy using the clang-cl driver."
Zachary Turner [Wed, 17 Aug 2016 21:01:13 +0000 (21:01 +0000)]
Revert "Add a test for clang-tidy using the clang-cl driver."

This reverts commit fd1908ce445eba4544d64cc68b3c03249e4bf614.

This should be the correct CL to revert.  The clang-side patch
that enabled this functionality was reverted, so this test needs
to be reverted until it gets fixed.

llvm-svn: 278979

7 years agoRevert "Revert "[Include-fixer] Install executables and support scripts""
Zachary Turner [Wed, 17 Aug 2016 20:58:14 +0000 (20:58 +0000)]
Revert "Revert "[Include-fixer] Install executables and support scripts""

This reverts commit 2aff596257e1c45fa54baae823ecbe61a785174e.

I'm having a bad day apparently.  I reverted the wrong CL.  This
puts it back.

llvm-svn: 278978

7 years agoRevert "[Include-fixer] Install executables and support scripts"
Zachary Turner [Wed, 17 Aug 2016 20:56:47 +0000 (20:56 +0000)]
Revert "[Include-fixer] Install executables and support scripts"

This reverts commit b725a314a9b7f746c37f70909ec3c4dcb6d9f6b5.

The patch that made this test work needed to be reverted, so this
test needs to be reverted as well.

llvm-svn: 278977

7 years agoRevert "[Tooling] Parse compilation database command lines on Windows."
Zachary Turner [Wed, 17 Aug 2016 20:55:35 +0000 (20:55 +0000)]
Revert "[Tooling] Parse compilation database command lines on Windows."

This reverts commit 27a874790fc79f6391ad3703d7c790f51ac6ae1f.

After the introduction of windows command line parsing, some unit tests
began failing that expect to test gnu style command line quirks.  The
fix is mechanical but time consuming, so revert this for now.

llvm-svn: 278976

7 years ago[libFuzzer] when printing the reproducer input, also print the base input and the...
Kostya Serebryany [Wed, 17 Aug 2016 20:45:23 +0000 (20:45 +0000)]
[libFuzzer] when printing the reproducer input, also print the base input and the mutation sequence

llvm-svn: 278975

7 years agoADT: Remove UB in ilist (and use a circular linked list)
Duncan P. N. Exon Smith [Wed, 17 Aug 2016 20:44:33 +0000 (20:44 +0000)]
ADT: Remove UB in ilist (and use a circular linked list)

This removes the undefined behaviour (UB) in ilist/ilist_node/etc.,
mainly by removing (gutting) the ilist_sentinel_traits customization
point and canonicalizing on a single, efficient memory layout.  This
fixes PR26753.

The new ilist is a doubly-linked circular list.
- ilist_node_base has two ilist_node_base*: Next and Prev.  Size-of: two
  pointers.
- ilist_node<T> (size-of: two pointers) is a type-safe wrapper around
  ilist_node_base.
- ilist_iterator<T> (size-of: two pointers) operates on an
  ilist_node<T>*, and downcasts to T* on dereference.
- ilist_sentinel<T> (size-of: two pointers) is a wrapper around
  ilist_node<T> that has some extra API for list management.
- ilist<T> (size-of: two pointers) has an ilist_sentinel<T>, whose
  address is returned for end().

The new memory layout matches ilist_half_embedded_sentinel_traits<T>
exactly.  The Head pointer that previously lived in ilist<T> is
effectively glued to the ilist_half_node<T> that lived in
ilist_half_embedded_sentinel_traits<T>, becoming the Next and Prev in
the ilist_sentinel_node<T>, respectively.  sizeof(ilist<T>) is now the
size of two pointers, and there is never any additional storage for a
sentinel.

This is a much simpler design for a doubly-linked list, removing most of
the corner cases of list manipulation (add, remove, etc.).  In follow-up
commits, I intend to move as many algorithms as possible into a
non-templated base class (ilist_base) to reduce code size.

Moreover, this fixes the UB in ilist_iterator/getNext/getPrev
operations.  Previously, ilist_iterator<T> operated on a T*, even when
the sentinel was not of type T (i.e., ilist_embedded_sentinel_traits and
ilist_half_embedded_sentinel_traits).  This added UB to all operations
involving end().   Now, ilist_iterator<T> operates on an ilist_node<T>*,
and only downcasts when the full type is guaranteed to be T*.

What did we lose?  There used to be a crash (in some configurations) on
++end().  Curiously (via UB), ++end() would return begin() for users of
ilist_half_embedded_sentinel_traits<T>, but otherwise ++end() would
cause a nice dependable nullptr dereference, crashing instead of a
possible infinite loop.  Options:
 1. Lose that behaviour.
 2. Keep it, by stealing a bit from Prev in asserts builds.
 3. Crash on dereference instead, using the same technique.

Hans convinced me (because of the number of problems this and r278532
exposed on Windows) that we really need some assertion here, at least in
the short term.  I've opted for #3 since I think it catches more bugs.

I added only a couple of unit tests to root out specific bugs I hit
during bring-up, but otherwise this is tested implicitly via the
extensive usage throughout LLVM.

Planned follow-ups:
- Remove ilist_*sentinel_traits<T>.  Here I've just gutted them to
  prevent build failures in sub-projects.  Once I stop referring to them
  in sub-projects, I'll come back and delete them.
- Add ilist_base and move algorithms there.
- Check and fix move construction and assignment.

Eventually, there are other interesting directions:
- Rewrite reverse iterators, so that rbegin().getNodePtr()==&*rbegin().
  This allows much simpler logic when erasing elements during a reverse
  traversal.
- Remove ilist_traits::createNode, by deleting the remaining API that
  creates nodes.  Intrusive lists shouldn't be creating nodes
  themselves.
- Remove ilist_traits::deleteNode, by (1) asserting that lists are empty
  on destruction and (2) changing API that calls it to take a Deleter
  functor (intrusive lists shouldn't be in the memory management
  business).
- Reconfigure the remaining callback traits (addNodeToList, etc.) to be
  higher-level, pulling out a simple_ilist<T> that is much easier to
  read and understand.
- Allow tags (e.g., ilist_node<T,tag1> and ilist_node<T,tag2>) so that T
  can be a member of multiple intrusive lists.

llvm-svn: 278974

7 years agoRevert "[WebAssembly] Handle debug information and virtual registers without crashing"
Duncan P. N. Exon Smith [Wed, 17 Aug 2016 20:41:50 +0000 (20:41 +0000)]
Revert "[WebAssembly] Handle debug information and virtual registers without crashing"

This reverts commit r278967, since the new test is failing when you
don't build the WebAssembly target (most people, since it's
off-by-default).

llvm-svn: 278973

7 years ago[OpenCL] AMDGPU: add support of cl_khr_subgroups
Yaxun Liu [Wed, 17 Aug 2016 20:39:49 +0000 (20:39 +0000)]
[OpenCL] AMDGPU: add support of cl_khr_subgroups

Patch by Aaron En Ye Shi.

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

llvm-svn: 278972

7 years ago[docs] Adding "new target" rules to dev policy
Renato Golin [Wed, 17 Aug 2016 20:38:09 +0000 (20:38 +0000)]
[docs] Adding "new target" rules to dev policy

Making explicit our current policy to accept new targets as experimental and
later official. Every new target should follow these rules to be added,
and kept relevant in the upstream tree.

llvm-svn: 278971

7 years agoReplace a few more "fall through" comments with LLVM_FALLTHROUGH
Justin Bogner [Wed, 17 Aug 2016 20:30:52 +0000 (20:30 +0000)]
Replace a few more "fall through" comments with LLVM_FALLTHROUGH

Follow up to r278902. I had missed "fall through", with a space.

llvm-svn: 278970

7 years agoGlobalISel: support irtranslation of icmp instructions.
Tim Northover [Wed, 17 Aug 2016 20:25:25 +0000 (20:25 +0000)]
GlobalISel: support irtranslation of icmp instructions.

llvm-svn: 278969

7 years agoAdd a test for clang-tidy using the clang-cl driver.
Zachary Turner [Wed, 17 Aug 2016 20:14:10 +0000 (20:14 +0000)]
Add a test for clang-tidy using the clang-cl driver.

Reviewed By: alexfh
Differential Revision: https://reviews.llvm.org/D23480

llvm-svn: 278968

7 years ago[WebAssembly] Handle debug information and virtual registers without crashing
Dominic Chen [Wed, 17 Aug 2016 20:11:03 +0000 (20:11 +0000)]
[WebAssembly] Handle debug information and virtual registers without crashing

Summary: Currently, enabling debug information when compiling for WebAssembly crashes the backend. This commit fixes these by skipping debug values in backend passes.

Reviewers: jfb, aprantl, dschuff, echristo

Subscribers: mehdi_amini, yurydelendik, dexonsmith, MatzeB, jfb, dschuff, llvm-commits

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

llvm-svn: 278967

7 years ago[GraphWriter] Change GraphWriter to use NodeRef in GraphTraits
Tim Shen [Wed, 17 Aug 2016 20:07:29 +0000 (20:07 +0000)]
[GraphWriter] Change GraphWriter to use NodeRef in GraphTraits

Summary:
This is part of the "NodeType* -> NodeRef" migration. Notice that since
GraphWriter prints object address as identity, I added a static_assert on
NodeRef to be a pointer type.

Reviewers: dblaikie

Subscribers: llvm-commits, MatzeB

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

llvm-svn: 278966

7 years agoAMDGPU: Remove dead option
Matt Arsenault [Wed, 17 Aug 2016 20:07:16 +0000 (20:07 +0000)]
AMDGPU: Remove dead option

llvm-svn: 278965