platform/upstream/llvm.git
6 years agoRevert "[llvm-objcopy] [COFF] Implement --add-gnu-debuglink"
Martin Storsjo [Tue, 22 Jan 2019 12:35:34 +0000 (12:35 +0000)]
Revert "[llvm-objcopy] [COFF] Implement --add-gnu-debuglink"

This reverts commit r351801, as it caused errors on (so far)
ppc64be and aarch64 buildbots - the reason is yet unknown.

llvm-svn: 351811

6 years ago[CostModel][X86] Add ICMP Predicate specific costs
Simon Pilgrim [Tue, 22 Jan 2019 12:29:38 +0000 (12:29 +0000)]
[CostModel][X86] Add ICMP Predicate specific costs

First step towards PR40376, this patch adds support for getCmpSelInstrCost to use the (optional) Instruction CmpInst predicate to indicate the type of integer comparison we're performing and alter the costs accordingly.

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

llvm-svn: 351810

6 years ago[clangd] Fix the `-Wtype-limits` warning, NFC
Haojian Wu [Tue, 22 Jan 2019 12:21:25 +0000 (12:21 +0000)]
[clangd] Fix the `-Wtype-limits` warning, NFC

The assertion is always true, and triggers a compiler warning, so remove it.

llvm-svn: 351809

6 years agoFix/unify top comment in lib/Analysis/PolyhedralInfo.cpp
Michal Gorny [Tue, 22 Jan 2019 12:18:38 +0000 (12:18 +0000)]
Fix/unify top comment in lib/Analysis/PolyhedralInfo.cpp

Change the top comment in PolyhedralInfo.cpp to use // instead of ///,
similarly to headers in other files.  This fixes the issue of copyright
line exceeding textwidth and triggering polly-check-format45 failure,
e.g. seen here:

http://lab.llvm.org:8011/builders/lldb-amd64-ninja-netbsd8/builds/18293/steps/run%20unit%20tests/logs/stdio

llvm-svn: 351808

6 years ago[X86][SSE] Add selective commutation support for insertps (PR40340)
Simon Pilgrim [Tue, 22 Jan 2019 12:17:48 +0000 (12:17 +0000)]
[X86][SSE] Add selective commutation support for insertps (PR40340)

When we are inserting 1 "inline" element, and zeroing 2 of the other elements then we can safely commute the insertps source inputs to improve memory folding.

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

llvm-svn: 351807

6 years ago[RISCV] Quick fix for PR40333
Alex Bradbury [Tue, 22 Jan 2019 12:11:53 +0000 (12:11 +0000)]
[RISCV] Quick fix for PR40333

Avoid the infinite loop caused by the target DAG combine converting ANYEXT to
SIGNEXT and the target-independent DAG combine logic converting back to
ANYEXT. Do this by not adding the new node to the worklist.

Committing directly as this definitely doesn't make the problem any worse, and
I intend to follow-up with a patch that avoids this custom combiner logic
altogether and just lowers the i32 operations to a target-specific
SelectionDAG node. This should be easier to reason about and improve codegen
quality in some cases (though may miss out on some later DAG combines).

llvm-svn: 351806

6 years ago[LoopPredication] Support guards expressed as branches by widenable condition
Max Kazantsev [Tue, 22 Jan 2019 11:49:06 +0000 (11:49 +0000)]
[LoopPredication] Support guards expressed as branches by widenable condition

This patch adds support of guards expressed as branches by widenable
conditions in Loop Predication.

Differential Revision: https://reviews.llvm.org/D56081
Reviewed By: reames

llvm-svn: 351805

6 years ago[X86] Add test for matchAddressRecursively's MUL handling
Simon Pilgrim [Tue, 22 Jan 2019 11:39:21 +0000 (11:39 +0000)]
[X86] Add test for matchAddressRecursively's MUL handling

Noticed in code coverage tests that this isn't tested.

llvm-svn: 351804

6 years ago[NFC] Add function to parse widenable conditional branches
Max Kazantsev [Tue, 22 Jan 2019 11:21:32 +0000 (11:21 +0000)]
[NFC] Add function to parse widenable conditional branches

llvm-svn: 351803

6 years ago[llvm-objcopy] [COFF] Implement --add-gnu-debuglink
Martin Storsjo [Tue, 22 Jan 2019 10:58:18 +0000 (10:58 +0000)]
[llvm-objcopy] [COFF] Implement --add-gnu-debuglink

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

llvm-svn: 351801

6 years ago[llvm-objcopy] [COFF] Update symbol indices in weak externals
Martin Storsjo [Tue, 22 Jan 2019 10:58:09 +0000 (10:58 +0000)]
[llvm-objcopy] [COFF] Update symbol indices in weak externals

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

llvm-svn: 351800

6 years ago[llvm-objcopy] Consistently use createStringError instead of make_error<StringError>
Martin Storsjo [Tue, 22 Jan 2019 10:57:59 +0000 (10:57 +0000)]
[llvm-objcopy] Consistently use createStringError instead of make_error<StringError>

This was requested in the review of D57006.

Also add missing quotes around symbol names in error messages.

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

llvm-svn: 351799

6 years ago[NFC][llvm-readobj]Normalise --/- inconsistency in test options
James Henderson [Tue, 22 Jan 2019 10:57:21 +0000 (10:57 +0000)]
[NFC][llvm-readobj]Normalise --/- inconsistency in test options

llvm-svn: 351798

6 years ago[X86] HADDPS/HADDPD scalar lowering was added at rL350421
Simon Pilgrim [Tue, 22 Jan 2019 10:49:41 +0000 (10:49 +0000)]
[X86] HADDPS/HADDPD scalar lowering was added at rL350421

llvm-svn: 351797

6 years agoRevert r351778: IR: Add fp operations to atomicrmw
Chandler Carruth [Tue, 22 Jan 2019 10:29:58 +0000 (10:29 +0000)]
Revert r351778: IR: Add fp operations to atomicrmw

