platform/upstream/llvm.git
8 years ago[Hexagon] Add option to bisect spill slot optimization
Krzysztof Parzyszek [Wed, 27 Jul 2016 20:58:43 +0000 (20:58 +0000)]
[Hexagon] Add option to bisect spill slot optimization

llvm-svn: 276917

8 years ago[Hexagon] Do not optimize volatile stack spill slots
Krzysztof Parzyszek [Wed, 27 Jul 2016 20:50:42 +0000 (20:50 +0000)]
[Hexagon] Do not optimize volatile stack spill slots

llvm-svn: 276916

8 years agoAdd target triple in test
Nirav Dave [Wed, 27 Jul 2016 20:48:39 +0000 (20:48 +0000)]
Add target triple in test

llvm-svn: 276915

8 years agoFixed "void SBWatchpoint::SetEnabled (bool enabled)" to work properly and added a...
Greg Clayton [Wed, 27 Jul 2016 20:47:49 +0000 (20:47 +0000)]
Fixed "void SBWatchpoint::SetEnabled (bool enabled)" to work properly and added a test for it.

https://llvm.org/bugs/show_bug.cgi?id=28729
<rdar://problem/27575225>

llvm-svn: 276914

8 years agobuild_llvm_package.bat: try tests three times
Hans Wennborg [Wed, 27 Jul 2016 20:38:01 +0000 (20:38 +0000)]
build_llvm_package.bat: try tests three times

Sometimes they're flaky on Windows, and starting the whole thing
over is painful.

llvm-svn: 276913

8 years agotest commit
Matt Masten [Wed, 27 Jul 2016 20:23:32 +0000 (20:23 +0000)]
test commit

llvm-svn: 276912

8 years agotest commit
Matt Masten [Wed, 27 Jul 2016 20:22:21 +0000 (20:22 +0000)]
test commit

llvm-svn: 276911

8 years agoCodegen: IfConversion: Factor out a function to count dup instrs.
Kyle Butt [Wed, 27 Jul 2016 20:19:33 +0000 (20:19 +0000)]
Codegen: IfConversion: Factor out a function to count dup instrs.

Factor out countDuplicatedInstructions to Count duplicated instructions at the
beginning and end of a diamond pattern. This is in prep for adding support for
diamonds that need to be tail-merged.

llvm-svn: 276910

8 years agoCodegen: IfConversion: add const qualifier. NFC
Kyle Butt [Wed, 27 Jul 2016 20:19:31 +0000 (20:19 +0000)]
Codegen: IfConversion: add const qualifier. NFC

Add a const qualifier to ReverseBranchCondition.

llvm-svn: 276909

8 years agoRevert "[llvm-cov] Minor aesthetic improvements for html reports"
Vedant Kumar [Wed, 27 Jul 2016 19:59:44 +0000 (19:59 +0000)]
Revert "[llvm-cov] Minor aesthetic improvements for html reports"

This reverts commit r276906. It breaks tests.

llvm-svn: 276908

8 years agoAdd flags to toggle preservation of assembly comments
Nirav Dave [Wed, 27 Jul 2016 19:57:40 +0000 (19:57 +0000)]
Add flags to toggle preservation of assembly comments

Summary: Add -fpreserve-as-comments and -fno-preserve-as-comments.

Reviewers: echristo, rnk

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 276907

8 years ago[llvm-cov] Minor aesthetic improvements for html reports
Vedant Kumar [Wed, 27 Jul 2016 19:51:17 +0000 (19:51 +0000)]
[llvm-cov] Minor aesthetic improvements for html reports

This fixes the highlighting for lines without any coverage segments. I
don't have a neat way of testing this yet, but am working on it.

llvm-svn: 276906

8 years agoInitialize PreserveAsmComments in MCTargetOptions
Nirav Dave [Wed, 27 Jul 2016 19:19:13 +0000 (19:19 +0000)]
Initialize PreserveAsmComments in MCTargetOptions

llvm-svn: 276905

8 years agoAdjust coercion of aggregates on RenderScript
Pirama Arumuga Nainar [Wed, 27 Jul 2016 19:01:51 +0000 (19:01 +0000)]
Adjust coercion of aggregates on RenderScript

Summary:
In RenderScript, the size of the argument or return value emitted in the
IR is expected to be the same as the size of corresponding qualified
type.  For ARM and AArch64, the coercion performed by Clang can
change the parameter or return value to a type whose size is different
(usually larger) than the original aggregate type.  Specifically, this
can happen in the following cases:
    - Aggregate parameters of size <= 64 bytes and return values smaller
      than 4 bytes on ARM
    - Aggregate parameters and return values smaller than bytes on
      AArch64

This patch coerces the cases above to an integer array that is the same
size and alignment as the original aggregate.  A new field is added to
TargetInfo to detect a RenderScript target and limit this coercion just
to that case.

Tests added to test/CodeGen/renderscript.c

Reviewers: rsmith

Subscribers: aemerson, srhines, llvm-commits

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

llvm-svn: 276904

8 years ago[Hexagon] Handle extended versions of restore routines
Krzysztof Parzyszek [Wed, 27 Jul 2016 18:47:25 +0000 (18:47 +0000)]
[Hexagon] Handle extended versions of restore routines

llvm-svn: 276903

