platform/upstream/llvm.git
7 years agoRemove accidental debug printf. Follow up to r299583.
Ivan Krasin [Wed, 5 Apr 2017 20:07:43 +0000 (20:07 +0000)]
Remove accidental debug printf. Follow up to r299583.

llvm-svn: 299584

7 years agoRevert r299536. [AMDGPU] SDWA peephole: enable by default.
Ivan Krasin [Wed, 5 Apr 2017 19:58:12 +0000 (19:58 +0000)]
Revert r299536. [AMDGPU] SDWA peephole: enable by default.

Reason: breaks multiple bots:

http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/3988
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1173

Original Review URL: https://reviews.llvm.org/D31671

llvm-svn: 299583

7 years ago[Hexagon] Use -mattr to select HVX mode in a testcase, NFC
Krzysztof Parzyszek [Wed, 5 Apr 2017 19:46:37 +0000 (19:46 +0000)]
[Hexagon] Use -mattr to select HVX mode in a testcase, NFC

llvm-svn: 299582

7 years agoRemove unnecessary virtual dtor.
Rui Ueyama [Wed, 5 Apr 2017 19:21:35 +0000 (19:21 +0000)]
Remove unnecessary virtual dtor.

This class doesn't have virtual member functions, and no instances
of this class is deleted through base pointers.

llvm-svn: 299581

7 years agoInline small functions that are used only once.
Rui Ueyama [Wed, 5 Apr 2017 19:21:15 +0000 (19:21 +0000)]
Inline small functions that are used only once.

llvm-svn: 299580

7 years agoFix comments.
Rui Ueyama [Wed, 5 Apr 2017 19:20:54 +0000 (19:20 +0000)]
Fix comments.

llvm-svn: 299579

7 years agoMemorySSA: Remove MemorySSA walker caching.
Daniel Berlin [Wed, 5 Apr 2017 19:01:58 +0000 (19:01 +0000)]
MemorySSA: Remove MemorySSA walker caching.

Summary:
Remove all the caching the clobber walker does, and that the
caching walker does.  With the patch to enable storing clobbering
access results for stores, i can find no improvement with the cache
turned on (and a number of degradations, both time and memory, from
the cost of caching.  For a large program i have, we do millions of
lookups and inserts with zero hits).

I haven't tried to rename or simplify the walker otherwise yet.

(Appreciate some perf testing on this past my own testing)

Reviewers: george.burgess.iv, davide

Subscribers: Prazek, llvm-commits

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

llvm-svn: 299578

7 years ago[lit] Fix Analysis test format pickling error
Reid Kleckner [Wed, 5 Apr 2017 18:56:48 +0000 (18:56 +0000)]
[lit] Fix Analysis test format pickling error

Move the test format into a standalone .py file and add it to the site
module search path. This allows us to run the test on Windows, and it
makes it compatible with the multiprocessing.Pool lit test execution
strategy.

I think this test was only passing everywhere else because
multiprocessing uses 'fork' to spawn workers, so the test format never
needs to be pickled.

llvm-svn: 299577

7 years ago[llvm-readobj] Only print the real size of the note
Petr Hosek [Wed, 5 Apr 2017 18:55:50 +0000 (18:55 +0000)]
[llvm-readobj] Only print the real size of the note

Note payloads are padded to a multiple of 4 bytes in size, but the size
of the string that should be print can be smaller e.g. the n_descsz
field in gold's version note is 9, so that's the whole size of the
string that should be printed. The padding is part of the format of a
SHT_NOTE section or PT_NOTE segment, but it's not part of the note
itself.

Printing the extra null bytes may confuse some tools, e.g. when the
llvm-readobj is sent to grep, it treats the output as binary because
it contains a null byte.

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

llvm-svn: 299576

7 years agoFix invalid memory access on android x86
Saleem Abdulrasool [Wed, 5 Apr 2017 18:33:23 +0000 (18:33 +0000)]
Fix invalid memory access on android x86

On certain versions of android x86, the main module `app_process` is not
built as PIE.  When accessing the PT_GNU_EH_FRAME_HDR in such a
scenario, the `dlpi_addr` is 0, but the virtual address is not
relocated.  Manually rebase the address to avoid an invalid memory
access.

llvm-svn: 299575

7 years agoclang-format: Support formatting utf-8 character literals in C++11+ mode.
Nico Weber [Wed, 5 Apr 2017 18:10:42 +0000 (18:10 +0000)]
clang-format: Support formatting utf-8 character literals in C++11+ mode.

clang-format <<END
auto c1 = u8'a';
auto c2 = u'a';
END

Before:
  auto c1 = u8 'a';
  auto c2 = u'a';

Now:
  auto c1 = u8'a';
  auto c2 = u'a';

Patch from Denis Gladkikh <llvm@denis.gladkikh.email>!

llvm-svn: 299574

7 years agoRename ScriptConfig::UndefinedSymbols ReferencedSymbols.
Rui Ueyama [Wed, 5 Apr 2017 18:02:30 +0000 (18:02 +0000)]
Rename ScriptConfig::UndefinedSymbols ReferencedSymbols.

Symbols referenced by linker scripts are not necessarily be undefined,
so the previous name didn't convey the meaining of the variable.

