platform/upstream/llvm.git
7 years ago[LoopVectorizer] Improve handling of branches during cost estimation.
Jonas Paulsson [Wed, 12 Apr 2017 13:13:15 +0000 (13:13 +0000)]
[LoopVectorizer]  Improve handling of branches during cost estimation.

The cost for a branch after vectorization is very different depending on if
the vectorizer will if-convert the block (branch is eliminated), or if
scalarized and predicated blocks will be produced (branch duplicated before
each block). There is also the case of remaining scalar branches, such as the
back-edge branch.

This patch handles these cases differently with TTI based cost estimates.

Review: Matthew Simpson
https://reviews.llvm.org/D31175

llvm-svn: 300058

7 years ago[GlobalIsel][X86] support G_CONSTANT selection.
Igor Breger [Wed, 12 Apr 2017 12:54:54 +0000 (12:54 +0000)]
[GlobalIsel][X86] support G_CONSTANT selection.

Summary: [GlobalISel][X86] support G_CONSTANT selection. Add regbank select tests.

Reviewers: zvi, guyblank

Reviewed By: guyblank

Subscribers: llvm-commits, dberris, rovka, kristof.beyls

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

llvm-svn: 300057

7 years ago[LoopVectorizer, TTI] New method supportsEfficientVectorElementLoadStore()
Jonas Paulsson [Wed, 12 Apr 2017 12:41:37 +0000 (12:41 +0000)]
[LoopVectorizer, TTI]  New method supportsEfficientVectorElementLoadStore()

Since SystemZ supports vector element load/store instructions, there is no
need for extracts/inserts if a vector load/store gets scalarized.

This patch lets Target specify that it supports such instructions by means of
a new TTI hook that defaults to false.

The use for this is in the LoopVectorizer getScalarizationOverhead() method,
which will with this patch produce a smaller sum for a vector load/store on
SystemZ.

New test: test/Transforms/LoopVectorize/SystemZ/load-store-scalarization-cost.ll

Review: Adam Nemet
https://reviews.llvm.org/D30680

llvm-svn: 300056

7 years ago[AMDGPU][MC] Corrected src0 size for s_cbranch_join
Dmitry Preobrazhensky [Wed, 12 Apr 2017 12:40:19 +0000 (12:40 +0000)]
[AMDGPU][MC] Corrected src0 size for s_cbranch_join

Fix for bug 28159: https://bugs.llvm.org//show_bug.cgi?id=28159

Reviewers: vpykhtin, arsenm

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

llvm-svn: 300055

7 years agoAdd libc++ category to the remaining libc++ data formatters
Pavel Labath [Wed, 12 Apr 2017 12:32:58 +0000 (12:32 +0000)]
Add libc++ category to the remaining libc++ data formatters

llvm-svn: 300054

7 years ago[SystemZ] Updated test fp-cast.ll
Jonas Paulsson [Wed, 12 Apr 2017 12:11:41 +0000 (12:11 +0000)]
[SystemZ]  Updated test fp-cast.ll

This did not get included in the previous commit for SystemZ cost functions.

llvm-svn: 300053

7 years ago[SystemZ] TargetTransformInfo cost functions implemented.
Jonas Paulsson [Wed, 12 Apr 2017 11:49:08 +0000 (11:49 +0000)]
[SystemZ]  TargetTransformInfo cost functions implemented.

getArithmeticInstrCost(), getShuffleCost(), getCastInstrCost(),
getCmpSelInstrCost(), getVectorInstrCost(), getMemoryOpCost(),
getInterleavedMemoryOpCost() implemented.

Interleaved access vectorization enabled.

BasicTTIImpl::getCastInstrCost() improved to check for legal extending loads,
in which case the cost of the z/sext instruction becomes 0.

Review: Ulrich Weigand, Renato Golin.
https://reviews.llvm.org/D29631

llvm-svn: 300052

7 years ago[DWARF] Fix compiler warnings in DWARFContext.cpp, NFCi
Krasimir Georgiev [Wed, 12 Apr 2017 11:33:26 +0000 (11:33 +0000)]
[DWARF] Fix compiler warnings in DWARFContext.cpp, NFCi

llvm-svn: 300051

7 years ago[LangRef] fix documentation
Piotr Padlewski [Wed, 12 Apr 2017 11:18:19 +0000 (11:18 +0000)]
[LangRef] fix documentation

llvm-svn: 300050

7 years agoAdd support for __builtin_available to __has_builtin
Alex Lorenz [Wed, 12 Apr 2017 11:03:25 +0000 (11:03 +0000)]
Add support for __builtin_available to __has_builtin

rdar://31576715

llvm-svn: 300049

7 years agoFix TestCppIncompleteTypes for android/clang
Pavel Labath [Wed, 12 Apr 2017 10:59:34 +0000 (10:59 +0000)]
Fix TestCppIncompleteTypes for android/clang

LDFLAGS contains some .a files. If it is specified before the relevant
object files, undefined symbol errors occur.

llvm-svn: 300048