8 years agoCodeGen: Make iterator-to-pointer conversion explicit, NFC
Duncan P. N. Exon Smith [Wed, 27 Jul 2016 18:45:18 +0000 (18:45 +0000)]
CodeGen: Make iterator-to-pointer conversion explicit, NFC

Remove the implicit conversion from MachineInstrBundleIterator to
MachineInstr*, leaving behind an explicit conversion.

I *think* this is the last ilist_iterator-related implicit conversion to
ilist_node subclass.  If I'm right, I can finally dig in and fix the UB
in ilist that these conversions were relying on.

Note that the implicit users of this conversion have already been
removed.  If you have out-of-tree code that doesn't update, you might be
able to buy some time by temporarily reverting this commit.

llvm-svn: 276902

8 years agoFix the build for libstdc++ 4.7
David Majnemer [Wed, 27 Jul 2016 18:25:12 +0000 (18:25 +0000)]
Fix the build for libstdc++ 4.7

libstdc++ 4.7 doesn't have emplace.  Use std::map::insert instead.

llvm-svn: 276901

8 years ago[Sema] Teach getCurrentThisType to reconize lambda in in-class initializer
Erik Pilkington [Wed, 27 Jul 2016 18:25:10 +0000 (18:25 +0000)]
[Sema] Teach getCurrentThisType to reconize lambda in in-class initializer

Fixes PR27994, a crash on valid.

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

llvm-svn: 276900

8 years agoXCore: Avoid implicit iterator conversions, NFC
Duncan P. N. Exon Smith [Wed, 27 Jul 2016 18:14:38 +0000 (18:14 +0000)]
XCore: Avoid implicit iterator conversions, NFC

Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr*, mainly by preferring MachineInstr& over MachineInstr*.

llvm-svn: 276899

8 years agoRevert EH-specific checks in BranchFolding that were causing blow ups in compile...
Andrew Kaylor [Wed, 27 Jul 2016 17:55:33 +0000 (17:55 +0000)]
Revert EH-specific checks in BranchFolding that were causing blow ups in compile time.

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

llvm-svn: 276898

8 years agoGlobalISel: support zero-sized allocas
Tim Northover [Wed, 27 Jul 2016 17:47:54 +0000 (17:47 +0000)]
GlobalISel: support zero-sized allocas

All allocas must be at least 1 byte at the MachineIR level so we allocate just
one byte.

llvm-svn: 276897

8 years agoUpdate Clang Parser test error message to match new parser errors
Nirav Dave [Wed, 27 Jul 2016 17:39:47 +0000 (17:39 +0000)]
Update Clang Parser test error message to match new parser errors

llvm-svn: 276896

8 years ago[MC][X86] Fix Intel Operand assembly parsing for .set ids
Nirav Dave [Wed, 27 Jul 2016 17:39:41 +0000 (17:39 +0000)]
[MC][X86] Fix Intel Operand assembly parsing for .set ids

Fix intel syntax special case identifier operands that refer to a constant
(e.g. .set <ID> n) to be interpreted as immediate not memory in parsing.

Reviewers: rnk

Subscribers: llvm-commits

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

llvm-svn: 276895

8 years ago[DSE] Fix bug in updating MadeChange flag
Jun Bum Lim [Wed, 27 Jul 2016 17:25:20 +0000 (17:25 +0000)]
[DSE] Fix bug in updating MadeChange flag

Summary: The MadeChange flag should be ORed to keep the previous result.

Reviewers: mcrosier

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 276894

8 years agoUsersManual.rst: update clang-cl option list
Hans Wennborg [Wed, 27 Jul 2016 16:56:03 +0000 (16:56 +0000)]
UsersManual.rst: update clang-cl option list

llvm-svn: 276891

8 years agoFix unnecessary default switch warning
Simon Pilgrim [Wed, 27 Jul 2016 16:41:56 +0000 (16:41 +0000)]
Fix unnecessary default switch warning

llvm-svn: 276889

8 years agoUpdate cxx_dr_Status after 3.9 branch
Hans Wennborg [Wed, 27 Jul 2016 16:39:45 +0000 (16:39 +0000)]
Update cxx_dr_Status after 3.9 branch

llvm-svn: 276887

8 years ago[Hexagon] Add saved callee-saved registers as live-in in non-wrapped blocks
Krzysztof Parzyszek [Wed, 27 Jul 2016 16:26:39 +0000 (16:26 +0000)]
[Hexagon] Add saved callee-saved registers as live-in in non-wrapped blocks

The callee-saved registers that are saved in a function are not pristine,
and so they can be defined and used. In case of shrink-wrapping though,
there are blocks that are outside of the save/restore range, and in those
blocks the saved registers must be treated as pristine. To avoid any uses
of these registers, add them as live-in in all those blocks.
This was already done for blocks reaching function exits after restore,
add code that does the same for blocks reached from the function entry
before save.

llvm-svn: 276886

8 years ago[compiler-rt] Fix warnings in interception code
Etienne Bergeron [Wed, 27 Jul 2016 16:16:54 +0000 (16:16 +0000)]
[compiler-rt] Fix warnings in interception code

Summary:
This patch is re-introducing the code to fix the
dynamic hooking on windows and to fix a compiler
warning on Apple.

Related patches:

* https://reviews.llvm.org/D22641
* https://reviews.llvm.org/D22610
* https://reviews.llvm.org/rL276311
* https://reviews.llvm.org/rL276490

