Michael Berg [Wed, 1 Aug 2018 18:06:49 +0000 (18:06 +0000)]
[NFC] small addendum to r334242, FMF propagation
llvm-svn: 338604
Pirama Arumuga Nainar [Wed, 1 Aug 2018 17:55:34 +0000 (17:55 +0000)]
[Android] Increase default new alignment for Android
Summary:
Android's memory allocators also guarantee 8-byte alignment for 32-bit
architectures and 16-byte alignment for 64-bit.
Reviewers: rsmith
Subscribers: cfe-commits, srhines, enh
Differential Revision: https://reviews.llvm.org/D50112
llvm-svn: 338603
Hans Wennborg [Wed, 1 Aug 2018 17:51:23 +0000 (17:51 +0000)]
Revert r338455 "[constexpr] Support for constant evaluation of __builtin_memcpy and __builtin_memmove (in non-type-punning cases)."
It caused asserts during Chromium builds, see reply on the cfe-commits thread.
> This is intended to permit libc++ to make std::copy etc constexpr
> without sacrificing the optimization that uses memcpy on
> trivially-copyable types.
>
> __builtin_strcpy and __builtin_wcscpy are not handled by this change.
> They'd be straightforward to add, but we haven't encountered a need for
> them just yet.
llvm-svn: 338602
Rui Ueyama [Wed, 1 Aug 2018 17:50:09 +0000 (17:50 +0000)]
Revert r338596: Simplify. NFC.
This reverts commit r338596 because it contained a functional change.
The patch accidentally replaced StringRef::startswith with the exact match.
llvm-svn: 338600
Vlad Tsyrklevich [Wed, 1 Aug 2018 17:44:37 +0000 (17:44 +0000)]
[X86] FastISel fall back on !absolute_symbol GVs
Summary:
D25878, which added support for !absolute_symbol for normal X86 ISel,
did not add support for materializing references to absolute symbols for
X86 FastISel. This causes build failures because FastISel generates
PC-relative relocations for absolute symbols. Fall back to normal ISel
for references to !absolute_symbol GVs. Fix for PR38200.
Reviewers: pcc, craig.topper
Reviewed By: pcc
Subscribers: hiraditya, llvm-commits, kcc
Differential Revision: https://reviews.llvm.org/D50116
llvm-svn: 338599
Simon Pilgrim [Wed, 1 Aug 2018 17:43:38 +0000 (17:43 +0000)]
[X86] Assign from a brace initializer to match style guide. NFCI.
llvm-svn: 338598
Alex Lorenz [Wed, 1 Aug 2018 17:39:29 +0000 (17:39 +0000)]
[clangd] allow clients to control the compilation database by passing in
compilationDatabaseChanges in the 'workspace/didChangeConfiguration' request
This commit allows clangd to use an in-memory compilation database that's
controlled from the LSP client (-compile_args_from=lsp). It extends the
'workspace/didChangeConfiguration' request to allow the client to pass in a
compilation database subset that needs to be updated in the workspace.
Differential Revision: https://reviews.llvm.org/D49758
llvm-svn: 338597
Rui Ueyama [Wed, 1 Aug 2018 17:33:00 +0000 (17:33 +0000)]
Simplify. NFC.
llvm-svn: 338596
Simon Pilgrim [Wed, 1 Aug 2018 17:25:11 +0000 (17:25 +0000)]
[llvm-mca][x86] Add CMPXCHG instruction resource tests
I've put CMPXCHG8B/CMPXCHG16B in the same file, even though technically they are under separate CPUID bits all targets seem to support both (or neither).
llvm-svn: 338595
Alex Langford [Wed, 1 Aug 2018 17:21:18 +0000 (17:21 +0000)]
Introduce install-lldb-framework target
Summary:
Previously, I thought that install-liblldb would fail because CMake had
a bug related to installing frameworks. In actuality, I misunderstood the
semantics of `add_custom_target`: the DEPENDS option refers to specific files,
not targets. Therefore `install-liblldb` should rely on the actual liblldb
getting generated rather than the target.
This means that the previous patch I committed (to stop relying on CMake's
framework support) is no longer needed and has been reverted. Using CMake's
framework support greatly simplifies the implementation.
`install-lldb-framework` (and the stripped variant) is as simple as
depending on `install-liblldb` because CMake knows that liblldb was built as a
framework and will install the whole framework for you. The stripped variant
will depend on the stripped variants of individual tools only to ensure they
actually are stripped as well.
Reviewers: labath, sas
Subscribers: mgorny, lldb-commits
Differential Revision: https://reviews.llvm.org/D50038
llvm-svn: 338594
Sanjay Patel [Wed, 1 Aug 2018 17:18:50 +0000 (17:18 +0000)]
[x86] remove stale FIXME note from test; NFC
This was fixed with rL338592.
llvm-svn: 338593
Sanjay Patel [Wed, 1 Aug 2018 17:17:08 +0000 (17:17 +0000)]
[SelectionDAG] fix bug in translating funnel shift with non-power-of-2 type
The bug is visible in the constant-folded x86 tests. We can't use the
negated shift amount when the type is not power-of-2:
https://rise4fun.com/Alive/US1r
...so in that case, use the regular lowering that includes a select
to guard against a shift-by-bitwidth. This path is improved by only
calculating the modulo shift amount once now.
Also, improve the rotate (with power-of-2 size) lowering to use
a negate rather than subtract from bitwidth. This improves the
codegen whether we have a rotate instruction or not (although
we can still see that we're not matching to a legal rotate in
all cases).
llvm-svn: 338592
Raphael Isemann [Wed, 1 Aug 2018 17:12:58 +0000 (17:12 +0000)]
Don't ignore byte_order in Stream::PutMaxHex64
Reviewers: labath
Reviewed By: labath
Subscribers: zturner, lldb-commits
Differential Revision: https://reviews.llvm.org/D50025
llvm-svn: 338591
Vedant Kumar [Wed, 1 Aug 2018 17:08:11 +0000 (17:08 +0000)]
[StackFrame] Add doxygen comments to the StackFrameList API (NFC)
Clarify how StackFrameList works by documenting its methods. Also,
delete some dead code and insert some TODOs.
Differential Revision: https://reviews.llvm.org/D50087
llvm-svn: 338590
Vedant Kumar [Wed, 1 Aug 2018 17:07:56 +0000 (17:07 +0000)]
[StackFrame] Use early returns in ResetCurrentInlinedDepth (NFC)
Using early returns in this function substantially reduces the nesting
level, making the logic easier to understand.
llvm-svn: 338589
Vedant Kumar [Wed, 1 Aug 2018 17:07:40 +0000 (17:07 +0000)]
[StackFrame] Factor GetOnlyConcreteFramesUpTo out of GetFramesUpTo (NFC)
Splitting GetOnlyConcreteFramesUpTo will make it easier to implement
support for synthetic tail call frames in backtraces. This is just a
prep change, no functionality is affected.
llvm-svn: 338588
Sanjay Patel [Wed, 1 Aug 2018 16:59:54 +0000 (16:59 +0000)]
[x86] add tests to show miscompile for funnel shift with weird size; NFC
llvm-svn: 338587
Simon Pilgrim [Wed, 1 Aug 2018 16:52:28 +0000 (16:52 +0000)]
[SelectionDAG] Make binop reduction matcher available to all targets
There is nothing x86-specific about this code, so it'd be nice to make this available for other targets to use in the future (and get it out of X86ISelLowering!).
Differential Revision: https://reviews.llvm.org/D50083
llvm-svn: 338586
Johannes Doerfert [Wed, 1 Aug 2018 16:37:51 +0000 (16:37 +0000)]
[NFC][FunctionAttrs] Remove duplication in old/new PM pipeline
This patch just extract code into a separate function to remove some
duplication between the old and new pass manager pipeline. Due to the
different CGSCC iterators used, not all code duplication was eliminated.
llvm-svn: 338585
Simon Pilgrim [Wed, 1 Aug 2018 16:34:39 +0000 (16:34 +0000)]
[llvm-mca][x86] Add PREFETCHW instruction resource tests
These aren't just available via 3DNow! so test for them separately as well.
llvm-svn: 338584
Simon Pilgrim [Wed, 1 Aug 2018 16:25:50 +0000 (16:25 +0000)]
[llvm-mca][x86] Add PCLMUL instruction resource tests
Renamed the btver2 file that already contained them - the other targets were only testing the AVX versions
llvm-svn: 338583
Jordan Rupprecht [Wed, 1 Aug 2018 16:23:22 +0000 (16:23 +0000)]
[llvm-objcopy] Add support for --rename-section flags from gnu objcopy
Summary:
Add support for --rename-section flags from gnu objcopy.
Not all flags appear to have an effect for ELF objects, but allowing them would allow easier drop-in replacement. Other unrecognized flags are rejected.
This was only tested by comparing flags printed by "readelf -e <.o>" against the output of gnu vs llvm objcopy, it hasn't been tested to be valid beyond that.
Reviewers: jakehehrlich, alexshap
Subscribers: llvm-commits, paulsemel, alexshap
Differential Revision: https://reviews.llvm.org/D49870
llvm-svn: 338582
Joachim Protze [Wed, 1 Aug 2018 16:15:18 +0000 (16:15 +0000)]
[OMPT,tests] Fix taskloop testcase scheduling effects
The taskloop testcase had scheduling effects. Tasks of the taskloop would
sometimes be scheduled before all task were created. The testing is now
split into two phases. First, the task creation on the master is tested,
than the scheduling events of the tasks are tested. Thus, the order of
creation and scheduling events is irrelavant.
Patch by Simon Convent
Reviewed by: protze.joachim, Hahnfeld
Subscribers: openmp-commits
Differential Revision: https://reviews.llvm.org/D50140
llvm-svn: 338580
Andrea Di Biagio [Wed, 1 Aug 2018 16:06:33 +0000 (16:06 +0000)]
[llvm-mca] Correctly update the rank in `Scheduler::select()`.
Found by inspection.
llvm-svn: 338579
Ilya Biryukov [Wed, 1 Aug 2018 15:32:56 +0000 (15:32 +0000)]
[Format] Fix for bug 35641
Summary:
Bug was caused due to comments at the start of scope. For a code like:
```
int func() { //
int b;
int c;
}
```
the comment at the first line gets IndentAndNestingLevel (1,1) whereas
the following declarations get only (0,1) which prevents them from insertion
of a new scope. So, I changed the AlignTokenSequence to look at previous
*non-comment* token when deciding whether to introduce a new scope into
stack or not.
Patch by Kadir Cetinkaya!
Reviewers: rsmith, djasper
Reviewed By: djasper
Subscribers: lebedev.ri, cfe-commits, klimek
Tags: #clang
Differential Revision: https://reviews.llvm.org/D43303
llvm-svn: 338578
Filipe Cabecinhas [Wed, 1 Aug 2018 15:30:14 +0000 (15:30 +0000)]
Add missing condition
llvm-svn: 338577
Simon Pilgrim [Wed, 1 Aug 2018 15:29:47 +0000 (15:29 +0000)]
[llvm-mca][x86] Add SET/TEST instruction resource tests
llvm-svn: 338576
Hans Wennborg [Wed, 1 Aug 2018 15:22:27 +0000 (15:22 +0000)]
Bump version number to 8.0.0svn
llvm-svn: 338570
Jan Vesely [Wed, 1 Aug 2018 15:04:36 +0000 (15:04 +0000)]
AMDGPU: Allow fp32-denormals feature for r600 targets
This was accidentally removed in r335942.
Differential Revision: https://reviews.llvm.org/D49934
llvm-svn: 338569
Sjoerd Meijer [Wed, 1 Aug 2018 14:43:59 +0000 (14:43 +0000)]
[ARM] Armv8.2-A FP16 vector intrinsics tests
Clang support for the Armv8.2-A FP16 vector intrinsic was committed in
rC328277, but this was never followed up, i.e. the LLVM part is missing.
I've raised PR38404, and this is the first step to address this. I.e.,
this adds tests for the Armv8.2-A FP16 vector intrinsic, and thus shows
which intrinsics already work, and which need further work.
Differential Revision: https://reviews.llvm.org/D50142
llvm-svn: 338568
Guillaume Chatelet [Wed, 1 Aug 2018 14:41:45 +0000 (14:41 +0000)]
[llvm-exegesis] Provide a way to handle memory instructions.
Summary:
And implement memory instructions on X86.
This fixes PR36906.
Reviewers: gchatelet
Reviewed By: gchatelet
Subscribers: lebedev.ri, filcab, mgorny, tschuett, RKSimon, llvm-commits
Differential Revision: https://reviews.llvm.org/D48935
llvm-svn: 338567
David Green [Wed, 1 Aug 2018 14:36:12 +0000 (14:36 +0000)]
[UnrollAndJam] Add unroll_and_jam pragma handling
This adds support for the unroll_and_jam pragma, to go with the recently
added unroll and jam pass. The name of the pragma is the same as is used
in the Intel compiler, and most of the code works the same as for unroll.
#pragma clang loop unroll_and_jam has been separated into a different
patch. This part adds #pragma unroll_and_jam with an optional count, and
#pragma no_unroll_and_jam to disable the transform.
Differential Revision: https://reviews.llvm.org/D47267
llvm-svn: 338566
Simon Pilgrim [Wed, 1 Aug 2018 14:25:33 +0000 (14:25 +0000)]
[llvm-mca][x86] Add LEA instruction resource tests
We already added these to btver2, now add them to other targets, even though none of their models treat them specially (yet).
llvm-svn: 338565
Hans Wennborg [Wed, 1 Aug 2018 14:25:03 +0000 (14:25 +0000)]
Update version to 8.0.0svn
llvm-svn: 338564
Simon Pilgrim [Wed, 1 Aug 2018 14:18:09 +0000 (14:18 +0000)]
[llvm-mca][x86] Add more x86-64 system instruction resource tests
CPUID, IN/OUT, INS/OUTS, INT, PAUSE, SCAS, UD2, XLAT
llvm-svn: 338563
Cameron McInally [Wed, 1 Aug 2018 14:17:19 +0000 (14:17 +0000)]
[FPEnv] Widen illegal width StrictFP vector operations as needed
Differential Revision: https://reviews.llvm.org/D49806
llvm-svn: 338562
Hans Wennborg [Wed, 1 Aug 2018 14:14:09 +0000 (14:14 +0000)]
Update docs version and clear release notes after 8.0.0 version bump
llvm-svn: 338561
Hans Wennborg [Wed, 1 Aug 2018 14:11:32 +0000 (14:11 +0000)]
Update docs version and clear release notes after 8.0.0 version bump
llvm-svn: 338560
Hans Wennborg [Wed, 1 Aug 2018 14:09:00 +0000 (14:09 +0000)]
Update docs version and clear release notes after 8.0.0 version bump
llvm-svn: 338559
Hans Wennborg [Wed, 1 Aug 2018 14:07:20 +0000 (14:07 +0000)]
Update docs version and clear release notes after 8.0.0 version bump
llvm-svn: 338558
Hans Wennborg [Wed, 1 Aug 2018 14:01:27 +0000 (14:01 +0000)]
Update docs version and clear release notes after 8.0.0 version bump
llvm-svn: 338557
Hans Wennborg [Wed, 1 Aug 2018 13:58:00 +0000 (13:58 +0000)]
Clear release notes and update version
llvm-svn: 338556
Hans Wennborg [Wed, 1 Aug 2018 13:54:28 +0000 (13:54 +0000)]
Update version to 8.0.0svn: cmake, includes files and docs
llvm-svn: 338555
Bryan Chan [Wed, 1 Aug 2018 13:50:29 +0000 (13:50 +0000)]
[AArch64] Fix FCCMP with FP16 operands
Summary: This patch adds support for FCCMP instruction with FP16 operands, avoiding an assertion during instruction selection.
Reviewers: olista01, SjoerdMeijer, t.p.northover, javed.absar
Reviewed By: SjoerdMeijer
Subscribers: kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D50115
llvm-svn: 338554
Filipe Cabecinhas [Wed, 1 Aug 2018 13:41:42 +0000 (13:41 +0000)]
Use a dummy target so the test passes when default target is for a toolchain implements useIntegratedAs() -> true
llvm-svn: 338553
Filipe Cabecinhas [Wed, 1 Aug 2018 13:41:11 +0000 (13:41 +0000)]
Add REQUIRES: native to a test that assumes it
llvm-svn: 338552
Andrei Elovikov [Wed, 1 Aug 2018 13:34:18 +0000 (13:34 +0000)]
[NFC] Silence warning about ptr-to-func to ptr-to-obj cast in clang-fuzzer/handle-llvm/handle_llvm.cpp.
Summary:
I don't have the whole list of GCC binaries available so I determined the exact
version where the warning disappeared via:
https://github.com/gcc-mirror/gcc/blob/gcc-4_9_0-release/gcc/cp/typeck.c#L6863
https://github.com/gcc-mirror/gcc/blob/gcc-4_8_5-release/gcc/cp/typeck.c#L6652
Reviewers: emmettneyman, erichkeane
Reviewed By: emmettneyman, erichkeane
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D50056
llvm-svn: 338551
Simon Pilgrim [Wed, 1 Aug 2018 13:34:17 +0000 (13:34 +0000)]
[llvm-mca][x86] Add CLFLUSHOPT instruction resource tests
llvm-svn: 338550
Hans Wennborg [Wed, 1 Aug 2018 13:25:30 +0000 (13:25 +0000)]
Bump the trunk version to 8.0.0svn
llvm-svn: 338537
Jonas Devlieghere [Wed, 1 Aug 2018 13:24:39 +0000 (13:24 +0000)]
[dsymutil] Convert recursion in lookForDIEsToKeep into worklist.
The functions `lookForDIEsToKeep` and `keepDIEAndDependencies` can have
some very deep recursion. This tackles part of this problem by removing
the recursion from `lookForDIEsToKeep` by turning it into a worklist.
The difficulty in doing so is the computation of incompleteness, which
depends on the incompleteness of its children. To compute this, we
insert "continuation markers" into the worklist. This informs the work
loop to (re)compute the incompleteness property of the DIE associated
with it (i.e. the parent of the previously processed DIE).
This patch should generate byte-identical output. Unfortunately it also
has some impact of performance, regressing by about 4% when processing
clang on my machine.
Differential revision: https://reviews.llvm.org/D48899
llvm-svn: 338536
Filipe Cabecinhas [Wed, 1 Aug 2018 13:20:38 +0000 (13:20 +0000)]
Test: Enable exceptions for test that needs it
llvm-svn: 338535
Hans Wennborg [Wed, 1 Aug 2018 13:19:14 +0000 (13:19 +0000)]
Make test/Frontend/clang-abi-compat.cpp pass when the version goes to 8
llvm-svn: 338534
Owen Reynolds [Wed, 1 Aug 2018 13:16:48 +0000 (13:16 +0000)]
Test Commit
Removal of extra line
llvm-svn: 338533
Simon Pilgrim [Wed, 1 Aug 2018 13:14:45 +0000 (13:14 +0000)]
[llvm-mca][x86] Add CMPS/LODS/MOVS/STOS string instruction resource tests
llvm-svn: 338532
Louis Dionne [Wed, 1 Aug 2018 13:13:14 +0000 (13:13 +0000)]
[libc++] Fix GCC 7.2.0 macro redefinition warning
The warning happens when LIBCXX_ENABLE_EXCEPTIONS cmake option is not set,
and it fires every time __config is included, 33 in total.
Patch by Jason Lovett
Reviewed as https://reviews.llvm.org/D49997
llvm-svn: 338531
Simon Pilgrim [Wed, 1 Aug 2018 13:06:14 +0000 (13:06 +0000)]
[X86] Use isNullConstant helper. NFCI.
llvm-svn: 338530
Simon Pilgrim [Wed, 1 Aug 2018 13:00:11 +0000 (13:00 +0000)]
Fix "not all control paths return a value" MSVC warning.
llvm-svn: 338529
Hans Wennborg [Wed, 1 Aug 2018 12:58:57 +0000 (12:58 +0000)]
UserManual: Update with the latest clang-cl flags
llvm-svn: 338528
Jonas Devlieghere [Wed, 1 Aug 2018 12:53:06 +0000 (12:53 +0000)]
[MC] Report fatal error for DWARF types for non-ELF object files
Getting the DWARF types section is only implemented for ELF object
files. We already disabled emitting debug types in clang (r337717), but
now we also report an fatal error (rather than crashing) when trying to
obtain this section in MC. Additionally we ignore the generate debug
types flag for unsupported target triples.
See PR38190 for more information.
Differential revision: https://reviews.llvm.org/D50057
llvm-svn: 338527
Haojian Wu [Wed, 1 Aug 2018 12:50:44 +0000 (12:50 +0000)]
[clangd] Correct the namespace of ParsedAST forward declaration, NFC.
llvm-svn: 338526
Sjoerd Meijer [Wed, 1 Aug 2018 12:41:10 +0000 (12:41 +0000)]
[AArch64][ARM] Add Armv8.4-A tests
This adds tests for Armv8.4-A, and also some v8.2 and v8.3 tests that were
missing.
Differential Revision: https://reviews.llvm.org/D50068
llvm-svn: 338525
Krasimir Georgiev [Wed, 1 Aug 2018 12:35:23 +0000 (12:35 +0000)]
[clang-format] Add some text proto functions to Google style
Summary: Adds 2 functions taking a text proto argument.
Reviewers: djasper, klimek
Reviewed By: djasper
Subscribers: acoomans, cfe-commits
Differential Revision: https://reviews.llvm.org/D50132
llvm-svn: 338524
Ryan Taylor [Wed, 1 Aug 2018 12:12:01 +0000 (12:12 +0000)]
[AMDGPU] Optimize _L image intrinsic to _LZ when lod is zero
Summary:
Add _L to _LZ image intrinsic table mapping to table gen.
In ISelLowering check if image intrinsic has lod and if it's equal
to zero, if so remove lod and change opcode to equivalent mapped _LZ.
Change-Id: Ie24cd7e788e2195d846c7bd256151178cbb9ec71
Subscribers: arsenm, mehdi_amini, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, steven_wu, dexonsmith, llvm-commits
Differential Revision: https://reviews.llvm.org/D49483
llvm-svn: 338523
Ulrich Weigand [Wed, 1 Aug 2018 12:07:32 +0000 (12:07 +0000)]
Fix build bot after r338521
llvm-svn: 338522
Ulrich Weigand [Wed, 1 Aug 2018 11:57:58 +0000 (11:57 +0000)]
[SystemZ, TableGen] Fix shift count handling
The DAG combiner logic to simplify AND masks in shift counts is invalid.
While it is true that the SystemZ shift instructions ignore all but the
low 6 bits of the shift count, it is still invalid to simplify the AND
masks while the DAG still uses the standard shift operators (which are
*not* defined to match the SystemZ instruction behavior).
Instead, this patch performs equivalent operations during instruction
selection. For completely removing the AND, this now happens via
additional DAG match patterns implemented by a multi-alternative
PatFrags. For simplifying a 32-bit AND to a 16-bit AND, the existing DAG
patterns were already mostly OK, they just needed an output XForm to
actually truncate the immediate value.
Unfortunately, the latter change also exposed a bug in TableGen: it
seems XForms are currently only handled correctly for direct operands of
the outermost operation node. This patch also fixes that bug by simply
recurring through the whole pattern. This should be NFC for all other
targets.
Differential Revision: https://reviews.llvm.org/D50096
llvm-svn: 338521
Nico Weber [Wed, 1 Aug 2018 11:56:20 +0000 (11:56 +0000)]
wrap to 80 cols, no behavior change
llvm-svn: 338520
Krasimir Georgiev [Wed, 1 Aug 2018 11:48:04 +0000 (11:48 +0000)]
[clang-format] Add @private to the list of jsdoc annotations
Reviewers: mprobst
Reviewed By: mprobst
Subscribers: acoomans, cfe-commits
Differential Revision: https://reviews.llvm.org/D50138
llvm-svn: 338519
Simon Marchi [Wed, 1 Aug 2018 11:28:49 +0000 (11:28 +0000)]
[clangd] Receive compilationDatabasePath in 'initialize' request
Summary:
That way, as soon as the "initialize" is received by the server, it can start
parsing/indexing with a valid compilation database and not have to wait for a
an initial 'didChangeConfiguration' that might or might not happen.
Then, when the user changes configuration, a didChangeConfiguration can be sent.
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewers: malaperle
Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, cfe-commits
Differential Revision: https://reviews.llvm.org/D49833
llvm-svn: 338518
Haojian Wu [Wed, 1 Aug 2018 11:24:50 +0000 (11:24 +0000)]
[clangd] Make SymbolLocation => bool conversion explicitly.
Summary:
The implicit bool conversion could happen superisingly, e.g. when
checking `if (Loc1 == Loc2)`, the compiler will convert SymbolLocation to
bool before comparing (because we don't define operator `==` for SymbolLocation).
Reviewers: sammccall
Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, cfe-commits
Differential Revision: https://reviews.llvm.org/D49657
llvm-svn: 338517
Simon Pilgrim [Wed, 1 Aug 2018 11:24:11 +0000 (11:24 +0000)]
[X86] Use isNullConstant helper. NFCI.
llvm-svn: 338516
Simon Pilgrim [Wed, 1 Aug 2018 11:00:11 +0000 (11:00 +0000)]
[llvm-mca][x86] Add STC + STD instruction resource tests
llvm-svn: 338514
Andrea Di Biagio [Wed, 1 Aug 2018 10:49:01 +0000 (10:49 +0000)]
[llvm-mca] Improve code comments. NFC.
llvm-svn: 338513
Tobias Grosser [Wed, 1 Aug 2018 10:48:38 +0000 (10:48 +0000)]
PPCG codegen
The latest version of the isl C++ bindings does not export the 'set'
method yet. Fall back to the C interface until this method can be
exported.
llvm-svn: 338512
Jonas Devlieghere [Wed, 1 Aug 2018 10:40:08 +0000 (10:40 +0000)]
[DebugInfo] Remove ambiguity to fix Windows bots
Should fix the MSVC bots by explicitly invoking
llvm::make_reverse_iterator to remove ambiguity with
std::make_reverse_iterator.
llvm-svn: 338511
Simon Pilgrim [Wed, 1 Aug 2018 10:34:13 +0000 (10:34 +0000)]
Add missing semicolon.
llvm-svn: 338510
Jonas Devlieghere [Wed, 1 Aug 2018 10:30:34 +0000 (10:30 +0000)]
[DebugInfo] Improve consistency in DWARFDie.h (NFC)
Follow-up for r338506 with some unrelated changes in formatting and
consistency.
llvm-svn: 338509
Simon Pilgrim [Wed, 1 Aug 2018 10:26:04 +0000 (10:26 +0000)]
Replace 'FALL-THROUGH' comment with LLVM_FALLTHROUGH to silence warning. NFCI.
llvm-svn: 338508
Andrew V. Tischenko [Wed, 1 Aug 2018 10:24:27 +0000 (10:24 +0000)]
[X86] Improved sched models for X86 BT*rr instructions.
Differential Revision: https://reviews.llvm.org/D49243
llvm-svn: 338507
Jonas Devlieghere [Wed, 1 Aug 2018 10:24:17 +0000 (10:24 +0000)]
[DebugInfo] Have custom std::reverse_iterator<DWARFDie>
The DWARFDie is a lightweight utility wrapper that stores a pointer to a
compile unit and a debug info entry. Currently, its iterator (used for
walking over its children) stores a DWARFDie and returns a const
reference when dereferencing it.
When the iterator is modified (by incrementing or decrementing it), this
reference becomes invalid. This was happening when calling reverse on
it, because the std::reverse_iterator is keeping a temporary copy of the
iterator (see
https://en.cppreference.com/w/cpp/iterator/reverse_iterator for a good
illustration).
The relevant code in libcxx:
reference operator*() const {_Iter __tmp = current; return *--__tmp;}
When dereferencing the reverse iterator, we decrement and return a
reference to a DWARFDie stored in the stack frame of this function,
resulting in UB at runtime.
This patch specifies the std::reverse_iterator for DWARFDie to do the
right thing.
Differential revision: https://reviews.llvm.org/D49679
llvm-svn: 338506
Tobias Grosser [Wed, 1 Aug 2018 09:57:36 +0000 (09:57 +0000)]
[isl++] drop the isl namespace qualifiers [NFC]
These namespace qualifiers are not needed. Dropping them brings us
closer to the official isl namespace qualifiers.
While the delta of this change set is large, it only mechanically drops
the 'isl::' prefixes.
llvm-svn: 338505
Tobias Grosser [Wed, 1 Aug 2018 09:57:10 +0000 (09:57 +0000)]
Rebase C++ bindings on top of latest isl bindings
The main difference in this change is that isl_stat is now always
checked by default. As we elminiated most used of isl_stat, thanks to
Philip Pfaffe's implementation of foreach, only a small set of changes
is needed.
This change does not include the following recent changes to isl's C++
bindings:
- stricter error handling for isl_bool
- dropping of the isl::namespace qualifiers
The former requires a larger patch in Polly and consequently should go
through a patch-review. The latter will be applied in the next commit to
keep this commit free from noise.
We also still apply a couple of other changes on top of the official isl
bindings. This delta is expected to shrink over time.
llvm-svn: 338504
Yuka Takahashi [Wed, 1 Aug 2018 09:50:02 +0000 (09:50 +0000)]
[Modules] Do not emit relocation error when -fno-validate-pch is set
Summary:
Clang emits error when implicit modules was relocated from the
first build directory. However this was biting our usecase where we copy
the contents of build directory to another directory in order to
distribute.
Differential Revision: https://reviews.llvm.org/D49852
llvm-svn: 338503
Simon Pilgrim [Wed, 1 Aug 2018 09:45:21 +0000 (09:45 +0000)]
Fix "not all control paths return a value" MSVC warning.
llvm-svn: 338502
Tobias Grosser [Wed, 1 Aug 2018 09:20:03 +0000 (09:20 +0000)]
Update to isl-0.20-35-ge0a98b62
llvm-svn: 338501
Marco Castelluccio [Wed, 1 Aug 2018 09:11:36 +0000 (09:11 +0000)]
[gcov] Add test which uses fork
Test for https://bugs.llvm.org/show_bug.cgi?id=38180.
llvm-svn: 338500
Petar Jovanovic [Wed, 1 Aug 2018 09:03:23 +0000 (09:03 +0000)]
[MIPS GlobalISel] Select global address
Select G_GLOBAL_VALUE for position dependent code.
Patch by Petar Avramovic.
Differential Revision: https://reviews.llvm.org/D49803
llvm-svn: 338499
George Rimar [Wed, 1 Aug 2018 08:11:54 +0000 (08:11 +0000)]
[LLD][ELF] - Apply clang-format to InputSections.cpp. NFC.
llvm-svn: 338498
George Rimar [Wed, 1 Aug 2018 08:10:50 +0000 (08:10 +0000)]
[LLD][ELF] - Removed excessive llvm:: prefix. NFC.
llvm-svn: 338497
David Bolvansky [Wed, 1 Aug 2018 08:02:40 +0000 (08:02 +0000)]
Revert "Enrich inline messages", tests fail
llvm-svn: 338496
Hans Wennborg [Wed, 1 Aug 2018 07:51:55 +0000 (07:51 +0000)]
Add llvm-rc to LLVM_TOOLCHAIN_TOOLS (PR38386)
This means it will be installed also in builds configured with
LLVM_INSTALL_TOOLCHAIN_ONLY, such as the Windows packages.
llvm-svn: 338495
David Bolvansky [Wed, 1 Aug 2018 07:37:16 +0000 (07:37 +0000)]
Enrich inline messages
Summary:
This patch improves Inliner to provide causes/reasons for negative inline decisions.
1. It adds one new message field to InlineCost to report causes for Always and Never instances. All Never and Always instantiations must provide a simple message.
2. Several functions that used to return the inlining results as boolean are changed to return InlineResult which carries the cause for negative decision.
3. Changed remark priniting and debug output messages to provide the additional messages and related inline cost.
4. Adjusted tests for changed printing.
Patch by: yrouban (Yevgeny Rouban)
Reviewers: craig.topper, sammccall, sgraenitz, NutshellySima, shchenz, chandlerc, apilipenko, javed.absar, tejohnson, dblaikie, sanjoy, eraman, xbolva00
Reviewed By: tejohnson, xbolva00
Subscribers: xbolva00, llvm-commits, arsenm, mehdi_amini, eraman, haicheng, steven_wu, dexonsmith
Differential Revision: https://reviews.llvm.org/D49412
llvm-svn: 338494
Martin Storsjo [Wed, 1 Aug 2018 06:50:18 +0000 (06:50 +0000)]
[AArch64] Disallow the MachO specific .loh directive for windows
Also add a test for it being unsupported for linux.
Differential Revision: https://reviews.llvm.org/D49929
llvm-svn: 338493
Craig Topper [Wed, 1 Aug 2018 06:36:20 +0000 (06:36 +0000)]
[X86] When looking for (CMOV C-1, (ADD (CTTZ X), C), (X != 0)) -> (ADD (CMOV (CTTZ X), -1, (X != 0)), C), make sure we really have a compare with 0.
It's not strictly required by the transform of the cmov and the add, but it makes sure we restrict it to the cases we know we want to match.
While there canonicalize the operand order of the cmov to simplify the matching and emitting code.
llvm-svn: 338492
Raphael Isemann [Wed, 1 Aug 2018 06:35:27 +0000 (06:35 +0000)]
Removed failing StreamTest case
The suspicious behavior is obviously because this method reads
OOB memory, so I'll remove it for now and re-add the test alongside
the fix later.
llvm-svn: 338491
Jonas Hahnfeld [Wed, 1 Aug 2018 06:26:55 +0000 (06:26 +0000)]
[test] Convert test for PR36720 to c89
GCC 4.8.5 defaults to this old C standard. I think we should make the
tests pass a newer -std=c99|c11 but that's too intrusive for now...
Differential Revision: https://reviews.llvm.org/D50084
llvm-svn: 338490
Roman Lebedev [Wed, 1 Aug 2018 06:06:16 +0000 (06:06 +0000)]
[AST] CastExpr: BasePathSize is not large enough.
Summary:
rC337815 / D49508 had to cannibalize one bit of `CastExprBitfields::BasePathSize` in order to squeeze `PartOfExplicitCast` boolean.
That reduced the maximal value of `PartOfExplicitCast` from 9 bits (~512) down to 8 bits (~256).
Apparently, that mattered. Too bad there weren't any tests.
It caused [[ https://bugs.llvm.org/show_bug.cgi?id=38356 | PR38356 ]].
So we need to increase `PartOfExplicitCast` back at least to 9 bits, or a bit more.
For obvious reasons, we can't do that in `CastExprBitfields` - that would blow up the size of every `Expr`.
So we need to either just add a variable into the `CastExpr` (as done here),
or use `llvm::TrailingObjects`. The latter does not seem to be straight-forward.
Perhaps, that needs to be done not for the `CastExpr` itself, but for all of it's `final` children.
Reviewers: rjmccall, rsmith, erichkeane
Reviewed By: rjmccall
Subscribers: bricci, hans, cfe-commits, waddlesplash
Differential Revision: https://reviews.llvm.org/D50050
llvm-svn: 338489
Raphael Isemann [Wed, 1 Aug 2018 06:04:48 +0000 (06:04 +0000)]
Added initial unit test for LLDB's Stream class.
Summary:
This adds an initial small unit test for LLDB's Stream class, which should at least cover
most of the functions in the Stream class. StreamString is always in big endian
mode, so that's the only stream byte order path this test covers as of now. Also,
the binary mode still needs to be tested for all print methods.
Also adds some FIXMEs for wrong/strange result values of the Stream class that we hit
while testing those functions.
Reviewers: labath
Reviewed By: labath
Subscribers: probinson, labath, mgorny, lldb-commits
Differential Revision: https://reviews.llvm.org/D50027
llvm-svn: 338488
Victor Leschuk [Wed, 1 Aug 2018 05:48:06 +0000 (05:48 +0000)]
[DWARF] Basic support for producing DWARFv5 .debug_addr section
This revision implements support for generating DWARFv5 .debug_addr section.
The implementation is pretty straight-forward: we just check the dwarf version
and emit section header if needed.
Reviewers: aprantl, dblaikie, probinson
Reviewed by: dblaikie
Differential Revision: https://reviews.llvm.org/D50005
llvm-svn: 338487
Zhihao Yuan [Wed, 1 Aug 2018 05:21:26 +0000 (05:21 +0000)]
[libc++] Fix build failures after merging <charconv>
Summary:
- fix a stupid unit test typo
- add <charconv> symbols to Linux abilist
Reviewers: EricWF
Subscribers: christof, ldionne, cfe-commits
Differential Revision: https://reviews.llvm.org/D50130
llvm-svn: 338486
Hiroshi Inoue [Wed, 1 Aug 2018 04:40:32 +0000 (04:40 +0000)]
[InstSimplify] fold extracting from std::pair (1/2)
This patch intends to enable jump threading when a method whose return type is std::pair<int, bool> or std::pair<bool, int> is inlined.
For example, jump threading does not happen for the if statement in func.
std::pair<int, bool> callee(int v) {
int a = dummy(v);
if (a) return std::make_pair(dummy(v), true);
else return std::make_pair(v, v < 0);
}
int func(int v) {
std::pair<int, bool> rc = callee(v);
if (rc.second) {
// do something
}
SROA executed before the method inlining replaces std::pair by i64 without splitting in both callee and func since at this point no access to the individual fields is seen to SROA.
After inlining, jump threading fails to identify that the incoming value is a constant due to additional instructions (like or, and, trunc).
This series of patch add patterns in InstructionSimplify to fold extraction of members of std::pair. To help jump threading, actually we need to optimize the code sequence spanning multiple BBs.
These patches does not handle phi by itself, but these additional patterns help NewGVN pass, which calls instsimplify to check opportunities for simplifying instructions over phi, apply phi-of-ops optimization to result in successful jump threading.
SimplifyDemandedBits in InstCombine, can do more general optimization but this patch aims to provide opportunities for other optimizers by supporting a simple but common case in InstSimplify.
This first patch in the series handles code sequences that merges two values using shl and or and then extracts one value using lshr.
Differential Revision: https://reviews.llvm.org/D48828
llvm-svn: 338485