This broke the RISCV build, and even with that fixed, one of the RISCV
tests behaves surprisingly differently with asserts than without,
leaving there no clear test pattern to use. Generally it seems bad for
hte IR to differ substantially due to asserts (as in, an alloca is used
with asserts that isn't needed without!) and nothing I did simply would
fix it so I'm reverting back to green.

This also required reverting the RISCV build fix in r351782.

llvm-svn: 351796

6 years ago[llvm-symbolizer] Add support for --basenames/-s
James Henderson [Tue, 22 Jan 2019 10:24:32 +0000 (10:24 +0000)]
[llvm-symbolizer] Add support for --basenames/-s

This fixes https://bugs.llvm.org/show_bug.cgi?id=40068.

--basenames is a GNU addr2line switch which strips the directory names
from the file path in the output.

Reviewed by: ruiu

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

llvm-svn: 351795

6 years ago[NFC] Factor out some reusable logic
Max Kazantsev [Tue, 22 Jan 2019 10:13:36 +0000 (10:13 +0000)]
[NFC] Factor out some reusable logic

llvm-svn: 351794

6 years ago[clangd] NFC: Use buildCompilerInvocation in CodeComplete
Kadir Cetinkaya [Tue, 22 Jan 2019 09:58:53 +0000 (09:58 +0000)]
[clangd] NFC: Use buildCompilerInvocation in CodeComplete

Reviewers: ilya-biryukov, sammccall

Reviewed By: sammccall

Subscribers: ioeric, MaskRay, jkorous, arphaman, cfe-commits

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

llvm-svn: 351793

6 years ago[clangd] Support clang-tidy configuration in clangd.
Haojian Wu [Tue, 22 Jan 2019 09:39:05 +0000 (09:39 +0000)]
[clangd] Support clang-tidy configuration in clangd.

Summary:
This patch adds some basic supports for clang-tidy configurations in clangd:
      - clangd will respect .clang-tidy configurations for each file
      - we don't aim to support all clang-tidy options in clangd, only a
        small subset of condfigurations (options related to which checks will be
        enabled) are supported.
      - add a `clang-tidy-checks` CLI option that can override options from
        .clang-tidy file

Reviewers: ilya-biryukov, sammccall

Reviewed By: sammccall

Subscribers: javed.absar, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 351792

6 years ago[NFC] Add detector for guards expressed as branch by widenable conditions
Max Kazantsev [Tue, 22 Jan 2019 09:36:22 +0000 (09:36 +0000)]
[NFC] Add detector for guards expressed as branch by widenable conditions

This patch adds a function to detect guards expressed in explicit control
flow form as branch by `and` with widenable condition intrinsic call:

    %wc = call i1 @llvm.experimental.widenable.condition()
    %guard_cond = and i1, %some_cond, %wc
    br i1 %guard_cond, label %guarded, label %deopt

  deopt:
    <maybe some non-side-effecting instructions>
    deoptimize()

This form can be used as alternative to implicit control flow guard
representation expressed by `experimental_guard` intrinsic.

Differential Revision: https://reviews.llvm.org/D56074
Reviewed By: reames

llvm-svn: 351791

6 years ago[LLD][ELF]Fix tests for D56910
James Henderson [Tue, 22 Jan 2019 09:35:47 +0000 (09:35 +0000)]
[LLD][ELF]Fix tests for D56910

r351789 changes the output of llvm-readelf --dyn-symbols. This causes 3
LLD tests to break. This patch fixes them.

Reviewed by: ruiu

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

llvm-svn: 351790

6 years ago[llvm-readelf]Revert --dyn-symbols behaviour to make it GNU compatible, and add new...
James Henderson [Tue, 22 Jan 2019 09:35:35 +0000 (09:35 +0000)]
[llvm-readelf]Revert --dyn-symbols behaviour to make it GNU compatible, and add new --hash-symbols switch for old behaviour

In r287786, the behaviour of --dyn-symbols in llvm-readelf (but not
llvm-readobj) was changed to print the dynamic symbols as derived from
the hash table, rather than to print the dynamic symbol table contents
directly. The original change was initially submitted without review,
and some comments were made on the commit mailing list implying that the
new behavious is GNU compatible. I argue that it is not:

  1) It does not include a null symbol.
  2) It prints the symbols based on an order derived from the hash
     table.
  3) It prints an extra column indicating which bucket it came from.
     This could break parsers that expect a fixed number of columns,
     with the first column being the symbol index.
  4) If the input happens to have both .hash and .gnu.hash section, it
     prints interpretations of them both, resulting in most symbols
     being printed twice.
  5) There is no way of just printing the raw dynamic symbol table,
     because --symbols also prints the static symbol table.

This patch reverts the --dyn-symbols behaviour back to its old behaviour
of just printing the contents of the dynamic symbol table, similar to
what is printed by --symbols. As the hashed interpretation is still
desirable to validate the hash table, it puts it under a new switch
"--hash-symbols". This is a no-op on all output forms except for GNU
output style for ELF. If there is no hash table, it does nothing,
unlike the previous behaviour which printed the raw dynamic symbol
table, since the raw dynsym is available under --dyn-symbols.

The yaml input for the test is based on that in
test/tools/llvm-readobj/demangle.test, but stripped down to the bare
minimum to provide a valid dynamic symbol.

Note: some LLD tests needed updating. I will commit a separate patch for
those.

Reviewed by: grimar, rupprecht

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

llvm-svn: 351789

6 years ago[clangd] Filter out plugin related flags and move all commandline manipulations into...
Kadir Cetinkaya [Tue, 22 Jan 2019 09:10:20 +0000 (09:10 +0000)]
[clangd] Filter out plugin related flags and move all commandline manipulations into OverlayCDB.

Summary:
Some projects make use of clang plugins when building, but clangd is
not aware of those plugins therefore can't work with the same compile command
arguments.

There were multiple places clangd performed commandline manipulations,
 this one also moves them all into OverlayCDB.

Reviewers: ilya-biryukov

Subscribers: klimek, sammccall, ioeric, MaskRay, jkorous, arphaman, cfe-commits

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