llvm-svn: 299573

7 years ago[DAGCombine] Support FMF contract in fused multiple-and-sub too
Adam Nemet [Wed, 5 Apr 2017 17:58:48 +0000 (17:58 +0000)]
[DAGCombine] Support FMF contract in fused multiple-and-sub too

This is a follow-on to r299096 which added support for fmadd.

Subtract does not have the case where with two multiply operands we commute in
order to fuse with the multiply with the fewer uses.

llvm-svn: 299572

7 years ago[DAGCombine] Remove commented-out code from r299096
Adam Nemet [Wed, 5 Apr 2017 17:58:44 +0000 (17:58 +0000)]
[DAGCombine] Remove commented-out code from r299096

llvm-svn: 299571

7 years ago[InstCombine] add fold for icmp with or mask of low bits (PR32542)
Sanjay Patel [Wed, 5 Apr 2017 17:57:05 +0000 (17:57 +0000)]
[InstCombine] add fold for icmp with or mask of low bits (PR32542)

We already have these 'and' folds:

// X & -C == -C -> X >  u ~C
// X & -C != -C -> X <= u ~C
//   iff C is a power of 2

...but we were missing the 'or' siblings.

http://rise4fun.com/Alive/n6

This should improve:
https://bugs.llvm.org/show_bug.cgi?id=32524
...but there are 2 or more other pieces to fix still.

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

llvm-svn: 299570

7 years ago[ExecutionDepsFix] Don't recurse over the CFG
Keno Fischer [Wed, 5 Apr 2017 17:42:56 +0000 (17:42 +0000)]
[ExecutionDepsFix] Don't recurse over the CFG

Summary:
Use an explicit work queue instead, to avoid accidentally
causing stack overflows for input with very large CFGs.

Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D31681

llvm-svn: 299569

7 years ago[InstCombine] fix formatting and variable names; NFCI
Sanjay Patel [Wed, 5 Apr 2017 17:38:34 +0000 (17:38 +0000)]
[InstCombine] fix formatting and variable names; NFCI

There must be some opportunity to refactor big chunks of nearly duplicated code in FoldOrOfICmps / FoldAndOfICmps.
Also, none of this works with vectors, but it should.

llvm-svn: 299568

7 years ago[AMDGPU][MC] Fix for Bug 28158 + LIT tests
Dmitry Preobrazhensky [Wed, 5 Apr 2017 17:26:45 +0000 (17:26 +0000)]
[AMDGPU][MC] Fix for Bug 28158 + LIT tests

Added support of the following instructions:
- s_cbranch_cdbgsys
- s_cbranch_cdbgsys_and_user
- s_cbranch_cdbgsys_or_user
- s_cbranch_cdbguser
- s_setkill

Reviewers: vpykhtin

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

llvm-svn: 299567

7 years agoMemorySSA: Fix and use optimized_def_chain
Daniel Berlin [Wed, 5 Apr 2017 17:26:25 +0000 (17:26 +0000)]
MemorySSA: Fix and use optimized_def_chain

llvm-svn: 299566

7 years ago[lit] Revert to old execution strategy while I debug these pickling errors
Reid Kleckner [Wed, 5 Apr 2017 17:16:37 +0000 (17:16 +0000)]
[lit] Revert to old execution strategy while I debug these pickling errors

llvm-svn: 299565

7 years ago[lit] Use Python 3 style print to satisfy some bots
Reid Kleckner [Wed, 5 Apr 2017 17:05:31 +0000 (17:05 +0000)]
[lit] Use Python 3 style print to satisfy some bots

llvm-svn: 299564

7 years agoARMFrameLowering: Slight cleanups; NFC
Matthias Braun [Wed, 5 Apr 2017 16:58:41 +0000 (16:58 +0000)]
ARMFrameLowering: Slight cleanups; NFC

llvm-svn: 299562

7 years agoFix -Wmissing-field-initializer warnings to unbreak the -Werror build
David Blaikie [Wed, 5 Apr 2017 16:50:19 +0000 (16:50 +0000)]
Fix -Wmissing-field-initializer warnings to unbreak the -Werror build

llvm-svn: 299561

7 years ago[lit] Use process pools for test execution by default
Reid Kleckner [Wed, 5 Apr 2017 16:44:56 +0000 (16:44 +0000)]
[lit] Use process pools for test execution by default

Summary:
This drastically reduces lit test execution startup time on Windows. Our
previous strategy was to manually create one Process per job and manage
the worker pool ourselves. Instead, let's use the worker pool provided
by multiprocessing.  multiprocessing.Pool(jobs) returns almost
immediately, and initializes the appropriate number of workers, so they
can all start executing tests immediately. This avoids the ramp-up
period that the old implementation suffers from.  This appears to speed
up small test runs.

Here are some timings of the llvm-readobj tests on Windows using the
various execution strategies:

 # multiprocessing.Pool:
$ for i in `seq 1 3`; do tim python ./bin/llvm-lit.py -sv ../llvm/test/tools/llvm-readobj/ --use-process-pool |& grep real: ; done
real: 0m1.156s
real: 0m1.078s
real: 0m1.094s

 # multiprocessing.Process:
$ for i in `seq 1 3`; do tim python ./bin/llvm-lit.py -sv ../llvm/test/tools/llvm-readobj/ --use-processes |& grep real: ; done
real: 0m6.062s
real: 0m5.860s
real: 0m5.984s

 # threading.Thread:
$ for i in `seq 1 3`; do tim python ./bin/llvm-lit.py -sv ../llvm/test/tools/llvm-readobj/ --use-threads |& grep real: ; done
real: 0m9.438s
real: 0m10.765s
real: 0m11.079s

I kept the old code to launch processes in case this change doesn't work
on all platforms that LLVM supports, but at some point I would like to
remove both the threading and old multiprocessing execution strategies.

Reviewers: modocache, rafael

Subscribers: llvm-commits

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

llvm-svn: 299560

7 years agoDo not use relocateOne() to just write 32-bit words.
Rui Ueyama [Wed, 5 Apr 2017 16:33:44 +0000 (16:33 +0000)]
Do not use relocateOne() to just write 32-bit words.

llvm-svn: 299559

7 years ago[ARM] Try to re-enable MachineBranchProb.ll for ARM/AArch64
Renato Golin [Wed, 5 Apr 2017 16:27:11 +0000 (16:27 +0000)]
[ARM] Try to re-enable MachineBranchProb.ll for ARM/AArch64

Commit r298799 changed code that made the XFAIL on MachineBranchProb.ll
irrelevant, but some configurations still failed. I can't reproduce it
locally, so I'm hoping that enabling this will tell me if some
configurations will really fail or if they were just too slow.

llvm-svn: 299558

7 years ago[InstCombine] add tests for missing icmp fold (PR32524)
Sanjay Patel [Wed, 5 Apr 2017 16:21:38 +0000 (16:21 +0000)]
[InstCombine] add tests for missing icmp fold (PR32524)

llvm-svn: 299557

7 years agoRename GotEntryAddr -> GotPltEntryAddr.
Rui Ueyama [Wed, 5 Apr 2017 16:15:59 +0000 (16:15 +0000)]
Rename GotEntryAddr -> GotPltEntryAddr.

Because they are addresses in .got.plt and not in .got.

llvm-svn: 299556

7 years ago[AMDGPU][MC] Fix for Bug 28167 + LIT tests
Dmitry Preobrazhensky [Wed, 5 Apr 2017 16:08:21 +0000 (16:08 +0000)]
[AMDGPU][MC] Fix for Bug 28167 + LIT tests

Corrected src0 for v_writelane_b32:
- Enabled inline constants and literals for SI/CI (VOP2)
- Enabled inline constants for VI (VOP3)

Reviewers: vpykhtin, arsenm

https://reviews.llvm.org/D31463

llvm-svn: 299555

7 years agoRemove unnecessary local variable.
Rui Ueyama [Wed, 5 Apr 2017 16:07:44 +0000 (16:07 +0000)]
Remove unnecessary local variable.

This patch does what r299506 was trying to do in a different way.

llvm-svn: 299554

7 years agoFix PLT and GOTPLT entries for 32-bit x86 PIC.
Rui Ueyama [Wed, 5 Apr 2017 16:01:33 +0000 (16:01 +0000)]
Fix PLT and GOTPLT entries for 32-bit x86 PIC.

Previously, the code we set to our .plt entries expected that .got
and .got.plt are consecutive in the virtual address space.
Since %ebx points to the last entry of .got for position-independent
code, it assumed that .got is accessible with small negative
displacements and .got.plt are accessible with small positive
displacements.

That assumption was simply wrong. We don't impose any restrictions on
relative layout of .got and .got.plt. As a result, the control is
transferred to a bogus address from .plt at runtime, which resulted in
segfaults.

This patch removes that wrong assumption. We still assume that .got.plt
has a fixed relative address to .got, but we no longer assume that they
are consecutive in memory.

With this change, a "hello world" program compiled with -fPIC works.

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

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

llvm-svn: 299553

7 years ago[SystemZ] Prevent Merging Bitcast with non-normal loads
Nirav Dave [Wed, 5 Apr 2017 15:42:48 +0000 (15:42 +0000)]
[SystemZ] Prevent Merging Bitcast with non-normal loads

Fixes PR32505.

Reviewers: uweigand, jonpa

Subscribers: llvm-commits

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

llvm-svn: 299552

7 years ago[yaml2obj] Factor out error handling code.
Davide Italiano [Wed, 5 Apr 2017 15:18:16 +0000 (15:18 +0000)]
[yaml2obj] Factor out error handling code.

llvm-svn: 299551

7 years agoRevert "[analyzer] Add a modular constraint system to the CloneDetector"
Artem Dergachev [Wed, 5 Apr 2017 15:06:17 +0000 (15:06 +0000)]
Revert "[analyzer] Add a modular constraint system to the CloneDetector"

This reverts commit r299544.

Crashes on tests on some buildbots.

llvm-svn: 299550

7 years ago[llvm-ar] Remove unneeded std::, NFCI.
Davide Italiano [Wed, 5 Apr 2017 15:05:05 +0000 (15:05 +0000)]
[llvm-ar] Remove unneeded std::, NFCI.

