OSDN Git Service

android-x86/external-llvm.git
7 years ago[InstCombine] add tests for bitcasted selects; NFC
Sanjay Patel [Tue, 15 Nov 2016 16:01:16 +0000 (16:01 +0000)]
[InstCombine] add tests for bitcasted selects; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286978 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[JumpThreading] Unfold selects that depend on the same condition"
Pablo Barrio [Tue, 15 Nov 2016 15:42:23 +0000 (15:42 +0000)]
Revert "[JumpThreading] Unfold selects that depend on the same condition"

This reverts commit ac54d0066c478a09c7cd28d15d0f9ff8af984afc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286976 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "[JumpThreading] Prevent non-deterministic use lists"
Pablo Barrio [Tue, 15 Nov 2016 15:42:17 +0000 (15:42 +0000)]
Revert "[JumpThreading] Prevent non-deterministic use lists"

This reverts commit f2c2f5354070469dac253373c66527ca971ddc66.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286975 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM] Make sure GlobalISel is only initialized once. NFCI
Diana Picus [Tue, 15 Nov 2016 15:38:15 +0000 (15:38 +0000)]
[ARM] Make sure GlobalISel is only initialized once. NFCI

Move some code inside the proper 'if' block to make sure it is only run once,
when the subtarget is first created. Things can still break if we use different
ARM target machines or if we have functions with different 'target-cpu' or
'target-features', we should fix that too in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286974 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[LoopVectorizer] When estimating reg usage, unused insts may "end" another use
Robert Lougher [Tue, 15 Nov 2016 14:27:33 +0000 (14:27 +0000)]
[LoopVectorizer] When estimating reg usage, unused insts may "end" another use

The register usage algorithm incorrectly treats instructions whose value is
not used within the loop (e.g. those that do not produce a value).

The algorithm first calculates the usages within the loop.  It iterates over
the instructions in order, and records at which instruction index each use
ends (in fact, they're actually recorded against the next index, as this is
when we want to delete them from the open intervals).

The algorithm then iterates over the instructions again, adding each
instruction in turn to a list of open intervals.  Instructions are then
removed from the list of open intervals when they occur in the list of uses
ended at the current index.

The problem is, instructions which are not used in the loop are skipped.
However, although they aren't used, the last use of a value may have been
recorded against that instruction index.  In this case, the use is not deleted
from the open intervals, which may then bump up the estimated register usage.

This patch fixes the issue by simply moving the "is used" check after the loop
which erases the uses at the current index.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286969 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PowerPC] Implement BE VSX load/store builtins - llvm portion.
Tony Jiang [Tue, 15 Nov 2016 14:25:56 +0000 (14:25 +0000)]
[PowerPC] Implement BE VSX load/store builtins - llvm portion.

This patch implements all the overloads for vec_xl_be and vec_xst_be. On BE,
they behaves exactly the same with vec_xl and vec_xst, therefore they are
simply implemented by defining a matching macro. On LE, they are implemented
by defining new builtins and intrinsics. For int/float/long long/double, it
is just a load (lxvw4x/lxvd2x) or store(stxvw4x/stxvd2x). For char/char/short,
we also need some extra shuffling before or after call the builtins to get the
desired BE order. For int128, simply call vec_xl or vec_xst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286967 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGet GlobalISel to build on Linux after r286407
Diana Picus [Tue, 15 Nov 2016 14:11:11 +0000 (14:11 +0000)]
Get GlobalISel to build on Linux after r286407

r286407 has introduced calls to llvm::AddLandingPadInfo, which lives in the
SelectionDAG component. Add it to LLVMBuild to avoid linker failures on Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286962 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][FastISel] Assert that we are dealing with arithmetic with overflow intrinsics...
Zvi Rackover [Tue, 15 Nov 2016 13:50:35 +0000 (13:50 +0000)]
[X86][FastISel] Assert that we are dealing with arithmetic with overflow intrinsics. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286961 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AMDGPU] TableGen: change individual instruction flags to bit type from bits<1>
Sam Kolton [Tue, 15 Nov 2016 13:39:07 +0000 (13:39 +0000)]
[AMDGPU] TableGen: change individual instruction flags to bit type from bits<1>

Summary: This is needed to be able to use this flags in InstrMappings.

Reviewers: tstellarAMD, vpykhtin

Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286960 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][FastISel] Fix lowering of overflow result on AVX512 targets
Zvi Rackover [Tue, 15 Nov 2016 13:29:23 +0000 (13:29 +0000)]
[X86][FastISel] Fix lowering of overflow result on AVX512 targets

    Summary:
    Fix a case where the overflow value of type i1, which is legal on AVX512, was assigned to a VK1 register class.
    We always want this value to be assigned to a GPR since the overflow return value is lowered to a SETO instruction.

    Fixes pr30981.

    Reviewers: mkuper, igorb, craig.topper, guyblank, qcolombet

    Subscribers: qcolombet, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286958 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoTest commit, remove trailing space.
Florian Hahn [Tue, 15 Nov 2016 13:28:42 +0000 (13:28 +0000)]
Test commit, remove trailing space.