llvm-svn: 351788

6 years agoRevert "Remove static_assert(value == std::is_trivially_copyable<T>::value)"
Vitaly Buka [Tue, 22 Jan 2019 07:22:45 +0000 (07:22 +0000)]
Revert "Remove static_assert(value == std::is_trivially_copyable<T>::value)"

Upgraded the bot as workaround.

This reverts commit r351784.

llvm-svn: 351786

6 years ago[RISCV][NFC] Add break to case statement in RISCVDAGToDAGISel::Select
Alex Bradbury [Tue, 22 Jan 2019 07:22:00 +0000 (07:22 +0000)]
[RISCV][NFC] Add break to case statement in RISCVDAGToDAGISel::Select

The break isn't strictly needed yet as there is no subsequent entry in the
case. But adding to prevent mistakes further down the road.

llvm-svn: 351785

6 years agoRemove static_assert(value == std::is_trivially_copyable<T>::value)
Vitaly Buka [Tue, 22 Jan 2019 06:26:50 +0000 (06:26 +0000)]
Remove static_assert(value == std::is_trivially_copyable<T>::value)

This fails to compile with clang ang libstdc++ 4.6

llvm-svn: 351784

6 years ago[safestack] Return syscalls for mmap, munmap and mprotect
Vitaly Buka [Tue, 22 Jan 2019 05:23:48 +0000 (05:23 +0000)]
[safestack] Return syscalls for mmap, munmap and mprotect

This function can be already intercepted by instrumented code.

llvm-svn: 351783

6 years ago[RISCV] Fix build after r351778
Alex Bradbury [Tue, 22 Jan 2019 05:06:57 +0000 (05:06 +0000)]
[RISCV] Fix build after r351778

Also add a comment to explain the expansion strategy for atomicrmw
{fadd,fsub}.

llvm-svn: 351782

6 years agobreakpad: Add FUNC records to the symtab
Pavel Labath [Tue, 22 Jan 2019 04:56:31 +0000 (04:56 +0000)]
breakpad: Add FUNC records to the symtab

This patch extends SymbolFileBreakpad::AddSymbols to include the symbols
from the FUNC records too. These symbols come from the debug info and
have a size associated with them, so they are given preference in case
there is a PUBLIC record for the same address.

To achieve this, I first pre-process the symbols into a temporary
DenseMap, and then insert the uniqued symbols into the module's symtab.

Reviewers: clayborg, lemo, zturner

Reviewed By: clayborg

Subscribers: lldb-commits

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

llvm-svn: 351781

6 years ago[Test] Fix up tests affected by the new LLVM header.
Jonas Devlieghere [Tue, 22 Jan 2019 03:50:44 +0000 (03:50 +0000)]
[Test] Fix up tests affected by the new LLVM header.

The new LLVM header is one line shorter than the old one, which lead to
some test failures. Ideally tests should rely on line numbers for
breakpoints or output, but that's a different discussion. Hopefully this
turns the bots green again.

llvm-svn: 351779

6 years agoIR: Add fp operations to atomicrmw
Matt Arsenault [Tue, 22 Jan 2019 03:32:36 +0000 (03:32 +0000)]
IR: Add fp operations to atomicrmw

Add just fadd/fsub for now.

llvm-svn: 351778

6 years ago[ARM] Combine ands+lsls to lsls+lsrs for Thumb1.
Eli Friedman [Tue, 22 Jan 2019 01:51:37 +0000 (01:51 +0000)]
[ARM] Combine ands+lsls to lsls+lsrs for Thumb1.

This patch may seem familiar... but my previous patch handled the
equivalent lsls+and, not this case.  Usually instcombine puts the
"and" after the shift, so this case doesn't come up. However, if the
shift comes out of a GEP, it won't get canonicalized by instcombine,
and DAGCombine doesn't have an equivalent transform.

This also modifies isDesirableToCommuteWithShift to suppress DAGCombine
transforms which would make the overall code worse.

I'm not really happy adding a bunch of code to handle this, but it would
probably be tricky to substantially improve the behavior of DAGCombine
here.

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

llvm-svn: 351776

6 years ago[CVP] Use LVI to constant fold deopt operands
Philip Reames [Tue, 22 Jan 2019 01:34:33 +0000 (01:34 +0000)]
[CVP] Use LVI to constant fold deopt operands

Deopt operands are generally intended to record information about a site in code with minimal perturbation of the surrounding code. Idiomatically, they also tend to appear down rare paths. Putting these together, we have an obvious case for extending CVP w/deopt operand constant folding. Arguably, we should be doing this for all operands on all instructions, but that's definitely a much larger and risky change.

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

llvm-svn: 351774

6 years agoUpdated issue 3144
Marshall Clow [Tue, 22 Jan 2019 01:05:58 +0000 (01:05 +0000)]
Updated issue 3144

llvm-svn: 351773

6 years ago[LangRef] Clarify semantics of volatile operations.
Eli Friedman [Tue, 22 Jan 2019 00:42:20 +0000 (00:42 +0000)]
[LangRef] Clarify semantics of volatile operations.

Specifically, clarify the following:

1. Volatile load and store may access addresses that are not memory.
2. Volatile load and store do not modify arbitrary memory.
3. Volatile load and store do not trap.

Prompted by recent volatile discussion on llvmdev.

Currently, there's sort of a split in the source code about whether
volatile operations are allowed to trap; this resolves that dispute in
favor of not allowing them to trap.

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

llvm-svn: 351772

6 years ago[safestack] Fix NetBSD build
Vitaly Buka [Tue, 22 Jan 2019 00:39:59 +0000 (00:39 +0000)]
[safestack] Fix NetBSD build

llvm-svn: 351771

6 years agoUpdate with issues to be moved in San Diego
Marshall Clow [Tue, 22 Jan 2019 00:31:09 +0000 (00:31 +0000)]
Update with issues to be moved in San Diego

llvm-svn: 351770