Both architecture are using different techniques to
hook on library functions (memchr, strcpy,...).

On Apple, the function is not dynamically hooked and
the symbol always points to a valid function
(i.e. can't be null). The REAL macro returns the
symbol.

On windows, the function is dynamically patch and the
REAL(...) function may or may not be null. It depend
on whether or not the function was hooked correctly.
Also, on windows memcpy and memmove are the same.

```
#if !defined(__APPLE__)
[...]
# define REAL(x) __interception::PTR_TO_REAL(x)
# define ASSIGN_REAL(dst, src) REAL(dst) = REAL(src)
[...]
#else  // __APPLE__
[...]
# define REAL(x) x
# define ASSIGN_REAL(x, y)
[...]
#endif  // __APPLE__

Reviewers: rnk

Subscribers: kcc, hans, kubabrecka, llvm-commits, bruno, chrisha

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

llvm-svn: 276885

8 years agoMake bugpoint transform conditional jumps into unconditional jumps.
Daniel Berlin [Wed, 27 Jul 2016 16:13:25 +0000 (16:13 +0000)]
Make bugpoint transform conditional jumps into unconditional jumps.

Summary:
Add a pass to bugpoint to make it transform conditional jumps into unconditional jumps.

Often, bugpoint generates output that has large numbers of br undef jumps, where
one side is dead.

What is happening is two fold:
1. It never tries to just pick a direction for the jump, and just see what happens
<<<< this patch

2. SimplifyCFG no longer is a good match for bugpoint's usecase. It
does too much.
Even things in SimplifyCFG, like removeUnreachableBlocks, go to great
lengths to transform undefined behavior into  blocks and kill large
parts of the CFG.  This is great for regular code, not so much for
bugpoint, which often generates UB on purpose (store undef is a great
example).
<<<< a followup patch that is coming, to move simplifycfg into a
separate reduction pass, and move the existing reduceCrashingBlocks
pass to use simpleSimplifyCFG.

Both of these patches significantly reduce the size and complexity of bugpoint
generated testcases.

Reviewers: chandlerc, majnemer

Subscribers: llvm-commits

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

llvm-svn: 276884

8 years agoRemove MCAsmInfo.h include from TargetOptions.h
Reid Kleckner [Wed, 27 Jul 2016 16:03:57 +0000 (16:03 +0000)]
Remove MCAsmInfo.h include from TargetOptions.h

TargetOptions wants the ExceptionHandling enum. Move that to
MCTargetOptions.h to avoid transitively including Dwarf.h everywhere in
clang. Now you can add a DWARF tag without a full rebuild of clang
semantic analysis.

llvm-svn: 276883

8 years ago[X86][SSE] Updated test so that both are applying the post-multiply
Simon Pilgrim [Wed, 27 Jul 2016 15:30:20 +0000 (15:30 +0000)]
[X86][SSE] Updated test so that both are applying the post-multiply

This is to ensure that there are no diffs other than due to buildvector/legalization

llvm-svn: 276882

8 years ago[compiler-rt] Activate interception unittests
Etienne Bergeron [Wed, 27 Jul 2016 15:29:49 +0000 (15:29 +0000)]
[compiler-rt] Activate interception unittests

Summary:
The unittests recently added were not running when executing 'check-all'.
Tests are stable on every archictetures and we can now turn them on.

Reviewers: rnk

Subscribers: llvm-commits, wang0109, chrisha

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

llvm-svn: 276881

8 years agoTypo fix. NFC
Diana Picus [Wed, 27 Jul 2016 15:13:25 +0000 (15:13 +0000)]
Typo fix. NFC

llvm-svn: 276879

8 years agoImplement filtering for code completion of identifiers.
Vassil Vassilev [Wed, 27 Jul 2016 14:56:59 +0000 (14:56 +0000)]
Implement filtering for code completion of identifiers.

Patch by Cristina Cristescu and Axel Naumann!

Agreed on post commit review (D17820).

llvm-svn: 276878

8 years ago[ARM] Check that the thumb COFF segment flag gets set on thumb windows
Renato Golin [Wed, 27 Jul 2016 14:37:18 +0000 (14:37 +0000)]
[ARM] Check that the thumb COFF segment flag gets set on thumb windows

Patch by Martin Storsjö.

llvm-svn: 276877

8 years agotsan: don't deliver signals when they are blocked
Dmitry Vyukov [Wed, 27 Jul 2016 14:34:21 +0000 (14:34 +0000)]
tsan: don't deliver signals when they are blocked

When we delay signals we can deliver them when the signal
is blocked. This can be surprising to the program.
Intercept signal blocking functions merely to process
pending signals. As the result, at worst we will delay
a signal till return from the signal blocking function.

llvm-svn: 276876

8 years ago[GlobalISel] Introduce an instruction selector.
Ahmed Bougacha [Wed, 27 Jul 2016 14:31:55 +0000 (14:31 +0000)]
[GlobalISel] Introduce an instruction selector.

And implement it for AArch64, supporting x/w ADD/OR.

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

llvm-svn: 276875

8 years ago[AArch64] Mark various *Info classes as 'final'. NFC.
Ahmed Bougacha [Wed, 27 Jul 2016 14:31:46 +0000 (14:31 +0000)]
[AArch64] Mark various *Info classes as 'final'. NFC.

llvm-svn: 276874

8 years ago[AArch64] Define AArch64RegisterInfo as a class, not a struct. NFC.
Ahmed Bougacha [Wed, 27 Jul 2016 14:31:40 +0000 (14:31 +0000)]
[AArch64] Define AArch64RegisterInfo as a class, not a struct. NFC.

llvm-svn: 276873

8 years agoGlobalISel: remove variable_ops from output list.
Tim Northover [Wed, 27 Jul 2016 14:30:49 +0000 (14:30 +0000)]
GlobalISel: remove variable_ops from output list.

The instance in the input operand list allows both inputs and outputs,
but the one in (outs) is not treated specially which leads to the
MachineVerifier invoking UB (looking at an invalid MCInstrDesc field).

No functional change except in UBSan builds (maybe, who knows!), where
it fixes the legalize-add.mir test.

llvm-svn: 276872

8 years agofix typo in clang-rename and clang-tidy docs
Kirill Bobyrev [Wed, 27 Jul 2016 14:26:03 +0000 (14:26 +0000)]
fix typo in clang-rename and clang-tidy docs

llvm-svn: 276871

8 years agochange Vim key binding for include-fixer and clang-rename
Kirill Bobyrev [Wed, 27 Jul 2016 14:23:47 +0000 (14:23 +0000)]
change Vim key binding for include-fixer and clang-rename

Change Vim key binding for include-fixer (`,cf` -> `<leader>cf`) and
clang-rename (`,cr` -> `<leader>cr`) to use `<leader>` instead of `,` like
cool Vim people (tm) do.

Reviewers: ioeric

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

llvm-svn: 276870

8 years ago[ARM] Pass thumb as architecture to the underlying tools, when targeting windows
Renato Golin [Wed, 27 Jul 2016 14:12:20 +0000 (14:12 +0000)]
[ARM] Pass thumb as architecture to the underlying tools, when targeting windows

This makes sure that the thumb section flag gets set by the assembler.

Patch by Martin Storsjö.

llvm-svn: 276869

8 years agoMake toPhdrFlags a member function. NFC.
Rafael Espindola [Wed, 27 Jul 2016 14:10:56 +0000 (14:10 +0000)]
Make toPhdrFlags a member function. NFC.

llvm-svn: 276868

8 years ago[mips][ias] Check '$rs = $rd' constraints when both registers are in AsmText.
Daniel Sanders [Wed, 27 Jul 2016 13:49:44 +0000 (13:49 +0000)]
[mips][ias] Check '$rs = $rd' constraints when both registers are in AsmText.

Summary:
This is one possible solution to the problem of ignoring constraints that Simon
raised in D21473 but it's a bit of a hack.

The integrated assembler currently ignores violations of the tied register
constraints when the operands involved in a tie are both present in the AsmText.
For example, 'dati $rs, $rt, $imm' with the '$rs = $rt' will silently replace
$rt with $rs. So 'dati $2, $3, 1' is processed as if the user provided
'dati $2, $2, 1' without any diagnostic being emitted.

This is difficult to solve properly because there are multiple parts of the
matcher that are silently forcing these constraints to be met. Tied operands are
rendered to instructions by cloning previously rendered operands but this is
unnecessary because the matcher was already instructed to render the operand it
would have cloned. This is also unnecessary because earlier code has already
replaced the MCParsedOperand with the one it was tied to (so the parsed input
is matched as if it were 'dati <RegIdx 2>, <RegIdx 2>, <Imm 1>'). As a result,
it looks like fixing this properly amounts to a rewrite of the tied operand
handling which affects all targets.

This patch however, merely inserts a checking hook just before the
substitution of MCParsedOperands and the Mips target overrides it. It's not
possible to accurately check the registers are the same this early (because
numeric registers haven't been bound to a register class yet) so it cheats a
bit and checks that the tokens that produced the operand are lexically
identical. This works because tied registers need to have the same register
class but it does have a flaw. It will reject 'dati $4, $a0, 1' for violating
the constraint even though $a0 ends up as the same register as $4.

Reviewers: sdardis

Subscribers: dsanders, llvm-commits, sdardis

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

llvm-svn: 276867

8 years ago[clang-rename] skip CXXConversionDecl while searching for NamedDecl
Kirill Bobyrev [Wed, 27 Jul 2016 13:37:22 +0000 (13:37 +0000)]
[clang-rename] skip CXXConversionDecl while searching for NamedDecl

llvm-svn: 276866

8 years ago[PowerPC] Fix typo in PPCHazardRecognizers.cpp
Nemanja Ivanovic [Wed, 27 Jul 2016 13:24:54 +0000 (13:24 +0000)]
[PowerPC] Fix typo in PPCHazardRecognizers.cpp

Fixes PR28731.

llvm-svn: 276865

8 years agoPowerPC: Avoid implicit iterator conversions, NFC
Duncan P. N. Exon Smith [Wed, 27 Jul 2016 13:24:16 +0000 (13:24 +0000)]
PowerPC: Avoid implicit iterator conversions, NFC

Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr* in the PowerPC backend, mainly by preferring MachineInstr&
over MachineInstr* when a pointer isn't nullable and using range-based
for loops.

There was one piece of questionable code in PPCInstrInfo::AnalyzeBranch,
where a condition checked a pointer converted from an iterator for
nullptr.  Since this case is impossible (moreover, the code above
guarantees that the iterator is valid), I removed the check when I
changed the pointer to a reference.

Despite that case, there should be no functionality change here.

llvm-svn: 276864

8 years agoGPGPU: Add basic support for kernel launches
Tobias Grosser [Wed, 27 Jul 2016 13:20:16 +0000 (13:20 +0000)]
GPGPU: Add basic support for kernel launches

llvm-svn: 276863

8 years ago[include-fixer] Update document.
Haojian Wu [Wed, 27 Jul 2016 13:17:16 +0000 (13:17 +0000)]
[include-fixer] Update document.

llvm-svn: 276862

8 years ago[clang-tidy] Add cppcoreguidelines-slicing entry to list.rst.
Haojian Wu [Wed, 27 Jul 2016 13:11:50 +0000 (13:11 +0000)]
[clang-tidy] Add cppcoreguidelines-slicing entry to list.rst.

llvm-svn: 276861

8 years ago[test/gold] Add gold test subdirectory tests needing v1.12 (or higher)
Teresa Johnson [Wed, 27 Jul 2016 12:59:51 +0000 (12:59 +0000)]
[test/gold] Add gold test subdirectory tests needing v1.12 (or higher)

Summary:
As discussed in the review for D22677, added a subdirectory to
enable tests that require at least version 1.12 of gold.

Add an initial test requiring this version.

Reviewers: davidxl, mehdi_amini

Subscribers: llvm-commits, mehdi_amini

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

llvm-svn: 276860

8 years ago[ARM] Set a non-conflicting comment character for assembly in MSVC mode
Renato Golin [Wed, 27 Jul 2016 12:31:58 +0000 (12:31 +0000)]
[ARM] Set a non-conflicting comment character for assembly in MSVC mode

Currently, for ARMCOFFMCAsmInfoMicrosoft, no comment character is set, thus the
idefault, '#', is used.

The hash character doesn't work as comment character in ARM assembly, since '#'
is used for immediate values.

The comment character is set to ';', which is the comment character used by MS
armasm.exe. (The microsoft armasm.exe uses a different directive syntax than
what LLVM currently supports though, similar to ARM's armasm.)

This allows inline assembly with immediate constants to be built (and brings the
assembly output from clang -S closer to being possible to assemble).

A test is added that verifies that ';' is correctly interpreted as comments in
this mode, and verifies that assembling code that includes literal constants
with a '#' works.

Patch by Martin Storsjö.

llvm-svn: 276859

8 years ago[ARM] Adds test for immediate encoding
Renato Golin [Wed, 27 Jul 2016 12:15:26 +0000 (12:15 +0000)]
[ARM] Adds test for immediate encoding

The encoding of expressions as immediates wasn't correct, and was reported in
PR23000. However, we have done some refactoring on how immediates are handled
and now it seems the problem is fixed. This is a test just to make sure it
won't regress again.

llvm-svn: 276858

8 years agoRevert r276856 "Adjust Registry interface to not require plugins to export a registry"
John Brawn [Wed, 27 Jul 2016 11:41:18 +0000 (11:41 +0000)]
Revert r276856 "Adjust Registry interface to not require plugins to export a registry"

This is causing a huge pile of buildbot failures.

llvm-svn: 276857

8 years agoAdjust Registry interface to not require plugins to export a registry
John Brawn [Wed, 27 Jul 2016 11:18:38 +0000 (11:18 +0000)]
Adjust Registry interface to not require plugins to export a registry

Currently the Registry class contains the vestiges of a previous attempt to
allow plugins to be used on Windows without using BUILD_SHARED_LIBS, where a
plugin would have its own copy of a registry and export it to be imported by
the tool that's loading the plugin. This only works if the plugin is entirely
self-contained with the only interface between the plugin and tool being the
registry, and in particular this conflicts with how IR pass plugins work.

This patch changes things so that instead the add_node function of the registry
is exported by the tool and then imported by the plugin, which solves this
problem and also means that instead of every plugin having to export every
registry they use instead LLVM only has to export the add_node functions. This
allows plugins that use a registry to work on Windows if
LLVM_EXPORT_SYMBOLS_FOR_PLUGINS is used.

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

llvm-svn: 276856

8 years ago[DAGCombiner] Use APInt directly to detect out of range shift constants
Simon Pilgrim [Wed, 27 Jul 2016 10:30:55 +0000 (10:30 +0000)]
[DAGCombiner] Use APInt directly to detect out of range shift constants

Using getZExtValue() will assert if the value doesn't fit into uint64_t - SHL was already doing this, I've just updated ASHR/LSHR to match

As mentioned on D22726

llvm-svn: 276855

8 years agoclang-format: Fix incorrect detection of QT-signals access specifier.
Daniel Jasper [Wed, 27 Jul 2016 10:13:24 +0000 (10:13 +0000)]
clang-format: Fix incorrect detection of QT-signals access specifier.

Before:
  void f() {
  label:
    signals
    .baz();
  }

After:
  void f() {
  label:
    signals.baz();
  }

llvm-svn: 276854

8 years ago[clang-include-fixer] Added Emacs integration for clang-include-fixer.
Benjamin Kramer [Wed, 27 Jul 2016 10:11:06 +0000 (10:11 +0000)]
[clang-include-fixer] Added Emacs integration for clang-include-fixer.

Patch by Jens Massberg! Thanks a lot.

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

llvm-svn: 276853

8 years agoRemoved unusued template function declaration that has no definition - fixes MSVC...
Simon Pilgrim [Wed, 27 Jul 2016 10:11:05 +0000 (10:11 +0000)]
Removed unusued template function declaration that has no definition - fixes MSVC warning.

llvm-svn: 276852

8 years ago[ARM] Pass -mimplcit-it= to integrated assembler
Oliver Stannard [Wed, 27 Jul 2016 08:54:13 +0000 (08:54 +0000)]
[ARM] Pass -mimplcit-it= to integrated assembler

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

llvm-svn: 276851

8 years ago[mips] Update the link to the MIPS documentation in CompilerWriterInfo.rst.
Daniel Sanders [Wed, 27 Jul 2016 08:52:15 +0000 (08:52 +0000)]
[mips] Update the link to the MIPS documentation in CompilerWriterInfo.rst.

llvm-svn: 276850

8 years ago[MBP] Added some more debug messages and some clean ups /NFC
Sjoerd Meijer [Wed, 27 Jul 2016 08:49:23 +0000 (08:49 +0000)]
[MBP] Added some more debug messages and some clean ups /NFC

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

llvm-svn: 276849

8 years agoSupport setting default value for -rtlib at build time
Jonas Hahnfeld [Wed, 27 Jul 2016 08:15:54 +0000 (08:15 +0000)]
Support setting default value for -rtlib at build time

This patch introduces a new cmake variable: CLANG_DEFAULT_RTLIB, thru
which we can specify a default value for -rtlib (libgcc or
compiler-rt) at build time, just like how we set the default C++
stdlib thru CLANG_DEFAULT_CXX_STDLIB.

With these two options, we can configure clang to build binaries on
Linux that have no runtime dependence on any gcc libs (libstdc++ or
libgcc_s).

Patch by Lei Zhang!

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

llvm-svn: 276848

8 years agoRevert "Default COMPILER_RT_BUILD_XRAY=ON"
Dean Michael Berris [Wed, 27 Jul 2016 08:10:04 +0000 (08:10 +0000)]
Revert "Default COMPILER_RT_BUILD_XRAY=ON"

This reverts commit 23240d8de38c79220a888f645a1f4b686bfb87c6.

Broke the build because the build bots haven't gotten the latest config
from zorg yet.

llvm-svn: 276847

8 years agoRefactor - CodeExtractor : Move check for valid block to static utility
Sean Silva [Wed, 27 Jul 2016 08:02:46 +0000 (08:02 +0000)]
Refactor - CodeExtractor : Move check for valid block to static utility

This lets you actually check to see if a block is valid before trying to
extract.

Patch by River Riddle!

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

llvm-svn: 276846

8 years agoDefault COMPILER_RT_BUILD_XRAY=ON
Dean Michael Berris [Wed, 27 Jul 2016 07:27:35 +0000 (07:27 +0000)]
Default COMPILER_RT_BUILD_XRAY=ON

llvm-svn: 276845

8 years ago[GVNHoist] Fix typo in assert.
George Burgess IV [Wed, 27 Jul 2016 06:34:53 +0000 (06:34 +0000)]
[GVNHoist] Fix typo in assert.

This fixes PR28730.

llvm-svn: 276844

8 years agoFix Coroutines doc example
Mehdi Amini [Wed, 27 Jul 2016 06:03:47 +0000 (06:03 +0000)]
Fix Coroutines doc example

SSA was broken.

llvm-svn: 276843

8 years ago[MC] Add command-line option to choose the max nest level in asm macros.
Davide Italiano [Wed, 27 Jul 2016 05:51:56 +0000 (05:51 +0000)]
[MC] Add command-line option to choose the max nest level in asm macros.

Submitted by: t83wCSLq
Differential Revision:  https://reviews.llvm.org/D22313

llvm-svn: 276842

8 years agoGVN-hoist: improve code generation for recursive GEPs
Sebastian Pop [Wed, 27 Jul 2016 05:48:12 +0000 (05:48 +0000)]
GVN-hoist: improve code generation for recursive GEPs

When loading or storing in a field of a struct like "a.b.c", GVN is able to
detect the equivalent expressions, and GVN-hoist would fail in the code
generation.  This is because the GEPs are not hoisted as scalar operations to
avoid moving the GEPs too far from their ld/st instruction when the ld/st is not
movable.  So we end up having to generate code for the GEP of a ld/st when we
move the ld/st.  In the case of a GEP referring to another GEP as in "a.b.c" we
need to code generate all the GEPs necessary to make all the operands available
at the new location for the ld/st.  With this patch we recursively walk through
the GEP operands checking whether all operands are available, and in the case of
a GEP operand, it recursively makes all its operands available. Code generation
happens from the inner GEPs out until reaching the GEP that appears as an
operand of the ld/st.

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

llvm-svn: 276841

8 years agoGVN-hoist: use DFS numbers instead of walking the instruction stream
Sebastian Pop [Wed, 27 Jul 2016 05:13:52 +0000 (05:13 +0000)]
GVN-hoist: use DFS numbers instead of walking the instruction stream

The patch replaces a function that walks the IR with a call to firstInBB() that
uses the DFS numbering.  NFC.

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

llvm-svn: 276840

8 years ago[coroutines] Part 2 of N: Adding Coroutine Intrinsics
David Majnemer [Wed, 27 Jul 2016 05:12:35 +0000 (05:12 +0000)]
[coroutines] Part 2 of N: Adding Coroutine Intrinsics

This is the second patch in the coroutine series. It adds coroutine
intrinsics and updates intrinsic cost in TargetTransformInfoImpl.h.

Patch by Gor Nishanov!

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

llvm-svn: 276839

8 years agoadd a verbose mode to Loop->print() to print all the basic blocks of a loop
Sebastian Pop [Wed, 27 Jul 2016 05:02:17 +0000 (05:02 +0000)]
add a verbose mode to Loop->print() to print all the basic blocks of a loop

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

llvm-svn: 276838

8 years agoadd function isLoopLatch
Sebastian Pop [Wed, 27 Jul 2016 05:02:15 +0000 (05:02 +0000)]
add function isLoopLatch

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

llvm-svn: 276837

8 years agotest: simplify commands, NFC
Saleem Abdulrasool [Wed, 27 Jul 2016 04:43:15 +0000 (04:43 +0000)]
test: simplify commands, NFC

Rather than copying the file and then doing an in-place edit, perform the
replacements to stdout and pass the output to FileCheck directly.  Avoids
unnecessary copying and seds.

llvm-svn: 276836

8 years agorefactor code in verifyLoop: NFC.
Sebastian Pop [Wed, 27 Jul 2016 04:36:06 +0000 (04:36 +0000)]
refactor code in verifyLoop: NFC.

Use std::any_of as requested in https://reviews.llvm.org/D22816

llvm-svn: 276835

8 years agoUse RAII for ensuring that mprotect calls are undone
Dean Michael Berris [Wed, 27 Jul 2016 04:30:25 +0000 (04:30 +0000)]
Use RAII for ensuring that mprotect calls are undone

Summary: This fixes an mprotect leak identified in D21612.

Reviewers: echristo, rSerge

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 276833

8 years ago[llvm-cov] Escape '\' in strings when emitting JSON
Vedant Kumar [Wed, 27 Jul 2016 04:08:32 +0000 (04:08 +0000)]
[llvm-cov] Escape '\' in strings when emitting JSON

Test that Windows path separators are escaped properly. Add a round-trip
test to verify the JSON produced by the exporter.

llvm-svn: 276832

8 years agoFix for compiling with clang <= 3.7 and g++6 headers
Vedant Kumar [Wed, 27 Jul 2016 03:43:34 +0000 (03:43 +0000)]
Fix for compiling with clang <= 3.7 and g++6 headers

Make integers explicitly unsigned, so the tuple constructor will resolve
properly when but with clang 3.6, 3.7 and gcc 6.1.1 libstdc++ headers.

Patch by Frederich Munch!

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

llvm-svn: 276831

8 years agoMove assert as early as possible
Sebastian Pop [Wed, 27 Jul 2016 03:30:11 +0000 (03:30 +0000)]
Move assert as early as possible

Patch written by Aditya Kumar.

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

llvm-svn: 276830

8 years ago[llvm-go] parameterize $GOPATH construction
Andrew Wilkins [Wed, 27 Jul 2016 03:21:51 +0000 (03:21 +0000)]
[llvm-go] parameterize $GOPATH construction

Summary:
To build llgo, you must currently ensure that llgo
is in the tools/llgo directory, due to a hard-coded
path in llvm-go.

To support the use of LLVM_EXTERNAL_LLGO_SOURCE_DIR,
we introduce a flag to llvm-go that enables the
caller to specify the paths to symlink in the
temporary $GOPATH.

Reviewers: pcc

Subscribers: llvm-commits

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

llvm-svn: 276829

8 years ago[llgo] add llgo source path to LLVM_GO_PACKAGES
Andrew Wilkins [Wed, 27 Jul 2016 03:01:00 +0000 (03:01 +0000)]
[llgo] add llgo source path to LLVM_GO_PACKAGES

Summary:
To support the use of LLVM_EXTERNAL_LLGO_SOURCE_DIR,
with llgo situated in a location other than tools/llgo,
we add the llgo source directory to LLVM_GO_PACKAGES.

Reviewers: pcc

Subscribers: llvm-commits

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

llvm-svn: 276828

8 years ago[ConstantFolding] Correctly handle failures in ConstantFoldConstantExpressionImpl
David Majnemer [Wed, 27 Jul 2016 02:39:16 +0000 (02:39 +0000)]
[ConstantFolding] Correctly handle failures in ConstantFoldConstantExpressionImpl

Failures in ConstantFoldConstantExpressionImpl were ignored causing
crashes down the line.

This fixes PR28725.

llvm-svn: 276827

8 years ago[ELF] Support --output. Also output= can take two dashes.
Davide Italiano [Wed, 27 Jul 2016 01:57:15 +0000 (01:57 +0000)]
[ELF] Support --output. Also output= can take two dashes.

llvm-svn: 276826

8 years ago[ELF/LinkerScript] Support EXCLUDE_FILE inside KEEP.
Davide Italiano [Wed, 27 Jul 2016 01:44:01 +0000 (01:44 +0000)]
[ELF/LinkerScript] Support EXCLUDE_FILE inside KEEP.

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

llvm-svn: 276825

8 years agoReverting r276771 due to MSan failures.
Andrew Kaylor [Wed, 27 Jul 2016 01:19:24 +0000 (01:19 +0000)]
Reverting r276771 due to MSan failures.

llvm-svn: 276824

8 years agoAMDGPU: Use rcp for fdiv 1, x with fpmath metadata
Matt Arsenault [Tue, 26 Jul 2016 23:25:44 +0000 (23:25 +0000)]
AMDGPU: Use rcp for fdiv 1, x with fpmath metadata

Using rcp should be OK for safe math usually, so this
should not be replacing the original fdiv.

llvm-svn: 276823

8 years agoRevert r276136 "Use ValueOffsetPair to enhance value reuse during SCEV expansion."
Hans Wennborg [Tue, 26 Jul 2016 23:25:13 +0000 (23:25 +0000)]
Revert r276136 "Use ValueOffsetPair to enhance value reuse during SCEV expansion."

It causes Clang tests to fail after Windows self-host (PR28705).

(Also reverts follow-up r276139.)

llvm-svn: 276822

8 years agoAMDGPU: Add more tests for LDS size with occupancy
Matt Arsenault [Tue, 26 Jul 2016 23:15:59 +0000 (23:15 +0000)]
AMDGPU: Add more tests for LDS size with occupancy

llvm-svn: 276821

8 years ago[docs] Fix a sphinx error in llvm-cov.rst
Vedant Kumar [Tue, 26 Jul 2016 23:09:57 +0000 (23:09 +0000)]
[docs] Fix a sphinx error in llvm-cov.rst

Failing bot:

  http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/12025

Fix tested with `ninja docs-llvm-html`.

llvm-svn: 276820

8 years agoAMDGPU: Use implicit_def for selecting anyext
Matt Arsenault [Tue, 26 Jul 2016 23:06:33 +0000 (23:06 +0000)]
AMDGPU: Use implicit_def for selecting anyext

llvm-svn: 276819

8 years agoRetry: [llvm-cov] Add support for exporting coverage data to JSON
Vedant Kumar [Tue, 26 Jul 2016 22:50:58 +0000 (22:50 +0000)]
Retry: [llvm-cov] Add support for exporting coverage data to JSON

This enables users to export coverage information as portable JSON for use by
analysis tools and storage in document based databases.

The export sub-command is invoked just like the others:

  llvm-cov export -instr-profile path/to/foo.profdata path/to/foo.binary

The resulting JSON contains a list of files and functions. Every file object
contains a list of segments, expansions, and a summary of the file's region,
function, and line coverage. Every function object contains the function's name
and regions. There is also a total summary for the entire object file.

Changes since the initial commit (r276813):

  - Fixed the regexes in the tests to handle Windows filepaths.

Patch by Eddie Hurtig!

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

llvm-svn: 276818

8 years agodocs: Add reference to type metadata to langref.
Peter Collingbourne [Tue, 26 Jul 2016 22:31:30 +0000 (22:31 +0000)]
docs: Add reference to type metadata to langref.

llvm-svn: 276817

8 years agoRevert "[llvm-cov] Add support for exporting coverage data to JSON"
Vedant Kumar [Tue, 26 Jul 2016 21:55:39 +0000 (21:55 +0000)]
Revert "[llvm-cov] Add support for exporting coverage data to JSON"

This reverts commit r276813. The Windows bots are complaining about some
of the filename regexes in the tests:

  http://bb.pgr.jp/builders/ninja-clang-i686-msc19-R/builds/5299

llvm-svn: 276816

8 years agoMIRParser: Use dot instead of colon to mark subregisters
Matthias Braun [Tue, 26 Jul 2016 21:49:34 +0000 (21:49 +0000)]
MIRParser: Use dot instead of colon to mark subregisters

Change the syntax to use `%0.sub8` to denote a subregister.

This seems like a more natural fit to denote subregisters; I also plan
to introduce a new ":classname" syntax in upcoming patches to denote the
register class of a vreg.

Note that this commit disallows plain identifiers to start with a '.'
character.  This shouldn't affect anything as external names/IR
references are all prefixed with '$'/'%', plain identifiers are only
used for instruction names, register mask names and subreg indexes.

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

llvm-svn: 276815

8 years agoFix LLDBConfig.cmake to enable python enabled build for all 64 bit lldb targets
Omair Javaid [Tue, 26 Jul 2016 21:43:02 +0000 (21:43 +0000)]
Fix LLDBConfig.cmake to enable python enabled build for all 64 bit lldb targets

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

llvm-svn: 276814

8 years ago[llvm-cov] Add support for exporting coverage data to JSON
Vedant Kumar [Tue, 26 Jul 2016 21:35:43 +0000 (21:35 +0000)]
[llvm-cov] Add support for exporting coverage data to JSON

This enables users to export coverage information as portable JSON for use by
analysis tools and storage in document based databases.

The export sub-command is invoked just like the others:

  llvm-cov export -instr-profile path/to/foo.profdata path/to/foo.binary

The resulting JSON contains a list of files and functions. Every file object
contains a list of segments, expansions, and a summary of the file's region,
function, and line coverage. Every function object contains the function's name
and regions. There is also a total summary for the entire object file.

Patch by Eddie Hurtig!

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

llvm-svn: 276813

8 years ago[ELF][MIPS] Attempt to fix Windows buildbot
Simon Atanasyan [Tue, 26 Jul 2016 21:28:34 +0000 (21:28 +0000)]
[ELF][MIPS] Attempt to fix Windows buildbot

llvm-svn: 276812