This commit is used to test commit access.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286957 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoclang format include/llvm/Support/ELF.h. NFC.
Rafael Espindola [Tue, 15 Nov 2016 13:21:32 +0000 (13:21 +0000)]
clang format include/llvm/Support/ELF.h. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286956 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDWARFAbbreviationDeclaration.h: Fix a typo in r286924. [-Wdocumentation]
NAKAMURA Takumi [Tue, 15 Nov 2016 13:16:50 +0000 (13:16 +0000)]
DWARFAbbreviationDeclaration.h: Fix a typo in r286924. [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286954 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoIntroduce TLI predicative for base-relative Jump Tables.
Joerg Sonnenberger [Tue, 15 Nov 2016 12:39:46 +0000 (12:39 +0000)]
Introduce TLI predicative for base-relative Jump Tables.

For 64bit ABIs it is common practice to use relative Jump Tables with
potentially different relocation bases.  As the logic for the jump table
itself doesn't depend on the relocation base, make it easier for targets
to use the generic logic. Start by dropping the now redundant MIPS logic.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286951 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ARM] Add machine scheduler for Cortex-R52
Javed Absar [Tue, 15 Nov 2016 11:34:54 +0000 (11:34 +0000)]
[ARM] Add machine scheduler for Cortex-R52

This patch adds the Sched Machine Model for Cortex-R52.

Details of the pipeline and descriptions are in comments
in file ARMScheduleR52.td included in this patch.

Reviewers: rengolin, jmolloy

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286949 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix -Wunused introduced in r286945 for release builds.
Daniel Sanders [Tue, 15 Nov 2016 10:13:09 +0000 (10:13 +0000)]
Fix -Wunused introduced in r286945 for release builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286946 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[tablegen] Extract portions of AsmMatcherEmitter for re-use by another generator...
Daniel Sanders [Tue, 15 Nov 2016 09:51:02 +0000 (09:51 +0000)]
[tablegen] Extract portions of AsmMatcherEmitter for re-use by another generator. NFC.

Summary:
This change is preparation for a change that will allow targets to verify that the instructions
they emit meet the predicates they specify. This is useful to ensure that C++
legalization/lowering/instruction-selection doesn't incorrectly select code for a different
subtarget than intended. Such cases are not caught by the integrated assembler when emitting
instructions directly to an object file.

Reviewers: qcolombet

Subscribers: qcolombet, beanz, mgorny, llvm-commits, modocache

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286945 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[opt-viewer] Add support for libYAML for faster parsing
Adam Nemet [Tue, 15 Nov 2016 08:40:51 +0000 (08:40 +0000)]
[opt-viewer] Add support for libYAML for faster parsing

This results in a speed-up of over 6x on sqlite3.

Before:

$ time -p /org/llvm/utils/opt-viewer/opt-viewer.py ./MultiSource/Applications/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.opt.yaml html
  real 415.07
  user 410.00
  sys 4.66

After with libYAML:

$ time -p /org/llvm/utils/opt-viewer/opt-viewer.py ./MultiSource/Applications/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.opt.yaml html
  real 63.96
  user 60.03
  sys 3.67

I followed these steps to get libYAML working with PyYAML: http://rmcgibbo.github.io/blog/2013/05/23/faster-yaml-parsing-with-libyaml/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286942 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDAGCombiner: fix combine of trunc and select
Asaf Badouh [Tue, 15 Nov 2016 07:55:22 +0000 (07:55 +0000)]
DAGCombiner: fix combine of trunc and select

bugzilla:
https://llvm.org/bugs/show_bug.cgi?id=29002
pr29002

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286938 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoTableGen: Add operator !or
Matt Arsenault [Tue, 15 Nov 2016 06:49:28 +0000 (06:49 +0000)]
TableGen: Add operator !or

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286936 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][GlobalISel] Add minimal call lowering support to the IRTranslator
Zvi Rackover [Tue, 15 Nov 2016 06:34:33 +0000 (06:34 +0000)]
[X86][GlobalISel] Add minimal call lowering support to the IRTranslator

Summary:
    Add basic functionality to support call lowering for X86.
    Currently only supports functions which return void and take zero arguments.
    Inspired by commit 286573.

Reviewers: ab, qcolombet, t.p.northover

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286935 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AVX-512] Add an example test case for PR31018.
Craig Topper [Tue, 15 Nov 2016 05:21:55 +0000 (05:21 +0000)]
[AVX-512] Add an example test case for PR31018.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286934 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Add LLVM version number for each intrinsic handled by auto upgrade for age...
Craig Topper [Tue, 15 Nov 2016 05:04:51 +0000 (05:04 +0000)]
[X86] Add LLVM version number for each intrinsic handled by auto upgrade for age tracking.

One day we'd like to remove some of this autoupgrade support and it will be easier if we know how long some of it has been around.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286933 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Fix f16 fabs/fneg
Matt Arsenault [Tue, 15 Nov 2016 02:25:28 +0000 (02:25 +0000)]
AMDGPU: Fix f16 fabs/fneg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286931 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ORC] Work around an apparent modules/linkage issue.
Lang Hames [Tue, 15 Nov 2016 02:14:57 +0000 (02:14 +0000)]
[ORC] Work around an apparent modules/linkage issue.

<rdar://problem/29247092>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286930 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoSimplify identify_magic.
Rui Ueyama [Tue, 15 Nov 2016 01:57:05 +0000 (01:57 +0000)]
Simplify identify_magic.

This patch defines a memcmp-ish helper function to simplify identify_magic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286928 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoImprove DWARF parsing speed by improving DWARFAbbreviationDeclaration
Greg Clayton [Tue, 15 Nov 2016 01:23:06 +0000 (01:23 +0000)]
Improve DWARF parsing speed by improving DWARFAbbreviationDeclaration

This patch gets a DWARF parsing speed improvement by having DWARFAbbreviationDeclaration instances know if they have a fixed byte size. If an abbreviation has a fixed byte size that can be calculated given a DWARFUnit, then parsing a DIE becomes two steps: parse ULEB128 abbrev code, and then add constant size to the offset.