6 years agoGlobalISel: Fix out of bounds crashes in verifier
Matt Arsenault [Tue, 22 Jan 2019 00:29:37 +0000 (00:29 +0000)]
GlobalISel: Fix out of bounds crashes in verifier

llvm-svn: 351769

6 years ago[AArch64] Add patterns for zext/sext of shift amount.
Eli Friedman [Tue, 22 Jan 2019 00:21:35 +0000 (00:21 +0000)]
[AArch64] Add patterns for zext/sext of shift amount.

Not sure this is the best fix, but it saves an instruction for certain
constructs involving variable shifts.

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

llvm-svn: 351768

6 years agoAMDGPU/GlobalISel: Legalize more fp<->int conversions
Matt Arsenault [Tue, 22 Jan 2019 00:20:17 +0000 (00:20 +0000)]
AMDGPU/GlobalISel: Legalize more fp<->int conversions

llvm-svn: 351767

6 years ago[CodeGen] Always use string computed in Sema for PredefinedExpr
Eli Friedman [Tue, 22 Jan 2019 00:11:17 +0000 (00:11 +0000)]
[CodeGen] Always use string computed in Sema for PredefinedExpr

We can't use any other string, anyway, because its type wouldn't
match the type of the PredefinedExpr.

With this change, we don't compute a "nice" name for the __func__ global
when it's used in the initializer for a constant. This doesn't seem like
a great loss, and I'm not sure how to fix it without either storing more
information in the AST, or somehow threading through the information
from ExprConstant.cpp.

This could break some situations involving BlockDecl; currently,
CodeGenFunction::EmitPredefinedLValue has some logic to intentionally
emit a string different from what Sema computed.  This code skips that
logic... but that logic can't work correctly in general anyway.  (For
example, sizeof(__func__) returns the wrong result.) Hopefully this
doesn't affect practical code.

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

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

llvm-svn: 351766

6 years agoDocument toolchain update policy
JF Bastien [Mon, 21 Jan 2019 23:53:52 +0000 (23:53 +0000)]
Document toolchain update policy

Summary:
Capture the current agreed-upon toolchain update policy based on the following
discussions:

  - LLVM dev meeting 2018 BoF "Migrating to C++14, and beyond!"
    llvm.org/devmtg/2018-10/talk-abstracts.html#bof3
  - A Short Policy Proposal Regarding Host Compilers
    lists.llvm.org/pipermail/llvm-dev/2018-May/123238.html
  - Using C++14 code in LLVM (2018)
    lists.llvm.org/pipermail/llvm-dev/2018-May/123182.html
  - Using C++14 code in LLVM (2017)
    lists.llvm.org/pipermail/llvm-dev/2017-October/118673.html
  - Using C++14 code in LLVM (2016)
    lists.llvm.org/pipermail/llvm-dev/2016-October/105483.html
  - Document and Enforce new Host Compiler Policy
    llvm.org/D47073
  - Require GCC 5.1 and LLVM 3.5 at a minimum
    llvm.org/D46723

Subscribers: jkorous, dexonsmith, llvm-commits

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

llvm-svn: 351765

6 years ago[x86] add another test for xor with undefs; NFC
Sanjay Patel [Mon, 21 Jan 2019 22:12:35 +0000 (22:12 +0000)]
[x86] add another test for xor with undefs; NFC

llvm-svn: 351764

6 years ago[x86] add tests for vector ops with undef lanes; NFC
Sanjay Patel [Mon, 21 Jan 2019 21:52:27 +0000 (21:52 +0000)]
[x86] add tests for vector ops with undef lanes; NFC

llvm-svn: 351763

6 years ago[X86] Use X86ISD::VFPROUND instead of ISD::FP_ROUND for 256 and 512 bit cvtpd2ps...
Craig Topper [Mon, 21 Jan 2019 20:14:09 +0000 (20:14 +0000)]
[X86] Use X86ISD::VFPROUND instead of ISD::FP_ROUND for 256 and 512 bit cvtpd2ps intrinsics.

Summary:
Use X86ISD::VFPROUND in the instruction isel patterns. Add new patterns for ISD::FP_ROUND to maintain support for fptrunc in IR.

In the process I found a couple duplicate isel patterns which I also deleted in this patch.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: llvm-commits

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

llvm-svn: 351762

6 years ago[X86] Change avx512 COMPRESS and EXPAND lowering to use a single masked node instead...
Craig Topper [Mon, 21 Jan 2019 20:02:28 +0000 (20:02 +0000)]
[X86] Change avx512 COMPRESS and EXPAND lowering to use a single masked node instead of expand/compress+select.

Summary:
For compress, a select node doesn't semantically reflect the behavior of the instruction. The mask would have holes in it, but the resulting write is to contiguous elements at the bottom of the vector.

Furthermore, as far as the compressing and expanding is concerned the behavior is depended on the mask. You can't just have an expand/compress node that only reads the input vector. That node would have no meaning by itself.

This all only works because we pattern match the compress/expand+select back to the instruction. But conceivably an optimization of the select could break the pattern and leave something meaningless.

This patch modifies the expand and compress node to take the mask and passthru as additional inputs and gets rid of the select all together.

Reviewers: RKSimon, spatel

Reviewed By: RKSimon

Subscribers: llvm-commits

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

llvm-svn: 351761

6 years agoFix test after AST dump output change
Stephen Kelly [Mon, 21 Jan 2019 19:18:10 +0000 (19:18 +0000)]
Fix test after AST dump output change

llvm-svn: 351760

6 years ago[AMDGPU] Fixed hazard recognizer to walk predecessors
Stanislav Mekhanoshin [Mon, 21 Jan 2019 19:11:26 +0000 (19:11 +0000)]
[AMDGPU] Fixed hazard recognizer to walk predecessors

Fixes two problems with GCNHazardRecognizer:
1. It only scans up to 5 instructions emitted earlier.
2. It does not take control flow into account. An earlier instruction
from the previous basic block is not necessarily a predecessor.
At the same time a real predecessor block is not scanned.

