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
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
Nirav Dave [Wed, 27 Jul 2016 19:19:13 +0000 (19:19 +0000)]
Initialize PreserveAsmComments in MCTargetOptions
llvm-svn: 276905
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
Krzysztof Parzyszek [Wed, 27 Jul 2016 18:47:25 +0000 (18:47 +0000)]
[Hexagon] Handle extended versions of restore routines
llvm-svn: 276903
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
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
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
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
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
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
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
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
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
Hans Wennborg [Wed, 27 Jul 2016 16:56:03 +0000 (16:56 +0000)]
UsersManual.rst: update clang-cl option list
llvm-svn: 276891
Simon Pilgrim [Wed, 27 Jul 2016 16:41:56 +0000 (16:41 +0000)]
Fix unnecessary default switch warning
llvm-svn: 276889
Hans Wennborg [Wed, 27 Jul 2016 16:39:45 +0000 (16:39 +0000)]
Update cxx_dr_Status after 3.9 branch
llvm-svn: 276887
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
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
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
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
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
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
Diana Picus [Wed, 27 Jul 2016 15:13:25 +0000 (15:13 +0000)]
Typo fix. NFC
llvm-svn: 276879
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
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
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
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
Ahmed Bougacha [Wed, 27 Jul 2016 14:31:46 +0000 (14:31 +0000)]
[AArch64] Mark various *Info classes as 'final'. NFC.
llvm-svn: 276874
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
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
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
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
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
Rafael Espindola [Wed, 27 Jul 2016 14:10:56 +0000 (14:10 +0000)]
Make toPhdrFlags a member function. NFC.
llvm-svn: 276868
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
Kirill Bobyrev [Wed, 27 Jul 2016 13:37:22 +0000 (13:37 +0000)]
[clang-rename] skip CXXConversionDecl while searching for NamedDecl
llvm-svn: 276866
Nemanja Ivanovic [Wed, 27 Jul 2016 13:24:54 +0000 (13:24 +0000)]
[PowerPC] Fix typo in PPCHazardRecognizers.cpp
Fixes PR28731.
llvm-svn: 276865
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
Tobias Grosser [Wed, 27 Jul 2016 13:20:16 +0000 (13:20 +0000)]
GPGPU: Add basic support for kernel launches
llvm-svn: 276863
Haojian Wu [Wed, 27 Jul 2016 13:17:16 +0000 (13:17 +0000)]
[include-fixer] Update document.
llvm-svn: 276862
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Dean Michael Berris [Wed, 27 Jul 2016 07:27:35 +0000 (07:27 +0000)]
Default COMPILER_RT_BUILD_XRAY=ON
llvm-svn: 276845
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
Mehdi Amini [Wed, 27 Jul 2016 06:03:47 +0000 (06:03 +0000)]
Fix Coroutines doc example
SSA was broken.
llvm-svn: 276843
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Andrew Kaylor [Wed, 27 Jul 2016 01:19:24 +0000 (01:19 +0000)]
Reverting r276771 due to MSan failures.
llvm-svn: 276824
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
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
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
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
Matt Arsenault [Tue, 26 Jul 2016 23:06:33 +0000 (23:06 +0000)]
AMDGPU: Use implicit_def for selecting anyext
llvm-svn: 276819
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
Peter Collingbourne [Tue, 26 Jul 2016 22:31:30 +0000 (22:31 +0000)]
docs: Add reference to type metadata to langref.
llvm-svn: 276817
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
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
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
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
Simon Atanasyan [Tue, 26 Jul 2016 21:28:34 +0000 (21:28 +0000)]
[ELF][MIPS] Attempt to fix Windows buildbot
llvm-svn: 276812
Rui Ueyama [Tue, 26 Jul 2016 21:26:02 +0000 (21:26 +0000)]
Move code for MIPS from createInputSection to initializeSections.
We already have code for ARM in initializeSections, so this
is more consistent.
Differential Revision: https://reviews.llvm.org/D22833
llvm-svn: 276811
Simon Atanasyan [Tue, 26 Jul 2016 21:11:34 +0000 (21:11 +0000)]
[ELF][MIPS] Replace binary test input file by asembler code in the test. NFC
llvm-svn: 276809
Simon Atanasyan [Tue, 26 Jul 2016 21:11:30 +0000 (21:11 +0000)]
[ELF][MIPS] Do not emit .got section in case of relocatable output
llvm-svn: 276808
Simon Atanasyan [Tue, 26 Jul 2016 21:11:26 +0000 (21:11 +0000)]
[ELF][MIPS] Use section type to recognize .reginfo and .MIPS.options sections
It is faster and more correct method than string comparision.
llvm-svn: 276807
Sanjoy Das [Tue, 26 Jul 2016 21:03:41 +0000 (21:03 +0000)]
Fix docs/Coroutines.rst syntax highlighting on Linux
Summary:
s/code-block:: C++/code-block:: c++ in docs/Coroutines.rst .
Patch by Gor Nishanov! Edited by Sanjoy to fix a missing s/C/c/.
Reviewers: sanjoy, rengolin
Differential Revision: https://reviews.llvm.org/D22832
llvm-svn: 276806
Matt Arsenault [Tue, 26 Jul 2016 21:03:38 +0000 (21:03 +0000)]
AMDGPU/R600: Remove dead custom inserters
The intrinsics for these were removed, so this is dead.
llvm-svn: 276805
Matt Arsenault [Tue, 26 Jul 2016 21:03:36 +0000 (21:03 +0000)]
AMDGPU: Minor AsmPrinter cleanups
llvm-svn: 276804
Evgeniy Stepanov [Tue, 26 Jul 2016 21:02:45 +0000 (21:02 +0000)]
[asan] Remove zero FSR check on ARM.
The kernel on Nexus 5X returns error_code in ucontext which has
correct FSR_WRITE flag, but empty (zero) abort type field. Removing
the checks means that we will report all SEGVs as READ on very old
kernels, but will properly distinguish READ vs WRITE on moderately
old ones.
llvm-svn: 276803
Evgeniy Stepanov [Tue, 26 Jul 2016 21:02:44 +0000 (21:02 +0000)]
[asan] Hardcode page size 4096 on Android.
EXEC_PAGESIZE lies.
sysconf() is broken in .preinit_array.
llvm-svn: 276802
Krzysztof Parzyszek [Tue, 26 Jul 2016 20:30:30 +0000 (20:30 +0000)]
[Hexagon] Post-increment loads/stores enhancements
- Generate vector post-increment stores more aggressively.
- Predicate post-increment and vector stores in early if-conversion.
llvm-svn: 276800