This patch also adds a fixed byte size to each DWARFAbbreviationDeclaration::AttributeSpec so that attributes can quickly skip their values if needed without the need to lookup the fixed for size.

Notable improvements:

- DWARFAbbreviationDeclaration::findAttributeIndex() now returns an Optional<uint32_t> instead of a uint32_t and we no longer have to look for the magic -1U return value
- Optional<uint32_t> DWARFAbbreviationDeclaration::findAttributeIndex(dwarf::Attribute attr) const;
- DWARFAbbreviationDeclaration now has a getAttributeValue() function that extracts an attribute value given a DIE offset that takes advantage of the DWARFAbbreviationDeclaration::AttributeSpec::ByteSize
- bool DWARFAbbreviationDeclaration::getAttributeValue(const uint32_t DIEOffset, const dwarf::Attribute Attr, const DWARFUnit &U, DWARFFormValue &FormValue) const;
- A DWARFAbbreviationDeclaration instance can return a fixed byte size for itself so DWARF parsing is faster:
- Optional<size_t> DWARFAbbreviationDeclaration::getFixedAttributesByteSize(const DWARFUnit &U) const;
- Any functions that used to take a "const DWARFUnit *U" that would crash if U was NULL now take a "const DWARFUnit &U" and are only called with a valid DWARFUnit

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286924 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix -Wswitch.
Rui Ueyama [Tue, 15 Nov 2016 00:58:50 +0000 (00:58 +0000)]
Fix -Wswitch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286920 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAdd a file magic for CL.exe's object file created with /GL.
Rui Ueyama [Tue, 15 Nov 2016 00:54:54 +0000 (00:54 +0000)]
Add a file magic for CL.exe's object file created with /GL.

This patch makes it possible to identify object files created by CL.exe
with /GL option. Such file contains Microsoft proprietary intermediate
code instead of target machine code to do LTO.

I need this to print out user-friendly error message from LLD.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286919 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ORC] Temporarily disable RPCUtils unit test.
Lang Hames [Tue, 15 Nov 2016 00:49:12 +0000 (00:49 +0000)]
[ORC] Temporarily disable RPCUtils unit test.

This broke s390x due to a bug in the QueueChannel implementation that led to it
infinite-looping. Disabling it while I look into a fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286917 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agollvm-strings: support the `-n` option
Saleem Abdulrasool [Tue, 15 Nov 2016 00:43:52 +0000 (00:43 +0000)]
llvm-strings: support the `-n` option

Permit specifying the match length (the `-n` or `--bytes` option).  The
deprecated `-[length]` form is not supported as an option.  This allows the
strings tool to display only the specified length strings rather than the
hardcoded default length of >= 4.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286914 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Set hasExtraSrcRegAllocReq on v_div_scale_*
Matt Arsenault [Tue, 15 Nov 2016 00:05:42 +0000 (00:05 +0000)]
AMDGPU: Set hasExtraSrcRegAllocReq on v_div_scale_*

This doesn't solve any problems I know about, but this should have
more conservative assumptions about the operands'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286913 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Fix formatting of 1/2pi immediate
Matt Arsenault [Tue, 15 Nov 2016 00:04:33 +0000 (00:04 +0000)]
AMDGPU: Fix formatting of 1/2pi immediate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286912 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoMIRParser: Add support for parsing vreg reg alloc hints
Tom Stellard [Tue, 15 Nov 2016 00:03:14 +0000 (00:03 +0000)]
MIRParser: Add support for parsing vreg reg alloc hints

Reviewers: qcolombet, MatzeB

Subscribers: wdng, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286911 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAvoid calling std::memcmp with nullptr
Vitaly Buka [Tue, 15 Nov 2016 00:01:40 +0000 (00:01 +0000)]
Avoid calling std::memcmp with nullptr

Summary:
UBSAN complains that this is undefined behavior.

We can assume that empty substring (N==1) always satisfy conditions. So
std::memcmp will be called only only for N > 1 and Str.size() > 0.

Reviewers: ruiu, zturner

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286910 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AArch64] Compute the Newton series for reciprocals natively
Evandro Menezes [Mon, 14 Nov 2016 23:29:01 +0000 (23:29 +0000)]
[AArch64] Compute the Newton series for reciprocals natively

Implement the Newton series for square root, its reciprocal and reciprocal
natively using the specialized instructions in AArch64 to perform each
series iteration.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286907 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoLinker: Remove unnecessary call to copyMetadata in IRLinker::linkGlobalVariable.
Peter Collingbourne [Mon, 14 Nov 2016 23:18:38 +0000 (23:18 +0000)]
Linker: Remove unnecessary call to copyMetadata in IRLinker::linkGlobalVariable.

This was causing us to create duplicate metadata on global variables.
Debug info test case by Adrian Prantl, additional test cases by me.

Fixes PR31012.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286905 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGlobalISel: add tests for G_ZEXT/G_SEXT to types smaller than 32-bits.
Tim Northover [Mon, 14 Nov 2016 22:50:22 +0000 (22:50 +0000)]
GlobalISel: add tests for G_ZEXT/G_SEXT to types smaller than 32-bits.