The patch provides a way to distinguish between scheduler and
hazard recognizer mode. It is OK to work with emitted instructions
in the scheduler because we do not really know what will be emitted
later and its order. However, when pass works as a hazard recognizer
the schedule is already finalized, and we have full access to the
instructions for the whole function, so we can properly traverse
predecessors and their instructions.

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

llvm-svn: 351759

6 years agogn build: Stop passing -DLLVM_LIBXML2_ENABLED to some targets
Nico Weber [Mon, 21 Jan 2019 18:59:11 +0000 (18:59 +0000)]
gn build: Stop passing -DLLVM_LIBXML2_ENABLED to some targets

This is a remnant from before the gn build had a working config.h.

Defining LLVM_LIBXML2_ENABLED only for targets that depend on build/libs/xml is
nice in that only some of the codebase needs to be rebuilt when
llvm_enable_libxml2 changes -- but config.h already defines it and defining it
there and then redundantly a second time for some targets is worse than having
it just in config.h.

No behavior change.

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

llvm-svn: 351758

6 years agogn build: Merge r351627, r351548, r351701
Nico Weber [Mon, 21 Jan 2019 18:56:39 +0000 (18:56 +0000)]
gn build: Merge r351627, r351548, r351701

llvm-svn: 351757

6 years agoFix compilation error with gcc 4.8
Pavel Labath [Mon, 21 Jan 2019 18:21:03 +0000 (18:21 +0000)]
Fix compilation error with gcc 4.8

This version of gcc seems to be having issues with raw literals inside macro
arguments. I change the string to use regular string literals instead.

llvm-svn: 351756

6 years ago[X86][BtVer2] Update latency of mmx horizontal operations
Simon Pilgrim [Mon, 21 Jan 2019 18:04:25 +0000 (18:04 +0000)]
[X86][BtVer2] Update latency of mmx horizontal operations

D56777 added +1cy local forwarding penalty for horizontal operations, but this penalty only affects sse2/xmm variants, the mmx variants don't suffer the penalty.

Confirmed with @andreadb

llvm-svn: 351755

6 years ago[AArch64] add more tests for buildvec to shuffle transform; NFC
Sanjay Patel [Mon, 21 Jan 2019 17:46:35 +0000 (17:46 +0000)]
[AArch64] add more tests for buildvec to shuffle transform; NFC

These are copied from the sibling x86 file. I'm not sure which
of the current outputs (if any) is considered optimal, but
someone more familiar with AArch may want to take a look.

llvm-svn: 351754

6 years ago[DAGCombiner] fix crash when converting build vector to shuffle
Sanjay Patel [Mon, 21 Jan 2019 17:30:14 +0000 (17:30 +0000)]
[DAGCombiner] fix crash when converting build vector to shuffle

The regression test is reduced from the example shown in D56281.
This does raise a question as noted in the test file: do we want
to handle this pattern? I don't have a motivating example for
that on x86 yet, but it seems like we could have that pattern
there too, so we could avoid the back-and-forth using a shuffle.

llvm-svn: 351753

6 years ago[test] Pass -ccc-install-dir in mac compilation db test
Michal Gorny [Mon, 21 Jan 2019 17:05:43 +0000 (17:05 +0000)]
[test] Pass -ccc-install-dir in mac compilation db test

Pass -ccc-install-dir explicitly as the compilation database code does
not pass argv[0] to getMainExecutable(), while some systems require it
to return the correct path.  Since the relevant code is apparently only
applicable to Darwin, just pass correct -ccc-install-dir to make
the tests pass on *BSD systems.

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

llvm-svn: 351752

6 years ago[clang-tidy] Work around http://llvm.org/PR40392
Alexander Kornienko [Mon, 21 Jan 2019 16:26:54 +0000 (16:26 +0000)]
[clang-tidy] Work around http://llvm.org/PR40392

The readability-else-after-return check should be smarter about cases where the
variable defined in the condition is used in the `else` branch. This patch makes
it just ignore such cases, but alternative solutions may be better (added a
FIXME).

llvm-svn: 351751

6 years agoMark the lambda function pointer conversion operator as noexcept.
Aaron Ballman [Mon, 21 Jan 2019 16:25:08 +0000 (16:25 +0000)]
Mark the lambda function pointer conversion operator as noexcept.

This implements CWG DR 1722 and fixes PR40309. Patch by Ignat Loskutov.

llvm-svn: 351750

6 years agoRegenerating the C++ DR status page from the latest Core issues list.
Aaron Ballman [Mon, 21 Jan 2019 16:21:14 +0000 (16:21 +0000)]
Regenerating the C++ DR status page from the latest Core issues list.

llvm-svn: 351749

6 years agoNFC: fixed formatting to be consistent across the file
Andrey Churbanov [Mon, 21 Jan 2019 16:11:43 +0000 (16:11 +0000)]
NFC: fixed formatting to be consistent across the file

llvm-svn: 351748

6 years ago[OpenCL] Allow address spaces as method qualifiers.
Anastasia Stulova [Mon, 21 Jan 2019 16:01:38 +0000 (16:01 +0000)]
[OpenCL] Allow address spaces as method qualifiers.

Methods can now be qualified with address spaces to prevent
undesirable conversions to generic or to provide custom
implementation to be used if the object is located in certain
memory segments.

This commit extends parsing and standard C++ overloading to
work for an address space of a method (i.e. implicit 'this'
parameter).

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

llvm-svn: 351747

6 years ago[Analyzer] Remove extra blank line from Iterator Checker (test commit)
Adam Balogh [Mon, 21 Jan 2019 15:31:23 +0000 (15:31 +0000)]
[Analyzer] Remove extra blank line from Iterator Checker (test commit)

llvm-svn: 351746

6 years agoFixed https://reviews.llvm.org/D55078 broken Fortran fixed form.
Andrey Churbanov [Mon, 21 Jan 2019 15:30:31 +0000 (15:30 +0000)]
Fixed https://reviews.llvm.org/D55078 broken Fortran fixed form.

Long lines split in order to obey Fortran fixed form compilation.

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