7 years agoFix libc++ vector<bool> data formatter (bug #32553)
Pavel Labath [Wed, 12 Apr 2017 10:59:24 +0000 (10:59 +0000)]
Fix libc++ vector<bool> data formatter (bug #32553)

Summary:
The iteration list through the available data formatters was undefined,
which meant that the vector<bool> formatter kicked in only in cases
where it happened to be queried before the general vector formatter. To
fix this, I merge the two data formatter entries into one, and select
which implementation to use in the factory function.

Reviewers: jasonmolenda, tberghammer, EricWF

Subscribers: lldb-commits

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

llvm-svn: 300047

7 years agoFix TestGuessLanguage for gcc
Pavel Labath [Wed, 12 Apr 2017 10:13:50 +0000 (10:13 +0000)]
Fix TestGuessLanguage for gcc

gcc emits DW_LANG_C89 even if we specify -std=c99 during compilation.
Since this isn't an lldb bug, but just the way the compiler happens to
be implemented, I teach the test to expect this situation correctly.

llvm-svn: 300046

7 years agoAndroid.rules: setup correct objcopy path
Pavel Labath [Wed, 12 Apr 2017 10:13:47 +0000 (10:13 +0000)]
Android.rules: setup correct objcopy path

This fixes a couple of tests when using android clang as a compiler.

llvm-svn: 300045

7 years ago[LSAN] Disable on ARM/Thumb for good
Renato Golin [Wed, 12 Apr 2017 10:12:49 +0000 (10:12 +0000)]
[LSAN] Disable on ARM/Thumb for good

I didn't pay enough attention to the patch I reverted, now I'm going to
hit it with a bigger hammer until we can understand what the problems
are.

llvm-svn: 300044

7 years agoRangify for loop, NFC.
Yaron Keren [Wed, 12 Apr 2017 10:05:48 +0000 (10:05 +0000)]
Rangify for loop, NFC.

llvm-svn: 300043

7 years agoRevert "[lsan] Fix typo in test/lsan/lit.common.cfg"
Renato Golin [Wed, 12 Apr 2017 09:45:08 +0000 (09:45 +0000)]
Revert "[lsan] Fix typo in test/lsan/lit.common.cfg"

This reverts commit r299957. It broke the Thumb bots. We need to make
sure why and maybe stop it from being tested on Thumb environments. But
for now, let's get the bots green.

llvm-svn: 300042

7 years agoFix compile error
Ismail Donmez [Wed, 12 Apr 2017 09:42:46 +0000 (09:42 +0000)]
Fix compile error

llvm-svn: 300041

7 years ago[AMDGPU] SDWA: make pass global
Sam Kolton [Wed, 12 Apr 2017 09:36:05 +0000 (09:36 +0000)]
[AMDGPU] SDWA: make pass global

Summary: Remove checks for basic blocks.

Reviewers: vpykhtin, rampitec, arsenm

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye

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

llvm-svn: 300040

7 years ago[DWARF] - Refactoring of DWARFContextInMemory implementation.
George Rimar [Wed, 12 Apr 2017 08:59:15 +0000 (08:59 +0000)]
[DWARF] - Refactoring of DWARFContextInMemory implementation.

This change is basically relative to D31136, where I initially wanted to
implement some relocations handling optimization which shows it can give
significant boost. Though even without any caching algorithm looks
code can have some cleanup at first.

Refactoring separates out code for taking symbol address, used in relocations
computation.

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

llvm-svn: 300039

7 years ago[IR] Rename the class templates for the case iterator and case handle to
Chandler Carruth [Wed, 12 Apr 2017 08:48:39 +0000 (08:48 +0000)]
[IR] Rename the class templates for the case iterator and case handle to
not collide with the naming convention for template *arguments*. In at
least one case they actually collided and this confuses MSVC.

llvm-svn: 300038

7 years ago[globalisel][tablegen] Add experimental support for OperandWithDefaultOps, PredicateO...
Daniel Sanders [Wed, 12 Apr 2017 08:23:08 +0000 (08:23 +0000)]
[globalisel][tablegen] Add experimental support for OperandWithDefaultOps, PredicateOperand, and OptionalDefOperand

Summary:
As far as instruction selection is concerned, all three appear to be same thing.

Support for these operands is experimental since AArch64 doesn't make use
of them and the in-tree targets that do use them (AMDGPU for
OperandWithDefaultOps, AMDGPU/ARM/Hexagon/Lanai for PredicateOperand, and ARM
for OperandWithDefaultOps) are not using tablegen-erated GlobalISel yet.

Reviewers: rovka, aditya_nandakumar, t.p.northover, qcolombet, ab

Reviewed By: rovka

Subscribers: inglorion, aemerson, rengolin, mehdi_amini, dberris, kristof.beyls, igorb, tpr, llvm-commits

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

llvm-svn: 300037

7 years agoRemove Sema::addOverloadedOperatorToUnresolvedSet declaration. Its definition was...
Yaron Keren [Wed, 12 Apr 2017 08:17:44 +0000 (08:17 +0000)]
Remove Sema::addOverloadedOperatorToUnresolvedSet declaration. Its definition was removed in r206436.

llvm-svn: 300036

7 years agoUpdate Clang for an API change to LLVM's switch case iterator (it is now
Chandler Carruth [Wed, 12 Apr 2017 08:12:30 +0000 (08:12 +0000)]
Update Clang for an API change to LLVM's switch case iterator (it is now
an actual iterator and so we need to look through it to the case
handle).

llvm-svn: 300035

7 years ago[LoadCombine] Avoid analysing dead basic blocks
Bjorn Pettersson [Wed, 12 Apr 2017 08:07:55 +0000 (08:07 +0000)]
[LoadCombine] Avoid analysing dead basic blocks

Summary:
Dead basic blocks may be forming a loop, for which SSA form is
fulfilled, but with a circular def-use chain. LoadCombine could
enter an infinite loop when analysing such dead code. This patch
solves the problem by simply avoiding to analyse all basic blocks
that aren't forward reachable, from function entry, in LoadCombine.

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

Reviewers: mehdi_amini, chandlerc, grosser, Bigcheese, davide

Reviewed By: davide

Subscribers: dberlin, zzheng, bjope, grandinj, Ka-Ka, materi, jholewinski, llvm-commits, mzolotukhin

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

llvm-svn: 300034

7 years agoInvariant.group and mustalias docs fixes
Piotr Padlewski [Wed, 12 Apr 2017 07:59:35 +0000 (07:59 +0000)]
Invariant.group and mustalias docs fixes

Summary:
Alias analysis would like to know that
invariant.group.barrier returns pointer that mustalias,
but this can't imply that we can replace one pointer with another

Reviewers: dberlin, sanjoy

Subscribers: llvm-commits, chandlerc, hfinkel, nlewycky, amharc

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

llvm-svn: 300033

7 years ago[IR] Redesign the case iterator in SwitchInst to actually be an iterator
Chandler Carruth [Wed, 12 Apr 2017 07:27:28 +0000 (07:27 +0000)]
[IR] Redesign the case iterator in SwitchInst to actually be an iterator
and to expose a handle to represent the actual case rather than having
the iterator return a reference to itself.

All of this allows the iterator to be used with common STL facilities,
standard algorithms, etc.

Doing this exposed some missing facilities in the iterator facade that
I've fixed and required some work to the actual iterator to fully
support the necessary API.

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

llvm-svn: 300032

7 years ago[IR] Fix copy and paste mistake in comment. NFC
Craig Topper [Wed, 12 Apr 2017 05:57:46 +0000 (05:57 +0000)]
[IR] Fix copy and paste mistake in comment. NFC

llvm-svn: 300031

7 years ago[InstCombine][IR] Add a commutable BinOp matcher. Use it to reduce some code. NFC
Craig Topper [Wed, 12 Apr 2017 05:49:28 +0000 (05:49 +0000)]
[InstCombine][IR] Add a commutable BinOp matcher. Use it to reduce some code. NFC

llvm-svn: 300030

7 years ago[BPI] Refactor post domination calculation and simple fix for ColdCall
Serguei Katkov [Wed, 12 Apr 2017 05:42:14 +0000 (05:42 +0000)]
[BPI] Refactor post domination calculation and simple fix for ColdCall

Collection of PostDominatedByUnreachable and PostDominatedByColdCall have been
split out of heuristics itself. Update of the data happens now for each basic
block (before update for PostDominatedByColdCall might be skipped if
unreachable or matadata heuristic handled this basic block).

This separation allows re-ordering of heuristics without loosing
the post-domination information.

Reviewers: sanjoy, junbuml, vsk, chandlerc, reames

Reviewed By: chandlerc

Subscribers: llvm-commits

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

llvm-svn: 300029

7 years ago[XRay] [compiler-rt] Refactor rewinding FDR logging.
Martin Pelikan [Wed, 12 Apr 2017 05:30:35 +0000 (05:30 +0000)]
[XRay] [compiler-rt] Refactor rewinding FDR logging.

Summary:
While there, make the threshold in ticks for the rewind computed only
once and not per function, unify the two versions we had and slightly
reformat bits according to coding standards.

Reviewers: dberris

Subscribers: llvm-commits

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

llvm-svn: 300028

7 years ago[Modules] Remove darwin specific code to check for SystemVersion.plist
Bruno Cardoso Lopes [Wed, 12 Apr 2017 04:49:00 +0000 (04:49 +0000)]
[Modules] Remove darwin specific code to check for SystemVersion.plist

This isn't need anymore and modules options -fbuild-session-file and
-fmodules-validate-once-per-build-session already provide a sane
mechanism to validate the system headers.

rdar://problem/19767523

llvm-svn: 300027

7 years ago[INC] Test commit. NFC.
Serguei Katkov [Wed, 12 Apr 2017 04:41:35 +0000 (04:41 +0000)]
[INC] Test commit. NFC.

Just an update of comment.

llvm-svn: 300026

7 years agoSerialization: Simulate -Werror settings in implicit modules
Duncan P. N. Exon Smith [Wed, 12 Apr 2017 03:58:58 +0000 (03:58 +0000)]
Serialization: Simulate -Werror settings in implicit modules

r293123 started serializing diagnostic pragma state for modules.  This
makes the serialization work properly for implicit modules.

An implicit module build (using Clang's internal build system) uses the
same PCM file location for different `-Werror` levels.

E.g., if a TU has `-Werror=format` and tries to load a PCM built without
`-Werror=format`, a new PCM will be built in its place (and the new PCM
should have the same signature, since r297655).  In the other direction,
if a TU does not have `-Werror=format` and tries to load a PCM built
with `-Werror=format`, it should "just work".

The idea is to evolve the PCM toward the strictest -Werror flags that
anyone tries.

r293123 started serializing the diagnostic pragma state for each PCM.
Since this encodes the -Werror settings at module-build time, it breaks
the implicit build model.

This commit filters the diagnostic state in order to simulate the
current compilation's diagnostic settings.  Firstly, it ignores the
module's serialized first diagnostic state, replacing it with the state
from this compilation's command-line.  Secondly, if a pragma warning was
upgraded to error/fatal when generating the PCM (e.g., due to `-Werror`
on the command-line), it checks whether it should still be upgraded in
its current context.

llvm-svn: 300025

7 years agoSerialization: Emit the final diagnostic state last, almost NFC
Duncan P. N. Exon Smith [Wed, 12 Apr 2017 03:45:32 +0000 (03:45 +0000)]
Serialization: Emit the final diagnostic state last, almost NFC

Emit the final diagnostic state last to match source order.  This also
prepares for a follow-up commit for implicit modules.

There's no real functionaliy change, just a slightly different AST file
format.

llvm-svn: 300024

7 years ago[AMDGPU] Add a new pass to insert waitcnts. Leave under an option for testing.
Kannan Narayanan [Wed, 12 Apr 2017 03:25:12 +0000 (03:25 +0000)]
[AMDGPU] Add a new pass to insert waitcnts. Leave under an option for testing.

Based on comments in https://reviews.llvm.org/D31161.

llvm-svn: 300023

7 years agoCodeGen: BlockPlacement: Clear ComputedEdges between functions.
Kyle Butt [Wed, 12 Apr 2017 03:18:20 +0000 (03:18 +0000)]
CodeGen: BlockPlacement: Clear ComputedEdges between functions.

Not clearing was causing non-deterministic compiles for large files. Addresses
for MachineBasicBlocks would end up colliding and we would lay out a block that
we assumed had been pre-computed when it had not been.

llvm-svn: 300022

7 years agoSerialization: Skip check in WritePragmaDiagnosticMappings, NFC
Duncan P. N. Exon Smith [Wed, 12 Apr 2017 02:31:17 +0000 (02:31 +0000)]
Serialization: Skip check in WritePragmaDiagnosticMappings, NFC

The record is never empty, since we always serialize the initial state.
Skip the check.

llvm-svn: 300021

7 years agoReland "[CMake][libunwind] Use -nodefaultlibs for CMake checks"
Petr Hosek [Wed, 12 Apr 2017 02:28:07 +0000 (02:28 +0000)]
Reland "[CMake][libunwind] Use -nodefaultlibs for CMake checks"

This is a reland of commit r299796.

Turned out that we need gcc_s or compiler-rt on ARM when checking
the support for -funwind-tables which creates a dependency on
__aeabi_unwind_cpp_pr0 symbol that's provided by the compiler
runtime.

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

llvm-svn: 300020

7 years agoThinLTOBitcodeWriter: keep comdats together, rename if leader is renamed
Bob Haarman [Wed, 12 Apr 2017 01:43:07 +0000 (01:43 +0000)]
ThinLTOBitcodeWriter: keep comdats together, rename if leader is renamed

Summary:
COFF requires that every comdat contain a symbol with the same name as
the comdat. ThinLTOBitcodeWriter renames symbols, which may cause this
requirement to be violated. This change avoids such violations by
renaming comdats if their leaders are renamed. It also keeps comdats
together when splitting modules.

Reviewers: pcc, mehdi_amini, tejohnson

Reviewed By: pcc

Subscribers: rnk, Prazek, llvm-commits

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

llvm-svn: 300019

7 years ago[XRay] [compiler-rt] Simplify FDR logging handler. [NFC]
Martin Pelikan [Wed, 12 Apr 2017 01:31:17 +0000 (01:31 +0000)]
[XRay] [compiler-rt] Simplify FDR logging handler. [NFC]

Summary:
Not repeating screamy failure paths makes the 300+ line function a bit shorter.
There's no need to overload the variable name "Buffer" if it only works on the
thread local buffer.  Fix some comments while there.

I plan to move the rewinding logic into a separate function too, but in this
diff it would be too much of a mess to comprehend.  This is trivially NFC.

Reviewers: kpw, dberris

Subscribers: llvm-commits

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

llvm-svn: 300018

7 years ago[XRay][compiler-rt] Add another work-around to XRay FDR tests when TSC emulation...
Douglas Yung [Wed, 12 Apr 2017 01:24:48 +0000 (01:24 +0000)]
[XRay][compiler-rt] Add another work-around to XRay FDR tests when TSC emulation is needed

This patch applies a work-around to the XRay FDR tests when TSC emulation is
needed because the processor frequency cannot be determined.

This fixes PR32620 using the suggestion given by Dean in comment 1.

Reviewers: dberris

Subscribers: llvm-commits

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

llvm-svn: 300017

7 years agoRevert "[WebAssembly] Update use of Attributes after r299875"
Derek Schuff [Wed, 12 Apr 2017 01:17:31 +0000 (01:17 +0000)]
Revert "[WebAssembly] Update use of Attributes after r299875"

This reverts commit 2a0eb61dcccb15058d5b2a572bb3da0cf47fd550, r300015

I raced with rnk on the commit.

llvm-svn: 300016

7 years ago[WebAssembly] Update use of Attributes after r299875
Derek Schuff [Wed, 12 Apr 2017 01:09:34 +0000 (01:09 +0000)]
[WebAssembly] Update use of Attributes after r299875

This fixes the failing WebAssemblyLowerEmscriptenEHSjLj tests

llvm-svn: 300015

7 years ago[IR] Add AttributeSet to hide AttributeSetNode* again, NFC
Reid Kleckner [Wed, 12 Apr 2017 00:38:00 +0000 (00:38 +0000)]
[IR] Add AttributeSet to hide AttributeSetNode* again, NFC

Summary:
For now, it just wraps AttributeSetNode*. Eventually, it will hold
AvailableAttrs as an inline bitset, and adding and removing enum
attributes will be super cheap.

This sinks AttributeSetNode back down to lib/IR/AttributeImpl.h.

Reviewers: pete, chandlerc

Subscribers: llvm-commits, jfb

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

llvm-svn: 300014

7 years agoTeach SBFrame how to guess its language.
Jim Ingham [Wed, 12 Apr 2017 00:19:54 +0000 (00:19 +0000)]
Teach SBFrame how to guess its language.

<rdar://problem/31411646>

llvm-svn: 300012

7 years ago[lld] Keep full library path in DT_NEEDED.
Evgeniy Stepanov [Wed, 12 Apr 2017 00:13:48 +0000 (00:13 +0000)]
[lld] Keep full library path in DT_NEEDED.

Fixes PR32572.

When
    (a) a library has no soname
and (b) library is given on the command line with path (and not through -L/-l flags)
DT_NEEDED entry for such library keeps the path as given.

This behavior is consistent with gold and bfd, and is used in compiler-rt test suite.

This is a second attempt after r300007 got reverted. This time relro-omagic test is
changed in a way to avoid hardcoding the path to the test directory in the objdump'd
binary.

llvm-svn: 300011

7 years ago[msan] fix iconv interceptor. before the fix the interceptor failed to mark memory...
Kostya Serebryany [Wed, 12 Apr 2017 00:12:34 +0000 (00:12 +0000)]
[msan] fix iconv interceptor. before the fix the interceptor failed to mark memory as initialized if iconv returned -1. Found in a hard way while fuzzing libxml2 :(

llvm-svn: 300010

7 years agoAdd some FAIL constexpr tests for optional's copy/move ctors.
Marshall Clow [Wed, 12 Apr 2017 00:07:29 +0000 (00:07 +0000)]
Add some FAIL constexpr tests for optional's copy/move ctors.

llvm-svn: 300009

7 years agoRevert "[lld] Keep full library path in DT_NEEDED."
Evgeniy Stepanov [Wed, 12 Apr 2017 00:01:21 +0000 (00:01 +0000)]
Revert "[lld] Keep full library path in DT_NEEDED."

This reverts commit r300007. Reason: breaks all the bots.

llvm-svn: 300008

7 years ago[lld] Keep full library path in DT_NEEDED.
Evgeniy Stepanov [Tue, 11 Apr 2017 23:46:58 +0000 (23:46 +0000)]
[lld] Keep full library path in DT_NEEDED.

Fixes PR32572.

When
    (a) a library has no soname
and (b) library is given on the command line with path (and not through -L/-l flags)
DT_NEEDED entry for such library keeps the path as given.

This behavior is consistent with gold and bfd, and is used in compiler-rt test suite.

llvm-svn: 300007

7 years agoSilence unused variable warning in release builds.
Benjamin Kramer [Tue, 11 Apr 2017 23:06:49 +0000 (23:06 +0000)]
Silence unused variable warning in release builds.

llvm-svn: 300006

7 years agoRemove big-endianness from =<fillexp> code.
Rui Ueyama [Tue, 11 Apr 2017 22:45:57 +0000 (22:45 +0000)]
Remove big-endianness from =<fillexp> code.

llvm-svn: 300005

7 years agoCall getFiller only when filler is not zero.
Rui Ueyama [Tue, 11 Apr 2017 22:45:38 +0000 (22:45 +0000)]
Call getFiller only when filler is not zero.

llvm-svn: 300004

7 years agoRemove xgene1 from host detection
Yi Kong [Tue, 11 Apr 2017 22:39:55 +0000 (22:39 +0000)]
Remove xgene1 from host detection

This is not a supported mcpu tuning option. We should treat it as
"generic" variant.

Also, add record for cortex-a35.

llvm-svn: 300003

7 years ago[lld] --export-dynamic overrides --dynamic-list.
Evgeniy Stepanov [Tue, 11 Apr 2017 22:37:54 +0000 (22:37 +0000)]
[lld] --export-dynamic overrides --dynamic-list.

Fixes PR32573.

--export-dynamic exports everything, even in the presence of a --dynamic-list,
or --export-dynamic-symbol.

llvm-svn: 300002

7 years agoRevert r298824 & r298816, recommit r298742 & r298754
Richard Trieu [Tue, 11 Apr 2017 22:32:03 +0000 (22:32 +0000)]
Revert r298824 & r298816, recommit r298742 & r298754

r299989 fixes the underlying issue by waiting long enough to late parsed
arguments to be processed before doing an calculating the hash.

r298742
[ODRHash] Add error messages for mismatched parameters in methods.

r298754
[ODRHash] Add support for array and decayed types.

llvm-svn: 300001

7 years agoAMDGPU: Insert wait at start of callee functions
Matt Arsenault [Tue, 11 Apr 2017 22:29:31 +0000 (22:29 +0000)]
AMDGPU: Insert wait at start of callee functions

llvm-svn: 300000

7 years agoAMDGPU: Refactor SIMachineFunctionInfo slightly
Matt Arsenault [Tue, 11 Apr 2017 22:29:28 +0000 (22:29 +0000)]
AMDGPU: Refactor SIMachineFunctionInfo slightly

Prepare for handling non-entry functions.

llvm-svn: 299999

7 years agoAMDGPU: Refactor argument lowering
Matt Arsenault [Tue, 11 Apr 2017 22:29:24 +0000 (22:29 +0000)]
AMDGPU: Refactor argument lowering

Split into smaller functions and prepare for handling
non-entry functions.

llvm-svn: 299998

7 years agoAMDGPU: Fix folding reg_sequence into copy to phys reg
Matt Arsenault [Tue, 11 Apr 2017 22:29:19 +0000 (22:29 +0000)]
AMDGPU: Fix folding reg_sequence into copy to phys reg

This was producing an illegal reg_sequence defining
a physical register with virtual register inputs.

llvm-svn: 299997

7 years agoAMDGPU: Prune unecessary include
Matt Arsenault [Tue, 11 Apr 2017 22:29:16 +0000 (22:29 +0000)]
AMDGPU: Prune unecessary include

llvm-svn: 299996

7 years ago[asan] Give global metadata private linkage.
Evgeniy Stepanov [Tue, 11 Apr 2017 22:28:13 +0000 (22:28 +0000)]
[asan] Give global metadata private linkage.

Internal linkage preserves names like "__asan_global_foo" which may
account to 2% of unstripped binary size.

llvm-svn: 299995

7 years ago[AArch64] Fix scheduling info for INS(vector, general) instruction.
Balaram Makam [Tue, 11 Apr 2017 22:14:10 +0000 (22:14 +0000)]
[AArch64] Fix scheduling info for INS(vector, general) instruction.

llvm-svn: 299994

7 years agoAvoid some string copies, NFC
Vedant Kumar [Tue, 11 Apr 2017 22:11:46 +0000 (22:11 +0000)]
Avoid some string copies, NFC

llvm-svn: 299993

7 years ago[Sema][ObjC] Check whether a variable has a definition, rather than
Akira Hatanaka [Tue, 11 Apr 2017 22:01:33 +0000 (22:01 +0000)]
[Sema][ObjC] Check whether a variable has a definition, rather than
checking its storage class, when determining whether casting a C pointer
to an ObjC pointer is allowed.

This change allows casting variables whose declarations are directly
contained in a linkage specification to an ObjC pointer type. Those
variables are treated as if they contain the extern specifier for the
purpose of determining whether they are definitions or not.

rdar://problem/29249853

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

llvm-svn: 299992

7 years agoMinor updates to floating point intrinsic documentation
Andrew Kaylor [Tue, 11 Apr 2017 21:52:40 +0000 (21:52 +0000)]
Minor updates to floating point intrinsic documentation

llvm-svn: 299991

7 years agoInstSimplify: A shuffle of a splat is always the splat itself
Zvi Rackover [Tue, 11 Apr 2017 21:37:02 +0000 (21:37 +0000)]
InstSimplify:  A shuffle of a splat is always the splat itself

Summary:
Fold:
 shuffle (splat-shuffle), undef, M --> splat-shuffle

Reviewers: spatel, RKSimon, craig.topper

Reviewed By: RKSimon

Subscribers: llvm-commits

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

llvm-svn: 299990

7 years ago[ODRHash] Improve handling of hash values
Richard Trieu [Tue, 11 Apr 2017 21:31:00 +0000 (21:31 +0000)]
[ODRHash] Improve handling of hash values

Calculating the hash in Sema::ActOnTagFinishDefinition could happen before
all sub-Decls were parsed or processed, which would produce the wrong hash
value.  Change to calculating the hash on the first use and storing the value
instead.  Also, avoid using the macros that were only for Boolean fields and
use an explicit checker during the DefintionData merge.  No functional change,
but was this blocking other ODRHash patches.

llvm-svn: 299989

7 years ago[DAGCombine] Add more test cases for shuffle of splat. NFC.
Zvi Rackover [Tue, 11 Apr 2017 21:16:59 +0000 (21:16 +0000)]
[DAGCombine] Add more test cases for shuffle of splat. NFC.

Tests added contain splat-masks with undef elements.

llvm-svn: 299988

7 years agoModular Codegen: Support homing debug info for types in modular objects
David Blaikie [Tue, 11 Apr 2017 21:13:37 +0000 (21:13 +0000)]
Modular Codegen: Support homing debug info for types in modular objects

Matching the function-homing support for modular codegen. Any type
implicitly (implicit template specializations) or explicitly defined in
a module is attached to that module's object file and omitted elsewhere
(only a declaration used if necessary for references).

llvm-svn: 299987

7 years ago[x86] Relax the check in areLoadsFromSameBasePtr
Easwaran Raman [Tue, 11 Apr 2017 21:05:02 +0000 (21:05 +0000)]
[x86] Relax the check in areLoadsFromSameBasePtr

Check if the scale operand is identical (doesn't have to be 1) and
do not check the chaain operand.

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

llvm-svn: 299986

7 years ago[LV] Avoid vectorizing first order recurrence when phi uses are outside loop
Anna Thomas [Tue, 11 Apr 2017 21:02:00 +0000 (21:02 +0000)]
[LV] Avoid vectorizing first order recurrence when phi uses are outside loop

In the vectorization of first order recurrence, we vectorize such
that the last element in the vector will be the one extracted to pass into the
scalar remainder loop. However, this is not true when there is a phi (other
than the primary induction variable) is used outside the loop.
In such a case, we need the value from the second last iteration (i.e.
the phi value), not the last iteration (which would be the phi update).
I've added a test case for this. Also see PR32396.

A follow up patch would generate the correct code gen for such cases,
and turn this vectorization on.

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

Reviewers: mssimpso
llvm-svn: 299985

7 years ago[InstSimplify] add tests for chains of shuffles; NFC
Sanjay Patel [Tue, 11 Apr 2017 20:54:57 +0000 (20:54 +0000)]
[InstSimplify] add tests for chains of shuffles; NFC

llvm-svn: 299984

7 years ago[ExternalASTMerger] Removed a move constructor to address MSVC build failure
Sean Callanan [Tue, 11 Apr 2017 20:51:21 +0000 (20:51 +0000)]
[ExternalASTMerger] Removed a move constructor to address MSVC build failure

llvm-svn: 299983

7 years agoModular Codegen: Add/use a bit in serialized function definitions to track whether...
David Blaikie [Tue, 11 Apr 2017 20:46:34 +0000 (20:46 +0000)]
Modular Codegen: Add/use a bit in serialized function definitions to track whether they are the subject of modular codegen

Some decls are created not where they are written, but in other module
files/users (implicit special members and function template implicit
specializations). To correctly identify them, use a bit next to the definition
to track the modular codegen property.

Discussed whether the module file bit could be omitted in favor of
reconstituting from the modular codegen decls list - best guess today is that
the efficiency improvement of not having to deserialize the whole list whenever
any function is queried by a module user is worth it for the small size
increase of this redundant (list + bit-on-def) representation.

Reviewers: rsmith

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

llvm-svn: 299982

7 years agoAdd const children() accessors to match the existing non-const children() accessors.
Aaron Ballman [Tue, 11 Apr 2017 20:21:30 +0000 (20:21 +0000)]
Add const children() accessors to match the existing non-const children() accessors.

llvm-svn: 299981

7 years agoMemorySSA: Move to Analysis, from Transforms/Utils. It's used as
Daniel Berlin [Tue, 11 Apr 2017 20:06:36 +0000 (20:06 +0000)]
MemorySSA: Move to Analysis, from Transforms/Utils. It's used as
Analysis, it has Analysis passes, and once NewGVN is made an Analysis,
this removes the cross dependency from Analysis to Transform/Utils.
NFC.

llvm-svn: 299980

7 years agoImplement standalone lsan interceptors for OS X
Francis Ricci [Tue, 11 Apr 2017 20:05:02 +0000 (20:05 +0000)]
Implement standalone lsan interceptors for OS X

Summary:
Mimicks the existing tsan and asan implementations of
Darwin interception.

Reviewers: kubamracek, kcc, glider

Subscribers: llvm-commits, mgorny

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

llvm-svn: 299979

7 years agoDon't delete lsan thread-local data until it's no longer required
Francis Ricci [Tue, 11 Apr 2017 19:57:12 +0000 (19:57 +0000)]
Don't delete lsan thread-local data until it's no longer required

Summary:
The routines for thread destruction in the thread registry require
the lsan thread index, which is stored in pthread tls on OS X.
This means that we need to make sure that the lsan tls isn't destroyed
until after the thread registry tls. This change ensures that we
don't delete the lsan tls until we've finished destroying the thread
in the registry, ensuring that the destructor for the lsan tls runs
after the destructor for the thread registry tls.

This patch also adds a check to ensure that the thread ID is valid before
returning it in GetThreadID(), to ensure that the above behavior
is working correctly.

Reviewers: dvyukov, kubamracek, kcc

Subscribers: llvm-commits

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

llvm-svn: 299978

7 years ago[ExternalASTMerger] Fix the MSVC build
Sean Callanan [Tue, 11 Apr 2017 19:50:37 +0000 (19:50 +0000)]
[ExternalASTMerger] Fix the MSVC build

llvm-svn: 299977

7 years ago[clang-import-test] Lookup inside contexts
Sean Callanan [Tue, 11 Apr 2017 19:33:35 +0000 (19:33 +0000)]
[clang-import-test] Lookup inside contexts

clang-import-test has until now been only able to report top-level Decls.
This is clearly insufficient; we should be able to look inside structs
and namespaces also.  This patch adds new test cases for a variety of
lookups inside existing ASTContexts, and adds the functionality necessar
to make most of these testcases work.  (One testcase is known to fail
because of ASTImporter limitations when importing templates; I'll look
into that separately.)

This patch also separates the core functionality out into
ExternalASTMerger, an interface that allows clients like LLDB to make
use of it.  clang-import-test now only has the machinery necessary to
set up the tests.

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

llvm-svn: 299976

7 years agoMIR: Allow parsing of empty machine functions
Justin Bogner [Tue, 11 Apr 2017 19:32:41 +0000 (19:32 +0000)]
MIR: Allow parsing of empty machine functions

If you run llc -stop-after=codegenprepare and feed the resulting MIR
to llc -start-after=codegenprepare, you'll have an empty machine
function since we haven't run any isel yet. Of course, this only works
if the MIRParser believes you that this is okay.

This is essentially a revert of r241862 with a fix for the problem it
was papering over.

llvm-svn: 299975

7 years ago[AArch64] Simplify MacroFusion
Evandro Menezes [Tue, 11 Apr 2017 19:13:11 +0000 (19:13 +0000)]
[AArch64] Simplify MacroFusion

This patch assumes that the dependents to be scanned for the ExitSU are its
predecessors; otherwise, the successors of the instr are scanned.

Furthermore, sometimes the ExitSU was being fused twice, since it may be
fused once when scanning the successors from the beginning of the BB and
then again when scanning the predecessors of ExitSU.  Thus, when scanning
the successors of an instr, skip the ExitSU.

llvm-svn: 299974

7 years ago[X86] Create the correct ADC/SBB SDNode when lowering add.
Davide Italiano [Tue, 11 Apr 2017 19:11:20 +0000 (19:11 +0000)]
[X86] Create the correct ADC/SBB SDNode when lowering add.

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

llvm-svn: 299973

7 years ago[AddDiscriminators] Assign discriminators to MemIntrinsic calls.
Andrea Di Biagio [Tue, 11 Apr 2017 19:07:30 +0000 (19:07 +0000)]
[AddDiscriminators] Assign discriminators to MemIntrinsic calls.

Before this patch, pass AddDiscriminators always avoided to assign
discriminators to intrinsic calls. This was done mainly for two reasons:
 1) We wanted to minimize the number of based discriminators used.
 2) We wanted to avoid non-deterministic discriminator assignment for
    different debug levels.

Unfortunately, that approach was problematic for MemIntrinsic calls.
MemIntrinsic calls can be split by SROA into loads and stores, and each new
load/store instruction would obtain the debug location from the original
intrinsic call.
If we don't assign a discriminator to MemIntrinsic calls, then we cannot
correctly set the discriminator for the newly created loads and stores.
This may have a negative impact on the basic block weight computation
performed by the SampleLoader.

This patch fixes the issue by letting MemIntrinsic calls have a discriminator.

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

llvm-svn: 299972

7 years ago[InstCombine] Add testcases for (B&A)^A -> ~B & A and (B|A)^A -> B & ~A
Craig Topper [Tue, 11 Apr 2017 18:50:48 +0000 (18:50 +0000)]
[InstCombine] Add testcases for (B&A)^A -> ~B & A and (B|A)^A -> B & ~A

llvm-svn: 299971

7 years agoFix spelling compliment->complement. Mostly refering to 2s complement. NFC
Craig Topper [Tue, 11 Apr 2017 18:47:58 +0000 (18:47 +0000)]
Fix spelling compliment->complement. Mostly refering to 2s complement. NFC

llvm-svn: 299970

7 years ago[LV] Move first order recurrence test to common folder. NFC
Anna Thomas [Tue, 11 Apr 2017 18:31:42 +0000 (18:31 +0000)]
[LV] Move first order recurrence test to common folder. NFC

llvm-svn: 299969

7 years ago[libFuzzer] fix type in signal name.
Vitaly Buka [Tue, 11 Apr 2017 18:20:05 +0000 (18:20 +0000)]
[libFuzzer] fix type in signal name.

Fixes PR32576.

Patch by Jakub Zawadzki.

llvm-svn: 299968

7 years agollvm-lto2: Move the LTO::run() action behind a subcommand.
Peter Collingbourne [Tue, 11 Apr 2017 18:12:00 +0000 (18:12 +0000)]
llvm-lto2: Move the LTO::run() action behind a subcommand.

Move LTO::run() to a "run" subcommand so that we can introduce new subcommands
for testing different parts of the LTO implementation.

This doesn't use llvm::cl subcommands because it doesn't appear to be currently
possible to pass an argument not associated with a subcommand to a subcommand
(e.g. -lto-use-new-pm, -mcpu=yonah).

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

llvm-svn: 299967

7 years ago[InstCombine] Use ConstantExpr::getBinOpIdentity to implement getIdentityValue.
Craig Topper [Tue, 11 Apr 2017 17:42:40 +0000 (17:42 +0000)]
[InstCombine] Use ConstantExpr::getBinOpIdentity to implement getIdentityValue.

This removes a TODO in getIdentityValue and may allow some transforms to occur earlier. But I was unable to find any transforms we didn't already handle.

llvm-svn: 299966

7 years ago[OpenCL] Map default address space to alloca address space
Yaxun Liu [Tue, 11 Apr 2017 17:24:23 +0000 (17:24 +0000)]
[OpenCL] Map default address space to alloca address space

For OpenCL, the private address space qualifier is 0 in AST. Before this change, 0 address space qualifier
is always mapped to target address space 0. As now target private address space is specified by
alloca address space in data layout, address space qualifier 0 needs to be mapped to alloca addr space specified by the data layout.

This change has no impact on targets whose alloca addr space is 0.

With contributions from Matt Arsenault, Tony Tye and Wen-Heng (Jack) Chung

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

llvm-svn: 299965

7 years ago[AMDGPU] Add A5 to data layout for amdgiz environment
Yaxun Liu [Tue, 11 Apr 2017 17:18:13 +0000 (17:18 +0000)]
[AMDGPU] Add A5 to data layout for amdgiz environment

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

llvm-svn: 299964

7 years agoImplement LWG#2873: 'Add noexcept to several shared_ptr related functions' This issue...
Marshall Clow [Tue, 11 Apr 2017 17:08:53 +0000 (17:08 +0000)]
Implement LWG#2873: 'Add noexcept to several shared_ptr related functions' This issue missed a couple, so I added those as well (see LWG#2942)

llvm-svn: 299963

7 years ago[ASTPrinter] Print nested name specifiers for out-of-line functions
Alex Lorenz [Tue, 11 Apr 2017 16:46:03 +0000 (16:46 +0000)]
[ASTPrinter] Print nested name specifiers for out-of-line functions

rdar://31501863

llvm-svn: 299962

7 years agoAdd the definition of P in the clang tidy example
Sylvestre Ledru [Tue, 11 Apr 2017 16:28:15 +0000 (16:28 +0000)]
Add the definition of P in the clang tidy example

llvm-svn: 299961

7 years agoRevert 299954 : test failure needs to be fixed
Xinliang David Li [Tue, 11 Apr 2017 16:27:26 +0000 (16:27 +0000)]
Revert 299954 : test failure needs to be fixed

llvm-svn: 299960

7 years agoRevert 299953 : test failure needs to be fixed
Xinliang David Li [Tue, 11 Apr 2017 16:27:20 +0000 (16:27 +0000)]
Revert 299953 : test failure needs to be fixed

llvm-svn: 299959

7 years ago[PDB] Emit index/offset pairs for TPI and IPI streams
Reid Kleckner [Tue, 11 Apr 2017 16:26:15 +0000 (16:26 +0000)]
[PDB] Emit index/offset pairs for TPI and IPI streams

Summary:
This lets PDB readers lookup type record data by type index in O(log n)
time. It also enables makes `cvdump -t` work on PDBs produced by LLD.
cvdump will not dump a PDB that doesn't have an index-to-offset table.

The table is sorted by type index, and has an entry every 8KB. Looking
up a type record by index is a binary search of this table, followed by
a scan of at most 8KB.

Reviewers: ruiu, zturner, inglorion

Subscribers: llvm-commits

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

llvm-svn: 299958