Support was accidentally added in r286407, but there were no tests at the time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286903 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InstCombine] add tests to show missing bitcast folds
Sanjay Patel [Mon, 14 Nov 2016 22:44:06 +0000 (22:44 +0000)]
[InstCombine] add tests to show missing bitcast folds

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286900 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRemove redundant uses of \brief.
Adrian Prantl [Mon, 14 Nov 2016 22:09:18 +0000 (22:09 +0000)]
Remove redundant uses of \brief.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286897 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDon't pass nullptr into memcpy
Vitaly Buka [Mon, 14 Nov 2016 22:05:19 +0000 (22:05 +0000)]
Don't pass nullptr into memcpy

Summary:
It's undefined according UBSAN.
Not sure which CL caused test failures, but seems writeBytes for empty buffer
should be OK.

Reviewers: rnk, zturner

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286896 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRegAllocGreedy: Properly initialize this pass, so that -run-pass will work
Tom Stellard [Mon, 14 Nov 2016 21:50:13 +0000 (21:50 +0000)]
RegAllocGreedy: Properly initialize this pass, so that -run-pass will work

Reviewers: qcolombet, MatzeB

Subscribers: wdng, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286895 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[tsan] Add support for C++ exceptions into TSan (call __tsan_func_exit during unwindi...
Kuba Brecka [Mon, 14 Nov 2016 21:41:13 +0000 (21:41 +0000)]
[tsan] Add support for C++ exceptions into TSan (call __tsan_func_exit during unwinding), LLVM part

This adds support for TSan C++ exception handling, where we need to add extra calls to __tsan_func_exit when a function is exitted via exception mechanisms. Otherwise the shadow stack gets corrupted (leaked). This patch moves and enhances the existing implementation of EscapeEnumerator that finds all possible function exit points, and adds extra EH cleanup blocks where needed.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286893 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "Revert "llvm-strings: support printing the filename""
Saleem Abdulrasool [Mon, 14 Nov 2016 21:10:41 +0000 (21:10 +0000)]
Revert "Revert "llvm-strings: support printing the filename""

Change the dynamic files to static in the hope that it will actually fix the
transient errors that Ive been unable to reproduce.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286891 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAdd a checkSymbolTable() method to the MachOObjectFile class.
Kevin Enderby [Mon, 14 Nov 2016 20:57:04 +0000 (20:57 +0000)]
Add a checkSymbolTable() method to the MachOObjectFile class.

The philosophy of the error checking in libObject for Mach-O files
is that the constructor will check the load commands so for their
tables the offsets and sizes are properly contained in the file.
But there is no checking of the entries of any of the tables.

For the contents of the tables themselves the methods accessing
the contents of the entries return errors as needed.  In some
cases this however makes it difficult or cumbersome to produce
a good error message which would include the tool name, file name,
archive member, and name of the architecture of a slice of a universal file
the error occurred in.

So idea is that there will be a method to check a table which can
be called up front before using it allowing a good error message
to be produced before a table is used.  And if only verification of
the Mach-O file and its tables are wanted a new possible method
checkAllTables() could be added to call all of the methods to
check all the tables at some time when such methods exist.

The checkSymbolTable() is the first of such methods to check
one of the Mach-O file tables.  This method initially will used in
llvm-objdump’s DisassembleMachO() routine before it gets the
section and symbol information.  As if there are problems with
the symbol table currently the error is first encountered by the
bool operator() in the SymbolSorter() struct which passed to
std::sort().  In this case there is no context as to the file name
the symbol which results a poor error message:

LLVM ERROR: truncated or malformed object (bad string index: 22 for symbol at index 1)

with the added call to the checkSymbolTable() method the
error message includes the tool name and file name:

llvm-objdump: 'macho-invalid-symbol-strx': truncated or malformed object (bad string table index: 22 past the end of string table, for symbol at index 1)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286887 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Hexagon] Give a predicate function a more meaningful name
Krzysztof Parzyszek [Mon, 14 Nov 2016 20:53:09 +0000 (20:53 +0000)]
[Hexagon] Give a predicate function a more meaningful name

Change "orisadd" to "IsOrAdd" to follow the naming conventions, and
change "isOrAdd" in the C++ code to "isOrEquivalentToAdd".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286886 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoARM: try to fix GCC 4.8 compilation again after r286881.
Tim Northover [Mon, 14 Nov 2016 20:31:53 +0000 (20:31 +0000)]
ARM: try to fix GCC 4.8 compilation again after r286881.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286882 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRecommit: ARM: sort register lists by encoding in push/pop instructions.
Tim Northover [Mon, 14 Nov 2016 20:28:24 +0000 (20:28 +0000)]
Recommit: ARM: sort register lists by encoding in push/pop instructions.

For example we were producing

    push {r8, r10, r11, r4, r5, r7, lr}

This is misleading (r4, r5 and r7 are actually pushed before the rest), and
other components (stack folding recently) often forget to deal with the extra
complexity coming from the different order, leading to miscompiles. Finally, we
warn about our own code in -no-integrated-as mode without this, which is really
not a good idea.

Fixed usage of std::sort so that we (hopefully) use instantiations that
actually exist in GCC 4.8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286881 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AArch64] Change some pointers to references. NFC.
Geoff Berry [Mon, 14 Nov 2016 19:59:11 +0000 (19:59 +0000)]
[AArch64] Change some pointers to references. NFC.

Follow-up change to r286875.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286879 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Tests exhibiting bad parial reloading behavior. NFC.
Michael Kuperstein [Mon, 14 Nov 2016 19:58:11 +0000 (19:58 +0000)]
[X86] Tests exhibiting bad parial reloading behavior. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286878 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AArch64] Split 0 vector stores into scalar store pairs.
Geoff Berry [Mon, 14 Nov 2016 19:39:04 +0000 (19:39 +0000)]
[AArch64] Split 0 vector stores into scalar store pairs.