llvm-svn: 351745

6 years ago[NFC] Fix comparison warning issues by MSVC
Johannes Doerfert [Mon, 21 Jan 2019 14:23:46 +0000 (14:23 +0000)]
[NFC] Fix comparison warning issues by MSVC

llvm-svn: 351744

6 years ago[clang] add tests to ExprMutAnalyzer that reproduced a crash in ASTMatchers
Jonas Toth [Mon, 21 Jan 2019 13:26:18 +0000 (13:26 +0000)]
[clang] add tests to ExprMutAnalyzer that reproduced a crash in ASTMatchers

Summary:
This patch adds two unit-tests that are the result of reducing a crashing TU
when running ExprMutAnalyzer over it. They are added only to ensure the regression
that has been fixed with https://reviews.llvm.org/D56444 don't creep back.

Reviewers: aaron.ballman, sammccall, rsmith, george.karpenkov

Reviewed By: sammccall

Subscribers: baloghadamsoftware, a.sidorin, Szelethus, donat.nagy, dkrupp, cfe-commits

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

llvm-svn: 351743

6 years ago[X86][BtVer2] Update the WriteLoad latency.
Andrea Di Biagio [Mon, 21 Jan 2019 12:04:10 +0000 (12:04 +0000)]
[X86][BtVer2] Update the WriteLoad latency.

r327630 introduced new write definitions for float/vector loads.
Before that revision, WriteLoad was used by both integer/float (scalar/vector)
load. So, WriteLoad had to conservatively declare a latency to 5cy. That is
because the load-to-use latency for float/vector load is 5cy.

Now that we have dedicated writes for float/vector loads, there is no reason why
we should keep the latency of WriteLoad to 5cy. At the moment, WriteLoad is only
used by scalar integer loads only; we can assume an optimstic 3cy latency for
them.
This patch changes that latency from 5cy to 3cy, and regenerates the affected
scheduling/mca tests.

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

llvm-svn: 351742

6 years ago[CostModel][X86] Add XOP icmp cost tests (PR40376)
Simon Pilgrim [Mon, 21 Jan 2019 11:33:52 +0000 (11:33 +0000)]
[CostModel][X86] Add XOP icmp cost tests (PR40376)

llvm-svn: 351741

6 years ago[AArch64] Use LL for 64-bit intrinsic arguments
Sam Parker [Mon, 21 Jan 2019 11:01:05 +0000 (11:01 +0000)]
[AArch64] Use LL for 64-bit intrinsic arguments

The ACLE states that 64-bit crc32, wsr, rsr and rbit operands are
uint64_t so we should have the clang builtin match this description
- which is what we already do for AArch32.

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

llvm-svn: 351740

6 years ago[ASTImporter] Add test for importing anonymous namespaces.
Raphael Isemann [Mon, 21 Jan 2019 10:14:31 +0000 (10:14 +0000)]
[ASTImporter] Add test for importing anonymous namespaces.

Reviewers: a.sidorin, a_sidorin

Reviewed By: a_sidorin

Subscribers: a_sidorin, martong, cfe-commits

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

llvm-svn: 351739

6 years ago[clang-tidy] Use getStripPluginsAdjuster
Kadir Cetinkaya [Mon, 21 Jan 2019 10:10:18 +0000 (10:10 +0000)]
[clang-tidy] Use getStripPluginsAdjuster

Summary: See rC351531 for the introduction of getStripPluginsAdjuster.

Reviewers: alexfh

Subscribers: xazax.hun, cfe-commits

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

llvm-svn: 351738

6 years ago[llvm-symbolizer] Add -no-demangle as alias for -demangle=false
Dmitry Venikov [Mon, 21 Jan 2019 10:00:57 +0000 (10:00 +0000)]
[llvm-symbolizer] Add -no-demangle as alias for -demangle=false

Summary: Provides -no-demangle as alias for -demangle=false. Motivation: https://bugs.llvm.org/show_bug.cgi?id=40075

Reviewers: jhenderson, ruiu

Reviewed By: jhenderson

Subscribers: erik.pilkington, rupprecht, llvm-commits

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

llvm-svn: 351735

6 years agoFix test after AST dump output change
Stephen Kelly [Mon, 21 Jan 2019 09:54:31 +0000 (09:54 +0000)]
Fix test after AST dump output change

llvm-svn: 351733

6 years agoFix typos throughout the license files that somehow I and my reviewers
Chandler Carruth [Mon, 21 Jan 2019 09:52:34 +0000 (09:52 +0000)]
Fix typos throughout the license files that somehow I and my reviewers
all missed!

Thanks to Alex Bradbury for pointing this out, and the fact that I never
added the intended `legacy` anchor to the developer policy. Add that
anchor too. With hope, this will cause the links to all resolve
successfully.

llvm-svn: 351731

6 years ago[HWASAN] Improve tag mismatch diagnostics
Eugene Leviant [Mon, 21 Jan 2019 09:51:10 +0000 (09:51 +0000)]
[HWASAN] Improve tag mismatch diagnostics

Reports correct size and tags when either size is not power of two
or offset to bad granule is not zero.

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

llvm-svn: 351730

6 years ago[X86] Remove and autoupgrade vpmovqd/vpmovwb intrinsics using trunc+select.
Craig Topper [Mon, 21 Jan 2019 08:16:59 +0000 (08:16 +0000)]
[X86] Remove and autoupgrade vpmovqd/vpmovwb intrinsics using trunc+select.

llvm-svn: 351729

6 years agoTentative fix for r351701 and gcc 6.2 build on ubuntu
Serge Guelton [Mon, 21 Jan 2019 07:44:52 +0000 (07:44 +0000)]
Tentative fix for r351701 and gcc 6.2 build on ubuntu

llvm-svn: 351728

6 years ago[NFC] Make getExpressionSize unsigned short
Max Kazantsev [Mon, 21 Jan 2019 07:36:55 +0000 (07:36 +0000)]
[NFC] Make getExpressionSize unsigned short

llvm-svn: 351727