This makes it more consistent with other exit() calls in llvm-ar
(and the tools in general).

llvm-svn: 299549

7 years ago[llvm-ar] errors go on stderr and not on stdout.
Davide Italiano [Wed, 5 Apr 2017 14:52:17 +0000 (14:52 +0000)]
[llvm-ar] errors go on stderr and not on stdout.

llvm-svn: 299548

7 years agoRespect CMAKE_INSTALL_MANDIR for sphinx generated manpages
Jonathan Roelofs [Wed, 5 Apr 2017 14:49:46 +0000 (14:49 +0000)]
Respect CMAKE_INSTALL_MANDIR for sphinx generated manpages

This is a re-work of r297516, which was reverted in r297545.

https://reviews.llvm.org/D30906

llvm-svn: 299547

7 years ago[yaml2obj] Improve error message when output file cannot be opened.
Davide Italiano [Wed, 5 Apr 2017 14:44:00 +0000 (14:44 +0000)]
[yaml2obj] Improve error message when output file cannot be opened.

Patch by Sam Clegg!

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

llvm-svn: 299546

7 years ago[LV] Make test case more robust
Matthew Simpson [Wed, 5 Apr 2017 14:34:13 +0000 (14:34 +0000)]
[LV] Make test case more robust

This test case depends on the loop being vectorized without forcing the
vectorization factor. If the profitability ever changes in the future (due to
cost model improvements), the test may no longer work as intended. Instead of
checking the resulting IR, we should just check the instruction costs. The
costs will be computed regardless if vectorization is profitable.

llvm-svn: 299545

7 years ago[analyzer] Add a modular constraint system to the CloneDetector
Artem Dergachev [Wed, 5 Apr 2017 14:17:36 +0000 (14:17 +0000)]
[analyzer] Add a modular constraint system to the CloneDetector

A big part of the clone detection code is functionality for filtering clones and
clone groups based on different criteria. So far this filtering process was
hardcoded into the CloneDetector class, which made it hard to understand and,
ultimately, to extend.

This patch splits the CloneDetector's logic into a sequence of reusable
constraints that are used for filtering clone groups. These constraints
can be turned on and off and reodreder at will, and new constraints are easy
to implement if necessary.

Unit tests are added for the new constraint interface.

This is a refactoring patch - no functional change intended.

Patch by Raphael Isemann!

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

llvm-svn: 299544

7 years agoclang-format-vsix: Add "Format on Save" feature
Antonio Maiorano [Wed, 5 Apr 2017 14:13:45 +0000 (14:13 +0000)]
clang-format-vsix: Add "Format on Save" feature

This change adds a feature to the clang-format VS extension that optionally
enables the automatic formatting of documents when saving. Since developers
always need to save their files, this eases the workflow of making sure source
files are properly formatted.

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

llvm-svn: 299543

7 years ago[DAGCombiner] add and use TLI hook to convert and-of-seteq / or-of-setne to bitwise...
Sanjay Patel [Wed, 5 Apr 2017 14:09:39 +0000 (14:09 +0000)]
[DAGCombiner] add and use TLI hook to convert and-of-seteq / or-of-setne to bitwise logic+setcc (PR32401)

This is a generic combine enabled via target hook to reduce icmp logic as discussed in:
https://bugs.llvm.org/show_bug.cgi?id=32401

It's likely that other targets will want to enable this hook for scalar transforms,
and there are probably other patterns that can use bitwise logic to reduce comparisons.

Note that we are missing an IR canonicalization for these patterns, and we will probably
prefer the pair-of-compares form in IR (shorter, more likely to fold).

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

llvm-svn: 299542

7 years ago-Wunreachable-code: 'true' and 'false' should not be treated as configuration
Alex Lorenz [Wed, 5 Apr 2017 14:07:21 +0000 (14:07 +0000)]
-Wunreachable-code: 'true' and 'false' should not be treated as configuration
macros

Clang should emit -Wunreachable-code warnings in C mode for code that's
unreachable because of a 'false' or '!true' condition.

llvm-svn: 299541

7 years ago[DAGCombiner] Don't make a BUILD_VECTOR with operands of illegal type.
Jonas Paulsson [Wed, 5 Apr 2017 13:45:37 +0000 (13:45 +0000)]
[DAGCombiner]  Don't make a BUILD_VECTOR with operands of illegal type.

When DAGCombiner visits a SIGN_EXTEND_INREG of a BUILD_VECTOR with
constant operands, a new BUILD_VECTOR node will be created transformed
constants.

Llvm-stress found a case where the new BUILD_VECTOR had constant operands
of an illegal type, because the (legal) element type is in fact not a legal
scalar type.

This patch changes this so that the new BUILD_VECTOR has the same operand
type as the old one.

Review: Eli Friedman, Nirav Dave
https://bugs.llvm.org//show_bug.cgi?id=32422

llvm-svn: 299540

7 years ago[InstCombine] add tests for missing add canonicalization; NFC
Sanjay Patel [Wed, 5 Apr 2017 13:33:10 +0000 (13:33 +0000)]
[InstCombine] add tests for missing add canonicalization; NFC