Summary:
Replace a splat of zeros to a vector store by scalar stores of WZR/XZR.
The load store optimizer pass will merge them to store pair stores.
This should be better than a movi to create the vector zero followed by
a vector store if the zero constant is not re-used, since one
instructions and one register live range will be removed.

For example, the final generated code should be:

  stp xzr, xzr, [x0]

instead of:

  movi v0.2d, #0
  str q0, [x0]

Reviewers: t.p.northover, mcrosier, MatzeB, jmolloy

Subscribers: aemerson, rengolin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286875 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AArch64] Factor out transform code from split16BStore. NFC.
Geoff Berry [Mon, 14 Nov 2016 19:39:00 +0000 (19:39 +0000)]
[AArch64] Factor out transform code from split16BStore.  NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286874 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ThinLTO] Only promote exported locals as marked in index
Teresa Johnson [Mon, 14 Nov 2016 19:21:41 +0000 (19:21 +0000)]
[ThinLTO] Only promote exported locals as marked in index

Summary:
We have always speculatively promoted all renamable local values
(except const non-address taken variables) for both the exporting
and importing module. We would then internalize them back based on
the ThinLink results if they weren't actually exported. This is
inefficient, and results in unnecessary renames. It also meant we
had to check the non-renamability of a value in the summary, which
was already checked during function importing analysis in the ThinLink.

Made renameModuleForThinLTO (which does the promotion/renaming) instead
use the index when exporting, to avoid unnecessary renames/promotions.
For importing modules, we can simply promoted all values as any local
we import by definition is exported and needs promotion.

This required changes to the method used by the FunctionImport pass
(only invoked from 'opt' for testing) and when invoked from llvm-link,
since neither does a ThinLink. We simply conservatively mark all locals
in the index as promoted, which preserves the current aggressive
promotion behavior.

I also needed to change an llvm-lto based test where we had previously
been aggressively promoting values that weren't importable (aliasees),
but now will not promote.

Reviewers: mehdi_amini

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286871 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[libFuzzer] replace 'auto' with 'auto *' to better follow the LLVM style
Kostya Serebryany [Mon, 14 Nov 2016 19:21:38 +0000 (19:21 +0000)]
[libFuzzer] replace 'auto' with 'auto *' to better follow the LLVM style

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286870 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert: r286868 - Test commit
Daniel Sanders [Mon, 14 Nov 2016 19:10:56 +0000 (19:10 +0000)]
Revert: r286868 - Test commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286869 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoTest commit
Daniel Sanders [Mon, 14 Nov 2016 19:09:33 +0000 (19:09 +0000)]
Test commit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286868 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "ARM: sort register lists by encoding in push/pop instructions."
Tim Northover [Mon, 14 Nov 2016 19:05:28 +0000 (19:05 +0000)]
Revert "ARM: sort register lists by encoding in push/pop instructions."

This reverts commit 286866. It broke a bot, something to do with exactly which
templates std::sort accepts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286867 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoARM: sort register lists by encoding in push/pop instructions.
Tim Northover [Mon, 14 Nov 2016 19:02:17 +0000 (19:02 +0000)]
ARM: sort register lists by encoding in push/pop instructions.

For example we were producing

    push {r8, r10, r11, r4, r5, r7, lr}

This is misleading (r4, r5 and r7 are actually pushed before the rest), and
other components (stack folding recently) often forget to deal with the extra
complexity coming from the different order, leading to miscompiles. Finally, we
warn about our own code in -no-integrated-as mode without this, which is really
not a good idea.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286866 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGive SLP vectorizer credit where it's due.
Michael Kuperstein [Mon, 14 Nov 2016 19:01:59 +0000 (19:01 +0000)]
Give SLP vectorizer credit where it's due.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286865 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PPC] Add intrinsic mapping to the xscvhpsp instruction
Sean Fertile [Mon, 14 Nov 2016 18:43:59 +0000 (18:43 +0000)]
[PPC] Add intrinsic mapping to the xscvhpsp instruction

add an intrinsic to expose the 'VSX Scalar Convert Half-Precision to
Single-Precision' instruction.

Differential review: https://reviews.llvm.org/D26536

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286862 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[opt-viewer] Don't fail with remarks without debug location
Adam Nemet [Mon, 14 Nov 2016 18:38:48 +0000 (18:38 +0000)]
[opt-viewer] Don't fail with remarks without debug location

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286861 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU/SI: Support data types other than V4f32 in image intrinsics
Changpeng Fang [Mon, 14 Nov 2016 18:33:18 +0000 (18:33 +0000)]
AMDGPU/SI: Support data types other than V4f32 in image intrinsics

Summary:
  Extend image intrinsics to support data types of V1F32 and V2F32.

  TODO: we should define a mapping table to change the opcode for data type of V2F32 but just one channel is active,
  even though such case should be very rare.

Reviewers:
  tstellarAMD

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286860 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Adding reproducer for pr30981
Zvi Rackover [Mon, 14 Nov 2016 18:10:44 +0000 (18:10 +0000)]
[X86] Adding reproducer for pr30981

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286855 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PDB] Add documentation for the DBI Stream.
Zachary Turner [Mon, 14 Nov 2016 17:59:28 +0000 (17:59 +0000)]
[PDB] Add documentation for the DBI Stream.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286853 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PDB] Add documentation for the PDB Stream.
Zachary Turner [Mon, 14 Nov 2016 17:59:21 +0000 (17:59 +0000)]
[PDB] Add documentation for the PDB Stream.