6 years ago[NFC] Fix warnings in unit test of r351725
Max Kazantsev [Mon, 21 Jan 2019 07:27:47 +0000 (07:27 +0000)]
[NFC] Fix warnings in unit test of r351725

llvm-svn: 351726

6 years ago[SCEV][NFC] Introduces expression sizes estimation
Max Kazantsev [Mon, 21 Jan 2019 06:19:50 +0000 (06:19 +0000)]
[SCEV][NFC] Introduces expression sizes estimation

This patch introduces the field `ExpressionSize` in SCEV. This field is
calculated only once on SCEV creation, and it represents the complexity of
this SCEV from arithmetical point of view (not from the point of the number
of actual different SCEV nodes that are used in the expression). Roughly
saying, it is the number of operands and operations symbols when we print this
SCEV.

A formal definition is following: if SCEV `X` has operands
  `Op1`, `Op2`, ..., `OpN`,
then
  Size(X) = 1 + Size(Op1) + Size(Op2) + ... + Size(OpN).
Size of SCEVConstant and SCEVUnknown is one.

Expression size may be used as a universal way to limit SCEV transformations
for huge SCEVs. Currently, we have a bunch of options that represents various
limits (such as recursion depth limit) that may not make any sense from the
point of view of a LLVM users who is not familiar with SCEV internals, and all
these different options pursue one goal. A more general rule that may
potentially allow us to get rid of this redundancy in options is "do not make
transformations with SCEVs of huge size". It can apply to all SCEV traversals
and transformations that may need to visit a SCEV node more than once, hence
they are prone to combinatorial explosions.

This patch only introduces SCEV sizes calculation as NFC, its utilization will
be introduced in follow-up patches.

Differential Revision: https://reviews.llvm.org/D35989
Reviewed By: reames

llvm-svn: 351725

6 years ago[RISCV] Add R_RISCV_RELAX relocation to all possible relax candidates.
Kito Cheng [Mon, 21 Jan 2019 05:27:09 +0000 (05:27 +0000)]
[RISCV] Add R_RISCV_RELAX relocation to all possible relax candidates.

Summary:
Add R_RISCV_RELAX relocation to all possible relax candidates and
update corresponding testcase.

Reviewers: asb, apazos

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

llvm-svn: 351723

6 years ago[llgo]: fix compilation under current llvm
Kristina Brooks [Mon, 21 Jan 2019 04:36:43 +0000 (04:36 +0000)]
[llgo]: fix compilation under current llvm

Patch rL322965 changed how intrinsics for memset and memzero
were defined. This causes a regression in LLGO making it no
longer buidable. In addition to that one pass was renamed,
so this also addresses the pass naming disparity.

I removed all split stack related bits from this patch as
as asked.

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

llvm-svn: 351722