llvm-svn: 299539

7 years ago[globalisel][tablegen] Fix patterns involving multiple ComplexPatterns.
Daniel Sanders [Wed, 5 Apr 2017 13:14:03 +0000 (13:14 +0000)]
[globalisel][tablegen] Fix patterns involving multiple ComplexPatterns.

Summary:
Temporaries are now allocated to operands instead of predicates and this
allocation is used to correctly pair up the rendered operands with the
matched operands.

Previously, ComplexPatterns were allocated temporaries independently in the
Src Pattern and Dst Pattern, leading to mismatches. Additionally, the Dst
Pattern failed to account for the allocated index and therefore always used
temporary 0, 1, ... when it should have used base+0, base+1, ...

Thanks to Aditya Nandakumar for noticing the bug.

Depends on D30539

Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar

Reviewed By: rovka

Subscribers: igorb, dberris, kristof.beyls, llvm-commits

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

llvm-svn: 299538

7 years ago[OpenCL] Extended diagnostics for atomic initialization
Egor Churaev [Wed, 5 Apr 2017 12:47:10 +0000 (12:47 +0000)]
[OpenCL] Extended diagnostics for atomic initialization

Summary:
I saw the same changes in the following review: https://reviews.llvm.org/D17438

I don't know in that way I could determine that atomic variable was initialized by macro ATOMIC_VAR_INIT. Anyway I added check that atomic variables can be initialize only in global scope.
I think that we can discuss this change.

Reviewers: Anastasia, cfe-commits

Reviewed By: Anastasia

Subscribers: bader, yaxunl

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

llvm-svn: 299537

7 years ago[AMDGPU] SDWA peephole: enable by default
Sam Kolton [Wed, 5 Apr 2017 12:00:45 +0000 (12:00 +0000)]
[AMDGPU] SDWA peephole: enable by default

Reviewers: vpykhtin, rampitec, arsenm

Subscribers: qcolombet, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye

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

llvm-svn: 299536

7 years agoFix WebAssembly after r299529.
Alexander Kornienko [Wed, 5 Apr 2017 11:50:43 +0000 (11:50 +0000)]
Fix WebAssembly after r299529.

llvm-svn: 299535

7 years agoAdd two Polly images
Tobias Grosser [Wed, 5 Apr 2017 11:50:31 +0000 (11:50 +0000)]
Add two Polly images

llvm-svn: 299534

7 years agoclang-format: [JS] fix whitespace around "of" operator.
Martin Probst [Wed, 5 Apr 2017 10:56:07 +0000 (10:56 +0000)]
clang-format: [JS] fix whitespace around "of" operator.

Summary:
Previously:
    import {of } from 'x';
    of (null);

Now:
    import {of} from 'x';
    of(null);

Reviewers: djasper

Subscribers: cfe-commits, klimek

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

llvm-svn: 299533

7 years ago[X86][SSE] Renamed combine to make it clear that it only handles the vector shift...
Simon Pilgrim [Wed, 5 Apr 2017 10:44:42 +0000 (10:44 +0000)]
[X86][SSE] Renamed combine to make it clear that it only handles the vector shift by immediate opcodes. NFCI

llvm-svn: 299532

7 years ago[AArch64] Crypto requires FP.
James Molloy [Wed, 5 Apr 2017 10:44:38 +0000 (10:44 +0000)]
[AArch64] Crypto requires FP.

So if FP is disabled, crypto should also be disabled.

llvm-svn: 299531

7 years ago[ELF] Make createThunks a class [NFC]
Peter Smith [Wed, 5 Apr 2017 10:30:09 +0000 (10:30 +0000)]
[ELF] Make createThunks a class [NFC]

For range extension thunks we will need to repeatedly call createThunks()
until no more thunks are created. We will need to retain the state of
Thunks that we have created so far to avoid recreating them on later
passes. This change does not change the functionality of createThunks().

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

llvm-svn: 299530

7 years agoAdd MCContext argument to MCAsmBackend::applyFixup for error reporting
Alex Bradbury [Wed, 5 Apr 2017 10:16:14 +0000 (10:16 +0000)]
Add MCContext argument to MCAsmBackend::applyFixup for error reporting

A number of backends (AArch64, MIPS, ARM) have been using
MCContext::reportError to report issues such as out-of-range fixup values in
their TgtAsmBackend. This is great, but because MCContext couldn't easily be
threaded through to the adjustFixupValue helper function from its usual
callsite (applyFixup), these backends ended up adding an MCContext* argument
and adding another call to applyFixup to processFixupValue. Adding an
MCContext parameter to applyFixup makes this unnecessary, and even better -
applyFixup can take a reference to MCContext rather than a potentially null
pointer.

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

llvm-svn: 299529

7 years ago[ELF] - Define __bss_start symbol.
George Rimar [Wed, 5 Apr 2017 10:03:25 +0000 (10:03 +0000)]
[ELF] - Define __bss_start symbol.

GNU linkers define __bss_start symbol.
Patch teaches LLD to do that. This is PR32051.

Below is part of standart ld.bfd script:

.data1          : { *(.data1) }
  _edata = .; PROVIDE (edata = .);
  . = .;
  __bss_start = .;
  .bss            :
  {
Currently LLD can emit up to 3 .bss* sections as one of testcase shows.
Implementation inserts this symbol before first .bss* output section.

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

llvm-svn: 299528

7 years agoFix a typo introduce in r299200.
Nitesh Jain [Wed, 5 Apr 2017 09:31:43 +0000 (09:31 +0000)]
Fix a typo introduce in r299200.

llvm-svn: 299527

7 years ago[LAA] Correctly return a half-open range in expandBounds
James Molloy [Wed, 5 Apr 2017 09:24:26 +0000 (09:24 +0000)]
[LAA] Correctly return a half-open range in expandBounds

This is a latent bug that's been hanging around for a while. For a loop-invariant
pointer, expandBounds would return the range {Ptr, Ptr}, but this was interpreted
as a half-open range, not a closed range. So we ended up planting incorrect
bounds checks. Even worse, they were tautological, so we ended up incorrectly
executing the optimized loop.

llvm-svn: 299526

7 years agoRevert r299506 "Simplify. NFC."
George Rimar [Wed, 5 Apr 2017 09:19:29 +0000 (09:19 +0000)]
Revert r299506 "Simplify. NFC."

It was not NFC unfortunaly,
one of changes decrements begin() iterator and
that is not allowed by MSVS.

llvm-svn: 299525

7 years ago[OpenCL] Enables passing sampler initializer to function argument
Egor Churaev [Wed, 5 Apr 2017 09:02:56 +0000 (09:02 +0000)]
[OpenCL] Enables passing sampler initializer to function argument

Reviewers: Anastasia, cfe-commits

Reviewed By: Anastasia

Subscribers: yaxunl, bader

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

llvm-svn: 299524

7 years ago[analyzer] alpha.core.Conversion - Fix false positive for 'U32 += S16;' expression...
Daniel Marjamaki [Wed, 5 Apr 2017 08:57:04 +0000 (08:57 +0000)]
[analyzer] alpha.core.Conversion - Fix false positive for 'U32 += S16;' expression, that is not unsafe

Summary:
The alpha.core.Conversion was too strict about compound assignments and could warn even though there is no problem.

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

llvm-svn: 299523

7 years agoDon't issue a warning if the shadowing declaration is in a class
Stephan Bergmann [Wed, 5 Apr 2017 08:36:58 +0000 (08:36 +0000)]
Don't issue a warning if the shadowing declaration is in a class

Follow-up to r299363 "Enhance -Wshadow to warn when shadowing typedefs or type
aliases".

Patch by Ahmed Asadi.

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

llvm-svn: 299522

7 years agoMake readAssert() to return an AssertCommand object.
Rui Ueyama [Wed, 5 Apr 2017 05:50:28 +0000 (05:50 +0000)]
Make readAssert() to return an AssertCommand object.

llvm-svn: 299521

7 years agoAdd a file comment.
Rui Ueyama [Wed, 5 Apr 2017 05:50:08 +0000 (05:50 +0000)]
Add a file comment.

llvm-svn: 299520

7 years agoSimplify. NFC.
Rui Ueyama [Wed, 5 Apr 2017 05:40:21 +0000 (05:40 +0000)]
Simplify. NFC.

Looks like we can use consume() in many more places.

llvm-svn: 299519

7 years agoInline leftShift and rightShift. NFC.
Rui Ueyama [Wed, 5 Apr 2017 05:40:01 +0000 (05:40 +0000)]
Inline leftShift and rightShift. NFC.

llvm-svn: 299518

7 years ago[coroutines] Add syntax coloring to examples in Coroutines.rst
Gor Nishanov [Wed, 5 Apr 2017 05:26:26 +0000 (05:26 +0000)]
[coroutines] Add syntax coloring to examples in Coroutines.rst

Subscribers: EricWF

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

llvm-svn: 299517

7 years agoDo not make ScriptParser class public.
Rui Ueyama [Wed, 5 Apr 2017 05:08:01 +0000 (05:08 +0000)]
Do not make ScriptParser class public.

This class is used only within this file, so it can be file-local.

llvm-svn: 299516

7 years agoMove the parser for the linker script to a separate file.
Rui Ueyama [Wed, 5 Apr 2017 05:07:39 +0000 (05:07 +0000)]
Move the parser for the linker script to a separate file.

LinkerScript.cpp contains both the linker script processor and the
linker script parser. I put both into a single file, but the file grown
too large, so it's time to put them into two different files.

llvm-svn: 299515

7 years agoRemove unused typedef.
Rui Ueyama [Wed, 5 Apr 2017 05:07:18 +0000 (05:07 +0000)]
Remove unused typedef.

llvm-svn: 299514

7 years agoDo not use public inheritance where it is not needed.
Rui Ueyama [Wed, 5 Apr 2017 05:06:58 +0000 (05:06 +0000)]
Do not use public inheritance where it is not needed.

ScriptParser is not a ScriptLexer, so this should be a private inheritance.

llvm-svn: 299513

7 years agoSimplify. NFC.
Rui Ueyama [Wed, 5 Apr 2017 05:06:37 +0000 (05:06 +0000)]
Simplify. NFC.

llvm-svn: 299512

7 years agoSimplify. NFC.
Rui Ueyama [Wed, 5 Apr 2017 05:06:17 +0000 (05:06 +0000)]
Simplify. NFC.

A for-loop is more boring than a find_if, but I think this is easier to read.

llvm-svn: 299511

7 years ago[coroutines] Add coro.end handling
Gor Nishanov [Wed, 5 Apr 2017 04:55:03 +0000 (04:55 +0000)]
[coroutines] Add coro.end handling

Summary:
For WinEH, We add a funclet bundle to a coro.end call, so that CoroSplit in LLVM can replace it with cleanup ret and cut the rest out.
For landing pad, we add a branch to resume block if coro.end returns true.

LLVM Part: https://reviews.llvm.org/D25445

Reviewers: majnemer

Reviewed By: majnemer

Subscribers: EricWF, cfe-commits, rsmith, mehdi_amini

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

llvm-svn: 299510

7 years agoFix memory leak found by asan.
Rui Ueyama [Wed, 5 Apr 2017 03:52:47 +0000 (03:52 +0000)]
Fix memory leak found by asan.

llvm-svn: 299509

7 years agoSimplify and update comment.
Rui Ueyama [Wed, 5 Apr 2017 03:52:28 +0000 (03:52 +0000)]
Simplify and update comment.

llvm-svn: 299508

7 years ago[ObjCArc] Do not dereference an invalidated iterator.
Akira Hatanaka [Wed, 5 Apr 2017 03:44:09 +0000 (03:44 +0000)]
[ObjCArc] Do not dereference an invalidated iterator.

Fix a bug in ARC contract pass where an iterator that pointed to a
deleted instruction was dereferenced.

It appears that tryToContractReleaseIntoStoreStrong was incorrectly
assuming that a call to objc_retain would not immediately follow a call
to objc_release.

rdar://problem/25276306

llvm-svn: 299507

7 years agoSimplify. NFC.
Rui Ueyama [Wed, 5 Apr 2017 03:21:01 +0000 (03:21 +0000)]
Simplify. NFC.

llvm-svn: 299506

7 years agoUse make to create linker script command objects.
Rui Ueyama [Wed, 5 Apr 2017 03:20:42 +0000 (03:20 +0000)]
Use make to create linker script command objects.

It simplifies variable types.

llvm-svn: 299505

7 years agoRemove default arguments because they don't improve readability.
Rui Ueyama [Wed, 5 Apr 2017 03:20:22 +0000 (03:20 +0000)]
Remove default arguments because they don't improve readability.

llvm-svn: 299504

7 years agoAdd parentheses around `&`.
Rui Ueyama [Wed, 5 Apr 2017 03:20:03 +0000 (03:20 +0000)]
Add parentheses around `&`.

llvm-svn: 299503

7 years agoUpdate comment.
Rui Ueyama [Wed, 5 Apr 2017 03:19:43 +0000 (03:19 +0000)]
Update comment.

llvm-svn: 299502

7 years agoUse empty() instead of size().
Rui Ueyama [Wed, 5 Apr 2017 03:19:24 +0000 (03:19 +0000)]
Use empty() instead of size().

`!V.size()` where V is a vector is equivalent to `V.empty()`.

llvm-svn: 299501

7 years agoSimplify. NFC.
Rui Ueyama [Wed, 5 Apr 2017 03:19:06 +0000 (03:19 +0000)]
Simplify. NFC.

llvm-svn: 299500

7 years agoMake variable names consistent. NFC.
Rui Ueyama [Wed, 5 Apr 2017 03:18:46 +0000 (03:18 +0000)]
Make variable names consistent. NFC.

llvm-svn: 299499

7 years agoReturn a result from computeInputSections instead of mutating its argument.
Rui Ueyama [Wed, 5 Apr 2017 02:05:48 +0000 (02:05 +0000)]
Return a result from computeInputSections instead of mutating its argument.

This should improve readability.

llvm-svn: 299498

7 years ago[RuntimeDyld] Remove an unused static member left over from r299449.
Lang Hames [Wed, 5 Apr 2017 01:43:59 +0000 (01:43 +0000)]
[RuntimeDyld] Remove an unused static member left over from r299449.

llvm-svn: 299497

7 years ago[COFF] support /ERRORLIMIT option
Bob Haarman [Wed, 5 Apr 2017 00:43:54 +0000 (00:43 +0000)]
[COFF] support /ERRORLIMIT option

Summary:
This adds support for reporting multiple errors in a single invocation of lld-link. The limit defaults to 20 and can be changed with the /ERRORLIMIT command line parameter, or set to unlimited by passing a value of 0.

This is a new attempt after r295507, which was reverted because opening files raced with exiting early, causing the test to be flaky. This version avoids the race by exiting before calling enqueuePath.

Reviewers: pcc, ruiu

Reviewed By: ruiu

Subscribers: llvm-commits, dblaikie

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

llvm-svn: 299496

7 years agoRemove `=` from a lambda that doesn't capture any variable.
Rui Ueyama [Wed, 5 Apr 2017 00:43:45 +0000 (00:43 +0000)]
Remove `=` from a lambda that doesn't capture any variable.

llvm-svn: 299495

7 years agoInline small functions that are used only once as lambdas.
Rui Ueyama [Wed, 5 Apr 2017 00:43:25 +0000 (00:43 +0000)]
Inline small functions that are used only once as lambdas.

llvm-svn: 299494

7 years agoAdd newlines.
Rui Ueyama [Wed, 5 Apr 2017 00:43:05 +0000 (00:43 +0000)]
Add newlines.

llvm-svn: 299493

7 years agoMake dummy variable's scope smaller.
Rui Ueyama [Wed, 5 Apr 2017 00:42:45 +0000 (00:42 +0000)]
Make dummy variable's scope smaller.

llvm-svn: 299492

7 years agoThinLTOBitcodeWriter: handle aliases first in filterModule
Bob Haarman [Wed, 5 Apr 2017 00:42:07 +0000 (00:42 +0000)]
ThinLTOBitcodeWriter: handle aliases first in filterModule

Summary: This change fixes a "local linkage requires default visibility" assert when attempting to build LLVM with ThinLTO on Windows.

Reviewers: pcc, tejohnson, mehdi_amini

Reviewed By: pcc

Subscribers: llvm-commits, Prazek

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

llvm-svn: 299491

7 years ago[X86] Relax assert in broadcast-of-subvector lowering.
Ahmed Bougacha [Wed, 5 Apr 2017 00:14:39 +0000 (00:14 +0000)]
[X86] Relax assert in broadcast-of-subvector lowering.

Before r294774, there was a problem when lowering broadcasts to use
128-bit subvectors.

When we looked through a bitcast to find the broadcast input, we'd keep
using the original type, so you'd end up with things like:
  (v8f32 (broadcast
    (v4f32 (extract_subvector
      (v8i32 V),
      ...))
    ))

r294774 fixed it to always emit subvectors with the scalar type of the
original source.

It also introduced some asserts, to check that we use scalars with
the same size, and vectors with the same number of elements.

The scalar size equality is checked earlier when looking through bitcasts,
and is a useful assert.

However, the number of elements don't have to be identical: we're always
going to extract a 128-bit subvector, and we can have different size
inputs if we looked through a concat_vector to find a 256-bit source.

Relax the overzealous assert.

Replace it with a check of the original source vector being 256 or 512
bits.  If it's 128 bits, we can't extract_subvector from it.

Fixes PR32371.

llvm-svn: 299490

7 years agoReverting r299374 & r299402 due to testsuite failure.
Jim Ingham [Wed, 5 Apr 2017 00:08:21 +0000 (00:08 +0000)]
Reverting r299374 & r299402 due to testsuite failure.

This caused a failure in the test case:

  functionalities/breakpoint/objc/TestObjCBreakpoints.py

When we are parsing up names we stick interesting parts of the names
in various buckets, one of which is the ObjC selector bucket.  The new
C++ name parser must be interfering with this process somehow.

<rdar://problem/31439305>

llvm-svn: 299489

7 years agoAnother attempt to fix the sphinx warning from r299470
Adam Nemet [Tue, 4 Apr 2017 23:46:34 +0000 (23:46 +0000)]
Another attempt to fix the sphinx warning from r299470

llvm-svn: 299488

7 years agoAllow targets to opt-in to codegen in SCC order
Matt Arsenault [Tue, 4 Apr 2017 23:44:46 +0000 (23:44 +0000)]
Allow targets to opt-in to codegen in SCC order

Decouple this setting from EnableIRPA.

To support function calls on AMDGPU, it is necessary to
report the global register usage throughout the kernel's
call graph, so callees need to be handled first.

llvm-svn: 299487

7 years agoRe-apply MemorySSA: Add support for caching clobbering access in
Daniel Berlin [Tue, 4 Apr 2017 23:43:10 +0000 (23:43 +0000)]
Re-apply MemorySSA: Add support for caching clobbering access in
stores with some fixes.

Summary:
This enables us to cache the clobbering access for stores, despite the
fact that we can't rewrite the use-def chains themselves.

Early testing shows that, after this change, for larger testcases, it
will be a significant net positive (memory and time) to remove the
walker caching.

Reviewers: george.burgess.iv, davide

Subscribers: Prazek, llvm-commits

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

llvm-svn: 299486

7 years agoRevert "MemorySSA: Add support for caching clobbering access in stores"
Daniel Berlin [Tue, 4 Apr 2017 23:43:04 +0000 (23:43 +0000)]
Revert "MemorySSA: Add support for caching clobbering access in stores"

This reverts revision r299322.

llvm-svn: 299485

7 years ago[MC] Set defaults based on section names and support name suffixes
Petr Hosek [Tue, 4 Apr 2017 23:32:45 +0000 (23:32 +0000)]
[MC] Set defaults based on section names and support name suffixes

Set correct default flags and section type based on its name for .text,
.data, .bss, .init_array, .fini_array, .preinit_array, .tdata, and .tbss
and support section name suffixes for .data.*, .rodata.*, .text.*,
.bss.*, .tdata.* and .tbss.* which matches the behavior of GAS.

Fixes PR31888.

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

llvm-svn: 299484