https://reviews.llvm.org/D26516

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286852 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoUse _Unwind_Backtrace on Apple platforms.
Bob Wilson [Mon, 14 Nov 2016 17:56:18 +0000 (17:56 +0000)]
Use _Unwind_Backtrace on Apple platforms.

Darwin's backtrace() function does not work with sigaltstack (which was
enabled when available with r270395) â€” it does a sanity check to make
sure that the current frame pointer is within the expected stack area
(which it is not when using an alternate stack) and gives up otherwise.
The alternative of _Unwind_Backtrace seems to work fine on macOS, so use
that when backtrace() fails. Note that we then use backtrace_symbols_fd()
with the addresses from _Unwind_Backtrace, but I’ve tested that and it
also seems to work fine. rdar://problem/28646552

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286851 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoTypo
Adrian Prantl [Mon, 14 Nov 2016 17:26:32 +0000 (17:26 +0000)]
Typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286845 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRestore "[ThinLTO] Prevent exporting of locals used/defined in module level asm"
Teresa Johnson [Mon, 14 Nov 2016 17:12:32 +0000 (17:12 +0000)]
Restore "[ThinLTO] Prevent exporting of locals used/defined in module level asm"

This restores the rest of r286297 (part was restored in r286475).
Specifically, it restores the part requiring adding a dependency from
the Analysis to Object library (downstream use changed to correctly
model split BitReader vs BitWriter libraries).

Original description of this part of patch follows:

Module level asm may also contain defs of values. We need to prevent
export of any refs to local values defined in module level asm (e.g. a
ref in normal IR), since that also requires renaming/promotion of the
local. To do that, the summary index builder looks at all values in the
module level asm string that are not marked Weak or Global, which is
exactly the set of locals that are defined. A summary is created for
each of these local defs and flagged as NoRename.

This required adding handling to the BitcodeWriter to look at GV
declarations to see if they have a summary (rather than skipping them
all).

Finally, added an assert to IRObjectFile::CollectAsmUndefinedRefs to
ensure that an MCAsmParser is available, otherwise the module asm parse
would silently fail. Initialized the asm parser in the opt tool for use
in testing this fix.

Fixes PR30610.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286844 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[Hexagon] Remove unsafe load instructions that affect Stack Slot Coloring
Sumanth Gundapaneni [Mon, 14 Nov 2016 17:11:00 +0000 (17:11 +0000)]
[Hexagon] Remove unsafe load instructions that affect Stack Slot Coloring

The Stack slot coloring pass removes a store that is followed by a load
that deal with the same stack slot. The function isLoadFromStackSlot
is supposed to consider the loads that have no side-effects. This
patch fixed the issue by removing the unsafe loads from this function
Eg:
%vreg0<def> = L2_loadruh_io <fi#15>, 0
S2_storeri_io <fi#15>, 0, %vreg0

In this case, we load an unsigned extended half word and store this in to
the same stack slot. The Stack slot coloring pass considers safe to remove
the store. This patch marked all the non-vector byte and half word loads as
unsafe.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286843 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoHandle non-inlined clang::Type::getAs specializations in extract_symbols.py
Stephan Bergmann [Mon, 14 Nov 2016 17:07:09 +0000 (17:07 +0000)]
Handle non-inlined clang::Type::getAs specializations in extract_symbols.py

The existing logic was to discard any symbols representing function template
instantiations, as the definitions were assumed to be inline. But there are
three explicit specializations of clang::Type::getAs that are only defined in
Clang's lib/AST/Type.cpp, and at least the plugin used by the LibreOffice build
(https://wiki.documentfoundation.org/Development/Clang_plugins) uses those
functions.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286841 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ThinLTO] Make inline assembly handling more efficient in summary
Teresa Johnson [Mon, 14 Nov 2016 16:40:19 +0000 (16:40 +0000)]
[ThinLTO] Make inline assembly handling more efficient in summary

Summary:
The change in r285513 to prevent exporting of locals used in
inline asm added all locals in the llvm.used set to the reference
set of functions containing inline asm. Since these locals were marked
NoRename, this automatically prevented importing of the function.

Unfortunately, this caused an explosion in the summary reference lists
in some cases. In my particular example, it happened for a large protocol
buffer generated C++ file, where many of the generated functions
contained an inline asm call. It was exacerbated when doing a ThinLTO
PGO instrumentation build, where the PGO instrumentation included
thousands of private __profd_* values that were added to llvm.used.

We really only need to include a single llvm.used local (NoRename) value
in the reference list of a function containing inline asm to block it
being imported. However, it seems cleaner to add a flag to the summary
that explicitly describes this situation, which is what this patch does.

Reviewers: mehdi_amini

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286840 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[CostModel][X86] Added mul costs for vXi8 vectors
Simon Pilgrim [Mon, 14 Nov 2016 15:54:24 +0000 (15:54 +0000)]
[CostModel][X86] Added mul costs for vXi8 vectors

More realistic v16i8/v32i8/v64i8 MUL costs - we have to extend to vXi16, use PMULLW and then truncate the result

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286838 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][AVX] Fixed v16i16/v32i8 ADD/SUB costs on AVX1 subtargets
Simon Pilgrim [Mon, 14 Nov 2016 14:45:16 +0000 (14:45 +0000)]
[X86][AVX] Fixed v16i16/v32i8 ADD/SUB costs on AVX1 subtargets

Add explicit v16i16/v32i8 ADD/SUB costs, matching the costs of v4i64/v8i32 - they were missing for some reason.