6 years ago[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough
Dylan McKay [Mon, 21 Jan 2019 04:32:02 +0000 (04:32 +0000)]
[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough

This updates the AVR Select8/Select16 expansion code so that, when
inserting the two basic blocks for true and false conditions, any
existing fallthrough on the previous block is preserved.

Prior to this patch, if the block before the Select pseudo fell through
to the subsequent block, two new basic blocks would be inserted at the
prior fallthrough point, changing the fallthrough destination.

The predecessor or successor lists were not updated, causing the
BranchFolding pass at -O1 and above the rearrange basic blocks, causing
an infinite loop. Not to mention the unconditional fallthrough to the
true block is incorrect in of itself.

This patch modifies the Select8/16 expansion so that, if inserting true
and false basic blocks at a fallthrough point, the implicit branch is
preserved by means of an explicit, unconditional branch to the previous
fallthrough destination.

Thanks to Carl Peto for reporting this bug.

This fixes avr-rust bug https://github.com/avr-rust/rust/issues/123.

llvm-svn: 351721

6 years ago[AVR] Enable emission of debug information
Dylan McKay [Mon, 21 Jan 2019 04:27:08 +0000 (04:27 +0000)]
[AVR] Enable emission of debug information

Prior to this, the code was missing AVR-specific relocation logic in
RelocVisitor.h.

This patch teaches RelocVisitor about R_AVR_16 and R_AVR_32.

Debug information is emitted in the final object file, and understood by
'avr-readelf --debug-dump' from AVR-GCC.

llvm-dwarfdump is yet to understand how to dump AVR DWARF symbols.

llvm-svn: 351720

6 years agoRevert "[AVR] Insert unconditional branch when inserting MBBs between blocks with...
Dylan McKay [Mon, 21 Jan 2019 02:46:13 +0000 (02:46 +0000)]
Revert "[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough"

This reverts commit r351718.

Carl pointed out that the unit test could be improved.

This patch will be recommitted once the test is made more resilient.

llvm-svn: 351719

6 years ago[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough
Dylan McKay [Mon, 21 Jan 2019 02:44:09 +0000 (02:44 +0000)]
[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough

This updates the AVR Select8/Select16 expansion code so that, when
inserting the two basic blocks for true and false conditions, any
existing fallthrough on the previous block is preserved.

Prior to this patch, if the block before the Select pseudo fell through
to the subsequent block, two new basic blocks would be inserted at the
prior fallthrough point, changing the fallthrough destination.

The predecessor or successor lists were not updated, causing the
BranchFolding pass at -O1 and above the rearrange basic blocks, causing
an infinite loop. Not to mention the unconditional fallthrough to the
true block is incorrect in of itself.

This patch modifies the Select8/16 expansion so that, if inserting true
and false basic blocks at a fallthrough point, the implicit branch is
preserved by means of an explicit, unconditional branch to the previous
fallthrough destination.

Thanks to Carl Peto for reporting this bug.

This fixes avr-rust bug https://github.com/avr-rust/rust/issues/123.

llvm-svn: 351718

6 years ago[fuzzer] Fix test checks broken after license header update
Vitaly Buka [Mon, 21 Jan 2019 02:22:06 +0000 (02:22 +0000)]
[fuzzer] Fix test checks broken after license header update

llvm-svn: 351717

6 years ago[safestack] Remove unsupported platforms
Vitaly Buka [Mon, 21 Jan 2019 02:21:59 +0000 (02:21 +0000)]
[safestack] Remove unsupported platforms

llvm-svn: 351716

6 years ago[safestack] Fix FreeBSD runtime build
Vitaly Buka [Mon, 21 Jan 2019 02:21:51 +0000 (02:21 +0000)]
[safestack] Fix FreeBSD runtime build

llvm-svn: 351715

6 years ago[libFuzzer][MSVC] Make Sanitizer Coverage MSVC-compatible
Jonathan Metzman [Mon, 21 Jan 2019 02:15:29 +0000 (02:15 +0000)]
[libFuzzer][MSVC] Make Sanitizer Coverage MSVC-compatible

Summary:
Make Sanitizer Coverage work when compiled work when compiler-rt
is compiled with MSVC.

The previous solution did not work for MSVC because MSVC tried to
align the .SCOV$CZ section even though we used
__declspec(align(1)) on its only symbol:
__stop___sancov_cntrs.
Because the counter array is composed
of 1 byte elements, it does not always end on an 8 or 4 byte
boundary. This means that padding was sometimes added to
added to align the next section, .SCOV$CZ.
Use a different strategy now: instead of only instructing
the compiler not to align the symbol, make the section
one byte long by making its only symbol a uint8_t, so that
the linker won't try to align it.

Reviewers: morehouse, rnk

Reviewed By: rnk

Subscribers: kubamracek

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

llvm-svn: 351714

6 years ago[ASan] On Darwin record global allocator pointer and size in introspection struct.
Dan Liew [Mon, 21 Jan 2019 01:41:12 +0000 (01:41 +0000)]
[ASan] On Darwin record global allocator pointer and size in introspection struct.

This implements `mi_extra_init(...)` for the ASan allocator on
Darwin and uses the `__lsan::GetAllocatorGlobalRange(...)` function
to retrieve the allocator pointer and size.

rdar://problem/45284065

llvm-svn: 351713

6 years agoOn Darwin add allocator address and size fields to
Dan Liew [Mon, 21 Jan 2019 01:41:08 +0000 (01:41 +0000)]
On Darwin add allocator address and size fields to
`sanitizer_malloc_introspection_t` and initialize them to zero.

We allow sanitizer implementations to perform different initialization
by defining `COMMON_MALLOC_HAS_EXTRA_INTROSPECTION_INIT` to be `1`
and providing an implementation of `mi_extra_init(...)`.

We use these changes in future patches to implement malloc zone enumeration.

rdar://problem/45284065

llvm-svn: 351712

6 years agoOn Darwin allow for sanitizer malloc implementations to provide a zone
Dan Liew [Mon, 21 Jan 2019 01:41:01 +0000 (01:41 +0000)]
On Darwin allow for sanitizer malloc implementations to provide a zone
enumerator.

This is done by defining `COMMON_MALLOC_HAS_ZONE_ENUMERATOR` to `1` and
then by providing an implementation of the `mi_enumerator(...)` function.
If a custom implementation isn't desired the macro is set to `0` which
causes a stub version (that fails) to be used.

Currently all Darwin sanitizers that have malloc implementations define
this to be `0` so there is no functionality change.

rdar://problem/45284065

llvm-svn: 351711

6 years ago[Driver] Don't pass default value to getCompilerRTArgString
Petr Hosek [Mon, 21 Jan 2019 01:34:09 +0000 (01:34 +0000)]
[Driver] Don't pass default value to getCompilerRTArgString

Using static library is already a default.

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

llvm-svn: 351710

6 years ago[CMake][Fuchsia] Drop -DNDEBUG, re-enable modules
Petr Hosek [Mon, 21 Jan 2019 01:06:50 +0000 (01:06 +0000)]
[CMake][Fuchsia] Drop -DNDEBUG, re-enable modules

-DNDEBUG is no longer needed now that we don't enable assertions,
modules should improve build times for the second stage.

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

llvm-svn: 351709

6 years ago[X86] Add missing test cases for some int/fp->fp conversion intrinsics with rounding...
Craig Topper [Sun, 20 Jan 2019 23:49:50 +0000 (23:49 +0000)]
[X86] Add missing test cases for some int/fp->fp conversion intrinsics with rounding mode. Use non-default rounding mode on some tests.

For some reason we were missing tests for several unmasked conversion intrinsics, but had their mask form.

Also use a non-default rounding mode on some tests to provide better coverage for a future patch.

llvm-svn: 351708

6 years agoFix test after AST dump output change
Stephen Kelly [Sun, 20 Jan 2019 23:46:30 +0000 (23:46 +0000)]
Fix test after AST dump output change

llvm-svn: 351707

6 years agoTentative fix for r351701 and gcc 6.2 build on ubuntu
Serge Guelton [Sun, 20 Jan 2019 23:43:37 +0000 (23:43 +0000)]
Tentative fix for r351701 and gcc 6.2 build on ubuntu

llvm-svn: 351706

6 years agoTentative fix for r351701 and gcc 6.2 build on ubuntu
Serge Guelton [Sun, 20 Jan 2019 23:06:45 +0000 (23:06 +0000)]
Tentative fix for r351701 and gcc 6.2 build on ubuntu

llvm-svn: 351705

6 years ago[safestack] Remove Darwin from supported platforms
Vitaly Buka [Sun, 20 Jan 2019 23:03:10 +0000 (23:03 +0000)]
[safestack] Remove Darwin from supported platforms

r339720 already disabled it in the driver

llvm-svn: 351704

6 years agoTry to port tests to AST dump changes
Stephen Kelly [Sun, 20 Jan 2019 22:56:02 +0000 (22:56 +0000)]
Try to port tests to AST dump changes

llvm-svn: 351703

6 years agoAdd missing test file
Serge Guelton [Sun, 20 Jan 2019 21:24:05 +0000 (21:24 +0000)]
Add missing test file

llvm-svn: 351702