This has side effects on the LV max bandwidth tests (AVX1 now prefers 128-bit vectors vs AVX2 which still prefers 256-bit)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286832 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[PPC] add intrinsics for vec extract exp/significand and vec test data class.
Sean Fertile [Mon, 14 Nov 2016 14:42:37 +0000 (14:42 +0000)]
[PPC] add intrinsics for vec extract exp/significand and vec test data class.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286829 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoReverting r285406, which was a temporary workaround to get one of the documentation...
Aaron Ballman [Mon, 14 Nov 2016 13:33:51 +0000 (13:33 +0000)]
Reverting r285406, which was a temporary workaround to get one of the documentation bots upgraded to something newer than GCC 4.7. This restores the check for GCC 4.8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286822 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "llvm-strings: support printing the filename"
Renato Golin [Mon, 14 Nov 2016 13:09:24 +0000 (13:09 +0000)]
Revert "llvm-strings: support printing the filename"

Also,

Revert "test: remove the archive before modifying it"
Revert "test: explicitly use gnu format"

This reverts commits r286778, r286729 and r286767, as they are randomly failing
on many bots (AArch64, x86_64).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286820 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRemove redundant condition (PR28352) NFCI.
Simon Pilgrim [Mon, 14 Nov 2016 12:00:46 +0000 (12:00 +0000)]
Remove redundant condition (PR28352) NFCI.

We were already testing is the op was not a leaf, so need to then test if it was a leaf (added it to the assert instead).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286817 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[InlineCost] Remove skew when calculating call costs
James Molloy [Mon, 14 Nov 2016 11:14:41 +0000 (11:14 +0000)]
[InlineCost] Remove skew when calculating call costs

When calculating the cost of a call instruction we were applying a heuristic penalty as well as the cost of the instruction itself.

However, when calculating the benefit from inlining we weren't discounting the equivalent penalty for the call instruction that would be removed! This caused skew in the calculation and meant we wouldn't inline in the following, trivial case:

  int g() {
    h();
  }
  int f() {
    g();
  }

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286814 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRemove redundant condition (PR28800) NFCI.
Simon Pilgrim [Mon, 14 Nov 2016 10:40:23 +0000 (10:40 +0000)]
Remove redundant condition (PR28800) NFCI.

'A || (!A && B)' is equivalent to 'A || B':

(LoopCycle > DefCycle) || (LoopCycle <= DefCycle && LoopStage <= DefStage)
-->
(LoopCycle > DefCycle) || (LoopStage <= DefStage)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286811 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGlobalISel: Fix indentation. NFC
Diana Picus [Mon, 14 Nov 2016 10:25:43 +0000 (10:25 +0000)]
GlobalISel: Fix indentation. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286808 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[JumpThreading] Prevent non-deterministic use lists
Pablo Barrio [Mon, 14 Nov 2016 10:24:26 +0000 (10:24 +0000)]
[JumpThreading] Prevent non-deterministic use lists

Summary:
Unfolding selects was previously done with the help of a vector
of pointers that was then sorted to be able to remove duplicates.
As this sorting depends on the memory addresses, it was
non-deterministic. A SetVector is used now so that duplicates are
removed without the need of sorting first.

Reviewers: mgrang, efriedma

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286807 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoGlobalISel: Fix typos. NFC
Diana Picus [Mon, 14 Nov 2016 10:22:18 +0000 (10:22 +0000)]
GlobalISel: Fix typos. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286806 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAdd explicit (void) cast to unused unique_ptr::release() results
Eric Fiselier [Mon, 14 Nov 2016 07:26:17 +0000 (07:26 +0000)]
Add explicit (void) cast to unused unique_ptr::release() results

Summary:
This patch adds explicit `(void)` casts to discarded `release()` calls to suppress -Wunused-result.

This patch fixes *all* warnings are generated as a result of [applying `[[nodiscard]]`  within libc++](https://reviews.llvm.org/D26596).
Similar fixes were applied to Clang in r286796.

Reviewers: chandlerc, dberris

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286797 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDemangle: only demangle mangled symbols
Saleem Abdulrasool [Mon, 14 Nov 2016 04:54:47 +0000 (04:54 +0000)]
Demangle: only demangle mangled symbols

Only attempt to demangle symbols which have the itanium C++ prefix of `_Z`.
This ensures that we do not treat any symbol name as a managled named.  We would
previously treat a C function `f` as a mangled name and decode that to `float`
incorrectly.

While it is easy to add tests for this, Mehdi recommended against introducing
tests for the demangler as libc++abi should cover the testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286795 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AVX-512] Add suffixless aliases for EVEX encoded vcvtsi2ss/vcvtsi2sd/vcvtusi2ss...
Craig Topper [Mon, 14 Nov 2016 02:46:58 +0000 (02:46 +0000)]
[AVX-512] Add suffixless aliases for EVEX encoded vcvtsi2ss/vcvtsi2sd/vcvtusi2ss/vcvtusi2sd. This matches the VEX behavior.

Fixes another problem from PR28850.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286790 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86] Cleanup 'x' and 'y' mnemonic suffixes for vcvtpd2dq/vcvttpd2dq/vcvtpd2ps and...
Craig Topper [Mon, 14 Nov 2016 01:53:29 +0000 (01:53 +0000)]
[X86] Cleanup 'x' and 'y' mnemonic suffixes for vcvtpd2dq/vcvttpd2dq/vcvtpd2ps and similar instructions.

-Don't print the 'x' suffix for the 128-bit reg/mem VEX encoded instructions in Intel syntax. This is consistent with the EVEX versions.
-Don't print the 'y' suffix for the 256-bit reg/reg VEX encoded instructions in Intel or AT&T syntax. This is consistent with the EVEX versions.
-Allow the 'x' and 'y' suffixes to be used for the reg/mem forms when we're assembling using Intel syntax.
-Allow the 'x' and 'y' suffixes on the reg/reg EVEX encoded instructions in Intel or AT&T syntax. This is consistent with what VEX was already allowing.

This should fix at least some of PR28850.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286787 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AVX-512] Remove and autoupgrade masked dword/qword variable shift intrinsics to...
Craig Topper [Mon, 14 Nov 2016 01:53:22 +0000 (01:53 +0000)]
[AVX-512] Remove and autoupgrade masked dword/qword variable shift intrinsics to the new unmasked versions and selects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286786 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[LangRef] Drop misleading anecdote
Sanjoy Das [Sun, 13 Nov 2016 23:40:40 +0000 (23:40 +0000)]
[LangRef] Drop misleading anecdote

`shl nsw i8 1, i8 8` is poison, but `mul i8 1, i8 128` is not.

This was discussed previously here:
http://lists.llvm.org/pipermail/llvm-dev/2015-April/084195.html.  From
the discussion, it was not clear which semantics we want for `shl`, but
for now at least make the language reference more accurate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286785 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agotest: remove the archive before modifying it
Saleem Abdulrasool [Sun, 13 Nov 2016 20:43:41 +0000 (20:43 +0000)]
test: remove the archive before modifying it

The archive may already exist when not doing a clean test run.  The dirty state
can cause a test failure.  Remove the archive first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286778 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agollvm-cxxfilt: support reading from stdin
Saleem Abdulrasool [Sun, 13 Nov 2016 20:43:38 +0000 (20:43 +0000)]
llvm-cxxfilt: support reading from stdin

`c++filt` when given no arguments runs as a REPL, decoding each line as a
decorated name.  Unify the test structure to be more uniform, with the tests for
llvm-cxxfilt living under test/tools/llvm-cxxfilt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286777 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ValueTracking] recognize even more variants of smin/smax
Sanjay Patel [Sun, 13 Nov 2016 20:04:52 +0000 (20:04 +0000)]
[ValueTracking] recognize even more variants of smin/smax

Similar to:
https://reviews.llvm.org/rL285499
https://reviews.llvm.org/rL286318

We can't minimally expose this in IR tests because we don't have min/max intrinsics,
but the difference is visible in codegen because SelectionDAGBuilder::visitSelect()
uses matchSelectPattern().

We're not canonicalizing these patterns in IR (yet), so I don't expect there to be any
regressions as noted here:
http://lists.llvm.org/pipermail/llvm-dev/2016-November/106868.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286776 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[AVX-512] Fix a disassembler failure for AVX-512 vcmpss/vcmpsd with an immediate...
Craig Topper [Sun, 13 Nov 2016 19:58:18 +0000 (19:58 +0000)]
[AVX-512] Fix a disassembler failure for AVX-512 vcmpss/vcmpsd with an immediate larger than 32. Fix the same bug with VLX vcmpps/vcmppd.

Fixes PR24941.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286775 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agotest: synchronise lit substitutions
Saleem Abdulrasool [Sun, 13 Nov 2016 19:37:00 +0000 (19:37 +0000)]
test: synchronise lit substitutions

llvm-strings was added to the test dependencies without updating the lit
substitutions.  Synchronise the list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286773 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ValueTracking] move min/max matching to helper function; NFCI
Sanjay Patel [Sun, 13 Nov 2016 19:30:19 +0000 (19:30 +0000)]
[ValueTracking] move min/max matching to helper function; NFCI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286772 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][IR] Reduce the number of full string comparisons in the code that autoupgrades...
Craig Topper [Sun, 13 Nov 2016 19:09:56 +0000 (19:09 +0000)]
[X86][IR] Reduce the number of full string comparisons in the code that autoupgrades masked shift intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286768 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agollvm-strings: support printing the filename
Saleem Abdulrasool [Sun, 13 Nov 2016 19:07:48 +0000 (19:07 +0000)]
llvm-strings: support printing the filename

This adds support for the `-f` or `--print-file-name` option for strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286767 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoAMDGPU: Implement SGPR spilling with scalar stores
Matt Arsenault [Sun, 13 Nov 2016 18:20:54 +0000 (18:20 +0000)]
AMDGPU: Implement SGPR spilling with scalar stores

nThis avoids the nasty problems caused by using
memory instructions that read the exec mask while
spilling / restoring registers used for control flow
masking, but only for VI when these were added.

This always uses the scalar stores when enabled currently,
but it may be better to still try to spill to a VGPR
and use this on the fallback memory path.

The cache also needs to be flushed before wave termination
if a scalar store is used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286766 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agorevert commit r286761, some builds failed on Win platforms
Igor Breger [Sun, 13 Nov 2016 15:48:11 +0000 (15:48 +0000)]
revert commit r286761, some builds failed on Win platforms

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286765 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][SSE] Add zero lower 32-bits test case for PR30845
Simon Pilgrim [Sun, 13 Nov 2016 15:32:11 +0000 (15:32 +0000)]
[X86][SSE] Add zero lower 32-bits test case for PR30845

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286764 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[X86][AVX512] Add masked VPMOZX test case for PR26762
Simon Pilgrim [Sun, 13 Nov 2016 15:16:43 +0000 (15:16 +0000)]
[X86][AVX512] Add masked VPMOZX test case for PR26762

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286763 91177308-0d34-0410-b5e6-96231b3b80d8