OSDN Git Service

android-x86/external-llvm.git
8 years agoRevert "[MC] Support symbolic expressions in assembly directives"
Reid Kleckner [Wed, 25 May 2016 23:29:08 +0000 (23:29 +0000)]
Revert "[MC] Support symbolic expressions in assembly directives"

This reverts commit r270786, it causes the directive_fill.s to fail.

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

8 years ago[Kaleidoscope][BuildingAJIT] Add code for the 2nd chapter of the BuildingAJIT
Lang Hames [Wed, 25 May 2016 23:25:23 +0000 (23:25 +0000)]
[Kaleidoscope][BuildingAJIT] Add code for the 2nd chapter of the BuildingAJIT
tutorial.

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

8 years ago[codeview] Use comdats for debug info describing comdat functions
Reid Kleckner [Wed, 25 May 2016 23:16:12 +0000 (23:16 +0000)]
[codeview] Use comdats for debug info describing comdat functions

Summary:
This allows the linker to discard unused symbol information for comdat
functions that were discarded during the link. Before this change,
searching for the name of an inline function in the debugger would
return multiple results, one per symbol subsection in the object file.
After this change, there is only one result, the result for the function
chosen by the linker.

Reviewers: zturner, majnemer

Subscribers: aaboud, amccarth, llvm-commits

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

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

8 years agoObjective-C Class Properties: Autoupgrade "Class Properties" module flag.
Manman Ren [Wed, 25 May 2016 23:14:48 +0000 (23:14 +0000)]
Objective-C Class Properties: Autoupgrade "Class Properties" module flag.

When we have "Image Info Version" module flag but don't have "Class Properties"
module flag, set "Class Properties" module flag to 0, so we can correctly emit
errors when one module has the flag set and another module does not.

rdar://26469641

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

8 years ago[NVPTX] Don't (incorrectly) say that the NVVMReflect pass preserves all analyses.
Justin Lebar [Wed, 25 May 2016 23:12:38 +0000 (23:12 +0000)]
[NVPTX] Don't (incorrectly) say that the NVVMReflect pass preserves all analyses.

Reviewers: tra

Subscribers: jholewinski, llvm-commits

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

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

8 years ago[CUDA] Add section to docs about controlling fp optimizations.
Justin Lebar [Wed, 25 May 2016 23:11:31 +0000 (23:11 +0000)]
[CUDA] Add section to docs about controlling fp optimizations.

Reviewers: rnk

Subscribers: llvm-commits, tra

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

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

8 years agoRemove unused header.
Eric Christopher [Wed, 25 May 2016 22:56:58 +0000 (22:56 +0000)]
Remove unused header.

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

8 years ago[Kaleidoscope][BuildingAJIT] Delete trailing whitespace.
Lang Hames [Wed, 25 May 2016 22:48:43 +0000 (22:48 +0000)]
[Kaleidoscope][BuildingAJIT] Delete trailing whitespace.

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

8 years ago[MC] Support symbolic expressions in assembly directives
Petr Hosek [Wed, 25 May 2016 22:47:51 +0000 (22:47 +0000)]
[MC] Support symbolic expressions in assembly directives

This matches the behavior of GNU assembler which supports symbolic
expressions in absolute expressions used in assembly directives.

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

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

8 years agoDon't repeat name in comment and git-clang-format.
Rafael Espindola [Wed, 25 May 2016 22:44:06 +0000 (22:44 +0000)]
Don't repeat name in comment and git-clang-format.

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

8 years agoWork around an MSVC compiler issue in r270776.
Adrian Prantl [Wed, 25 May 2016 22:37:29 +0000 (22:37 +0000)]
Work around an MSVC compiler issue in r270776.

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

8 years ago[Kaleidoscope][BuildingAJIT] Fix code-block indents.
Lang Hames [Wed, 25 May 2016 22:33:25 +0000 (22:33 +0000)]
[Kaleidoscope][BuildingAJIT] Fix code-block indents.

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

8 years ago[LazyValueInfo] Simplify `return after else`. NFCI.
Davide Italiano [Wed, 25 May 2016 22:29:34 +0000 (22:29 +0000)]
[LazyValueInfo] Simplify `return after else`. NFCI.

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

8 years ago[Kaleidoscope][BuildingAJIT] Add a description of the KaleidoscopeJIT addModule
Lang Hames [Wed, 25 May 2016 22:27:25 +0000 (22:27 +0000)]
[Kaleidoscope][BuildingAJIT] Add a description of the KaleidoscopeJIT addModule
method to Chapter1 of the BuildingAJIT tutorial.

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

8 years ago[BasicAA] Improve precision of alloca vs. inbounds GEP alias queries
Michael Kuperstein [Wed, 25 May 2016 22:23:08 +0000 (22:23 +0000)]
[BasicAA] Improve precision of alloca vs. inbounds GEP alias queries

If a we have (a) a GEP and (b) a pointer based on an alloca, and the
beginning of the object the GEP points would have a negative offset with
repsect to the alloca, then the GEP can not alias pointer (b).

For example, consider code like:

struct { int f0, int f1, ...} foo;
...
foo alloca;
foo *random = bar(alloca);
int *f0 = &alloca.f0
int *f1 = &random->f1;

Which is lowered, approximately, to:
%alloca = alloca %struct.foo
%random = call %struct.foo* @random(%struct.foo* %alloca)
%f0 = getelementptr inbounds %struct, %struct.foo* %alloca, i32 0, i32 0
%f1 = getelementptr inbounds %struct, %struct.foo* %random, i32 0, i32 1

Assume %f1 and %f0 alias. Then %f1 would point into the object allocated
by %alloca. Since the %f1 GEP is inbounds, that means %random must also
point into the same object. But since %f0 points to the beginning of %alloca,
the highest %f1 can be is (%alloca + 3). This means %random can not be higher
than (%alloca - 1), and so is not inbounds, a contradiction.

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

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

8 years agoPR26055: Speed up LiveDebugValues by replacing lists with bitvectors.
Adrian Prantl [Wed, 25 May 2016 22:21:12 +0000 (22:21 +0000)]
PR26055: Speed up LiveDebugValues by replacing lists with bitvectors.
This patch modifies the LiveDebugValues pass to use more efficient set
data structures as outlined in PR26055. Both VarLocSet and VarLocList are
now SparseBitVectors which allows us to perform much faster bitvector
arithmetic on them.

The speedup can be in the order of minutes especially on ASANified code.

The change is not NFC in the assembler output because the inserted
DBG_VALUEs are now sorted by variable and location.

Many thanks to Daniel Berlin for helping design the improved algorithm and
reviewing the patch.

https://llvm.org/bugs/show_bug.cgi?id=26055
http://reviews.llvm.org/D20178
rdar://problem/24091200

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

8 years ago[MBB] Early exit to reduce indentation, per coding guidelines. NFC.
Chad Rosier [Wed, 25 May 2016 21:53:46 +0000 (21:53 +0000)]
[MBB] Early exit to reduce indentation, per coding guidelines. NFC.

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

8 years agoLook for a loop's starting location in the llvm.loop metadata
Hal Finkel [Wed, 25 May 2016 21:42:37 +0000 (21:42 +0000)]
Look for a loop's starting location in the llvm.loop metadata

Getting accurate locations for loops is important, because those locations are
used by the frontend to generate optimization remarks. Currently, optimization
remarks for loops often appear on the wrong line, often the first line of the
loop body instead of the loop itself. This is confusing because that line might
itself be another loop, or might be somewhere else completely if the body was
inlined function call. This happens because of the way we find the loop's
starting location. First, we look for a preheader, and if we find one, and its
terminator has a debug location, then we use that. Otherwise, we look for a
location on an instruction in the loop header.

The fallback heuristic is not bad, but will almost always find the beginning of
the body, and not the loop statement itself. The preheader location search
often fails because there's often not a preheader, and even when there is a
preheader, depending on how it was formed, it sometimes carries the location of
some preceeding code.

I don't see any good theoretical way to fix this problem. On the other hand,
this seems like a straightforward solution: Put the debug location in the
loop's llvm.loop metadata. A companion Clang patch will cause Clang to insert
llvm.loop metadata with appropriate locations when generating debugging
information. With these changes, our loop remarks have much more accurate
locations.

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

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

8 years agoSort includes.
Rafael Espindola [Wed, 25 May 2016 21:37:29 +0000 (21:37 +0000)]
Sort includes.

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

8 years agoPort the strip-invalid-debuginfo logic to the legacy verifier pass, too.
Adrian Prantl [Wed, 25 May 2016 21:33:20 +0000 (21:33 +0000)]
Port the strip-invalid-debuginfo logic to the legacy verifier pass, too.

Since r268966 the modern Verifier pass defaults to stripping invalid debug info
in nonasserts builds.  This patch ports this behavior back to the legacy
Verifier pass as well.  The primary motivation is that the clang frontend
accepts bitcode files as input but is still using the legacy pass pipeline.

Background: The problem I'm trying to solve with this sequence of patches is
that historically we've done a really bad job at verifying debug info. We want
to be able to make the verifier stricter without having to worry about breaking
bitcode compatibility with existing producers. For example, we don't necessarily
want IR produced by an older version of clang to be rejected by an LTO link just
because of malformed debug info, and rather provide an option to strip it. Note
that merely outdated (but well-formed) debug info would continue to be
auto-upgraded in this scenario.

http://reviews.llvm.org/D20629
<rdar://problem/26448800>

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

8 years ago[X86][SSE41] Removed pblendw intrinsics tests - they are auto-upgraded
Simon Pilgrim [Wed, 25 May 2016 21:27:58 +0000 (21:27 +0000)]
[X86][SSE41] Removed pblendw intrinsics tests - they are auto-upgraded

Equivalent tests included in sse41-intrinsics-x86-upgrade.ll - the i8/i32 immediate diff doesn't matter anymore

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

8 years agoMove whole-program virtual call optimization pass after function attribute inference...
Peter Collingbourne [Wed, 25 May 2016 21:26:14 +0000 (21:26 +0000)]
Move whole-program virtual call optimization pass after function attribute inference in LTO pipeline.

As a result of D18634 we no longer infer certain attributes on linkonce_odr
functions at compile time, and may only infer them at LTO time. The readnone
attribute in particular is required for virtual constant propagation (part
of whole-program virtual call optimization) to work correctly.

This change moves the whole-program virtual call optimization pass after
the function attribute inference passes, and enables the attribute inference
passes at opt level 1, so that virtual constant propagation has a chance to
work correctly for linkonce_odr functions.

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

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

8 years ago[X86][SSE41] Regenerated intrinsics tests
Simon Pilgrim [Wed, 25 May 2016 21:21:51 +0000 (21:21 +0000)]
[X86][SSE41] Regenerated intrinsics tests

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

8 years ago[TLI] Also cover Linux 64 libfunc (stat64, ...) prototype checking.
Ahmed Bougacha [Wed, 25 May 2016 21:16:33 +0000 (21:16 +0000)]
[TLI] Also cover Linux 64 libfunc (stat64, ...) prototype checking.

My script missed those in r270750.

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

8 years ago[X86][SSE41] Removed blendpd/blendps intrinsics tests - they are auto-upgraded
Simon Pilgrim [Wed, 25 May 2016 21:06:36 +0000 (21:06 +0000)]
[X86][SSE41] Removed blendpd/blendps intrinsics tests - they are auto-upgraded

Equivalent tests included in sse41-intrinsics-x86-upgrade.ll

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

8 years agofix typo; NFC
Sanjay Patel [Wed, 25 May 2016 21:03:31 +0000 (21:03 +0000)]
fix typo; NFC

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

8 years agoValueMaterializer: rename materializeDeclFor() to materialize()
Mehdi Amini [Wed, 25 May 2016 21:03:21 +0000 (21:03 +0000)]
ValueMaterializer: rename materializeDeclFor() to materialize()

It may materialize a declaration, or a definition. The name could
be misleading. This is following a merge of materializeInitFor()
into materializeDeclFor().

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

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

8 years agoValueMaterializer: fuse materializeDeclFor and materializeInitFor (NFC)
Mehdi Amini [Wed, 25 May 2016 21:01:51 +0000 (21:01 +0000)]
ValueMaterializer: fuse materializeDeclFor and materializeInitFor (NFC)

They were originally separated to handle the co-recursion between
the ValueMapper and the ValueMaterializer. This recursion does not
exist anymore: the ValueMapper now uses a Worklist and the
ValueMaterializer is scheduling job on the Worklist.

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

From: Mehdi Amini <mehdi.amini@apple.com>

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

8 years agoIRLinker: fix double scheduling of mapping a global value because of an alias
Mehdi Amini [Wed, 25 May 2016 21:00:44 +0000 (21:00 +0000)]
IRLinker: fix double scheduling of mapping a global value because of an alias

This test was hitting an assertion in the value mapper because
the IRLinker was trying to map two times @A while materializing
the initializer for @C.

Fix http://llvm.org/PR27850

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

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

8 years ago[X86][AVX2] Regenerate avx2 vector shift tests
Simon Pilgrim [Wed, 25 May 2016 21:00:40 +0000 (21:00 +0000)]
[X86][AVX2] Regenerate avx2 vector shift tests

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

8 years ago[libfuzzer] replacing unittest for truncate_units with functional test.
Mike Aizatsky [Wed, 25 May 2016 21:00:17 +0000 (21:00 +0000)]
[libfuzzer] replacing unittest for truncate_units with functional test.

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

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

8 years agoSimplify std::all_of/any_of predicates by using llvm::all_of/any_of. NFCI.
Simon Pilgrim [Wed, 25 May 2016 20:41:11 +0000 (20:41 +0000)]
Simplify std::all_of/any_of predicates by using llvm::all_of/any_of. NFCI.

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

8 years ago[codeview] Move StreamInterface and StreamReader to libcodeview.
Zachary Turner [Wed, 25 May 2016 20:37:03 +0000 (20:37 +0000)]
[codeview] Move StreamInterface and StreamReader to libcodeview.

We have need to reuse this functionality, including making
additional generic stream types that are smarter about how and
when they copy memory versus referencing the original memory.
So all of these structures belong in the common library
rather than being pdb specific.

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

8 years ago[TLI] Fix NumParams==0 prototype checking typo.
Ahmed Bougacha [Wed, 25 May 2016 20:22:45 +0000 (20:22 +0000)]
[TLI] Fix NumParams==0 prototype checking typo.

There was a typo in r267758. It caused invalid accesses when
given something like "void @free(...)", as NumParams == 0, and
we then try to look at the 0th parameter.

Turns out, most of these were untested; add both attribute
and missing-prototype checks for all libc libfuncs.

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

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

8 years agoSimplify std::all_of predicate (to one line) by using llvm::all_of. NFCI.
Simon Pilgrim [Wed, 25 May 2016 20:17:39 +0000 (20:17 +0000)]
Simplify std::all_of predicate (to one line) by using llvm::all_of. NFCI.

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

8 years agoSimplify std::all_of predicate (to one line) by using llvm::all_of. NFCI.
Simon Pilgrim [Wed, 25 May 2016 20:13:39 +0000 (20:13 +0000)]
Simplify std::all_of predicate (to one line) by using llvm::all_of. NFCI.

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

8 years agoFix shouldAssumeDSOLocal for private linkage.
Rafael Espindola [Wed, 25 May 2016 19:55:16 +0000 (19:55 +0000)]
Fix shouldAssumeDSOLocal for private linkage.

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

8 years ago[libFuzzer] document the proposed FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
Kostya Serebryany [Wed, 25 May 2016 18:41:53 +0000 (18:41 +0000)]
[libFuzzer] document the proposed FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION

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

8 years ago[IR] Copy comdats in GlobalObject::copyAttributesFrom
Reid Kleckner [Wed, 25 May 2016 18:36:22 +0000 (18:36 +0000)]
[IR] Copy comdats in GlobalObject::copyAttributesFrom

This is probably correct for all uses except cross-module IR linking,
where we need to move the comdat from the source module to the
destination module.

Fixes PR27870.

Reviewers: majnemer

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

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

8 years ago[llvm-pdbdump] Dump raw stream contents as binary block.
Zachary Turner [Wed, 25 May 2016 18:32:07 +0000 (18:32 +0000)]
[llvm-pdbdump] Dump raw stream contents as binary block.

Dumping it as ASCII makes it fairly useless.

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

8 years agoTableGen: Use StringRef instead of std::string
Matt Arsenault [Wed, 25 May 2016 18:07:40 +0000 (18:07 +0000)]
TableGen: Use StringRef instead of std::string

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

8 years agoAMDGPU: Fix v2i64/v2f64 bitcasts
Matt Arsenault [Wed, 25 May 2016 18:07:36 +0000 (18:07 +0000)]
AMDGPU: Fix v2i64/v2f64 bitcasts

These operations tend to get promoted away to v4i32 so
this doesn't happen often.

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

8 years agoAMDGPU: Fix missing br_cc i1 test coverage
Matt Arsenault [Wed, 25 May 2016 17:58:27 +0000 (17:58 +0000)]
AMDGPU: Fix missing br_cc i1 test coverage

Also un xfail a test.

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

8 years ago[SelectionDAG] Add smarts for BSWAP in computeKnownBits.
Chad Rosier [Wed, 25 May 2016 17:52:38 +0000 (17:52 +0000)]
[SelectionDAG] Add smarts for BSWAP in computeKnownBits.

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

8 years agoAMDGPU: Make vectorization defeating test changes
Matt Arsenault [Wed, 25 May 2016 17:42:39 +0000 (17:42 +0000)]
AMDGPU: Make vectorization defeating test changes

Simplifies test updates in the future.

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

8 years ago[PM] CorrelatedValuePropagation: pass state to function. NFCI.
Davide Italiano [Wed, 25 May 2016 17:39:54 +0000 (17:39 +0000)]
[PM] CorrelatedValuePropagation: pass state to function. NFCI.

While here, convert the logic of the pass to use static function(s).
This is in preparation for porting this pass to the new PM.

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

8 years agoAMDGPU: Fix inconsistent lowering of select of vectors
Matt Arsenault [Wed, 25 May 2016 17:34:58 +0000 (17:34 +0000)]
AMDGPU: Fix inconsistent lowering of select of vectors

f32 vectors would use a sequence of BFI instructions instead
of unrolled cmp + select. This was better in the case of a VALU
select with SGPR inputs, but we don't have a way of dealing with that
in the DAG.

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

8 years ago[x86] avoid code explosion from LoopVectorizer for gather loop (PR27826)
Sanjay Patel [Wed, 25 May 2016 17:27:54 +0000 (17:27 +0000)]
[x86] avoid code explosion from LoopVectorizer for gather loop (PR27826)

By making pointer extraction from a vector more expensive in the cost model,
we avoid the vectorization of a loop that is very likely to be memory-bound:
https://llvm.org/bugs/show_bug.cgi?id=27826

There are still bugs related to this, so we may need a more general solution
to avoid vectorizing obviously memory-bound loops when we don't have HW gather
support.

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

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

8 years agoUse new triple API to check if comdat is supported
Xinliang David Li [Wed, 25 May 2016 17:17:51 +0000 (17:17 +0000)]
Use new triple API to check if comdat is supported

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

8 years agoAdd a new helper API in triple /NFC
Xinliang David Li [Wed, 25 May 2016 17:11:31 +0000 (17:11 +0000)]
Add a new helper API in triple /NFC

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

8 years ago[obj2yaml] [yaml2obj] MachO support for rebase opcodes
Chris Bieneman [Wed, 25 May 2016 17:09:07 +0000 (17:09 +0000)]
[obj2yaml] [yaml2obj] MachO support for rebase opcodes

This is the first bit of support for MachO __LINKEDIT segment data.

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

8 years ago[CMake] LINK_LIBS need to be public for Darwin dylib targets
Chris Bieneman [Wed, 25 May 2016 17:08:43 +0000 (17:08 +0000)]
[CMake] LINK_LIBS need to be public for Darwin dylib targets

This should actually address PR27855. This results in adding references to the system libs inside generated dylibs so that they get correctly pulled in when linking against the dylib.

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

8 years agoMove and add comments to the top for tailcall-string-rvo.ll
Tim Shen [Wed, 25 May 2016 17:01:09 +0000 (17:01 +0000)]
Move and add comments to the top for tailcall-string-rvo.ll

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

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

8 years ago[SDAG] Add a fallback multiplication expansion
Hal Finkel [Wed, 25 May 2016 16:50:22 +0000 (16:50 +0000)]
[SDAG] Add a fallback multiplication expansion

LegalizeIntegerTypes does not have a way to expand multiplications for large
integer types (i.e. larger than twice the native bit width). There's no
standard runtime call to use in that case, and so we'd just assert.

Unfortunately, as it turns out, it is possible to hit this case from
standard-ish C code in rare cases. A particular case a user ran into yesterday
involved an __int128 induction variable and a loop with a quadratic (not
linear) recurrence which triggered some backend logic using SCEVExpander. In
this case, the BinomialCoefficient code in SCEV generates some i129 variables,
which get widened to i256. At a high level, this is not actually good (i.e. the
underlying optimization, PPCLoopPreIncPrep, should not be transforming the loop
in question for performance reasons), but regardless, the backend shouldn't
crash because of cost-modeling issues in the optimizer.

This is a straightforward implementation of the multiplication expansion, based
on the algorithm in Hacker's Delight. I validated it against the code for the
mul256b function from http://locklessinc.com/articles/256bit_arithmetic/ using
random inputs. There should be no functional change for previously-working code
(the new expansion code only replaces an assert).

Fixes PR19797.

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

8 years ago[ThinLTO] Fix test check prefix so that intended prefix tested
Teresa Johnson [Wed, 25 May 2016 16:45:08 +0000 (16:45 +0000)]
[ThinLTO] Fix test check prefix so that intended prefix tested

There aren't any checks with prefix PROMOTE, should be PROMOTE_MOD1
which wasn't being tested (but works as expected).

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

8 years ago[x86, AVX] allow explicit calls to VZERO* to modify state in VZeroUpperInserter pass...
Sanjay Patel [Wed, 25 May 2016 16:39:47 +0000 (16:39 +0000)]
[x86, AVX] allow explicit calls to VZERO* to modify state in VZeroUpperInserter pass (PR27823)

As noted in the review, there are still problems, so this doesn't the bug completely.

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

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

8 years ago[RuntimeDyld] Call the SymbolResolver::findSymbolInLogicalDylib method when
Lang Hames [Wed, 25 May 2016 16:23:59 +0000 (16:23 +0000)]
[RuntimeDyld] Call the SymbolResolver::findSymbolInLogicalDylib method when
searching for external symbols, and fall back to the SymbolResolver::findSymbol
method if the former returns null.

This makes RuntimeDyld behave more like a static linker: Symbol definitions
from within the current module's "logical dylib" will be preferred to
external definitions. We can build on this behavior in the future to properly
support weak symbol handling.

Custom symbol resolvers that override the findSymbolInLogicalDylib method may
notice changes due to this patch. Clients who have not overridden this method
should generally be unaffected, however users of the OrcMCJITReplacement class
may notice changes.

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

8 years agoClarify that we match BSwap in InstCombine and BitReverse in CGP. NFC.
Chad Rosier [Wed, 25 May 2016 16:22:14 +0000 (16:22 +0000)]
Clarify that we match BSwap in InstCombine and BitReverse in CGP. NFC.

Also, rename recognizeBitReverseOrBSwapIdiom to recognizeBSwapOrBitReverseIdiom,
so the ordering of the MatchBSwaps and MatchBitReversals arguments are
consistent with the function name.

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

8 years ago[X86][AVX] Sync with clang/test/CodeGen/avx2-builtins.c
Simon Pilgrim [Wed, 25 May 2016 15:30:08 +0000 (15:30 +0000)]
[X86][AVX] Sync with clang/test/CodeGen/avx2-builtins.c

Only tests for the gather intrinsic are still to be added

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

8 years ago[ThinLTO] Refactor ODR resolution and internalization (NFC)
Teresa Johnson [Wed, 25 May 2016 14:03:11 +0000 (14:03 +0000)]
[ThinLTO] Refactor ODR resolution and internalization (NFC)

Move the now index-based ODR resolution and internalization routines out
of ThinLTOCodeGenerator.cpp and into either LTO.cpp (index-based
analysis) or FunctionImport.cpp (index-driven optimizations).
This is to enable usage by other linkers.

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

8 years ago[SCEV] No-wrap flags are not propagated when folding "{S,+,X}+T ==> {S+T,+,X}"
Oleg Ranevskyy [Wed, 25 May 2016 13:01:33 +0000 (13:01 +0000)]
[SCEV] No-wrap flags are not propagated when folding "{S,+,X}+T ==> {S+T,+,X}"

Summary:
**Description**

This makes `WidenIV::widenIVUse` (IndVarSimplify.cpp) fail to widen narrow IV uses in some cases. The latter affects IndVarSimplify which may not eliminate narrow IV's when there actually exists such a possibility, thereby producing ineffective code.

When `WidenIV::widenIVUse` gets a NarrowUse such as `{(-2 + %inc.lcssa),+,1}<nsw><%for.body3>`, it first tries to get a wide recurrence for it via the `getWideRecurrence` call.
`getWideRecurrence` returns recurrence like this: `{(sext i32 (-2 + %inc.lcssa) to i64),+,1}<nsw><%for.body3>`.

Then a wide use operation is generated by `cloneIVUser`. The generated wide use is evaluated to `{(-2 + (sext i32 %inc.lcssa to i64))<nsw>,+,1}<nsw><%for.body3>`, which is different from the `getWideRecurrence` result. `cloneIVUser` sees the difference and returns nullptr.

This patch also fixes the broken LLVM tests by adding missing <nsw> entries introduced by the correction.

**Minimal reproducer:**
```
int foo(int a, int b, int c);
int baz();

void bar()
{
   int arr[20];
   int i = 0;

   for (i = 0; i < 4; ++i)
     arr[i] = baz();

   for (; i < 20; ++i)
     arr[i] = foo(arr[i - 4], arr[i - 3], arr[i - 2]);
}
```

**Clang command line:**
```
clang++ -mllvm -debug -S -emit-llvm -O3 --target=aarch64-linux-elf test.cpp -o test.ir
```

**Expected result:**
The ` -mllvm -debug` log shows that all the IV's for the second `for` loop have been eliminated.

Reviewers: sanjoy

Subscribers: atrick, asl, aemerson, mzolotukhin, llvm-commits

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

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

8 years ago[AArch64] Adding a TargetParser for AArch64
Renato Golin [Wed, 25 May 2016 12:02:33 +0000 (12:02 +0000)]
[AArch64] Adding a TargetParser for AArch64

There's already a ARMTargetParser,now adding a similar one for aarch64.
so we can use it to do ARCH/CPU/FPU parsing in clang and llvm, instead of
string comparison.

Patch by Jojo Ma.

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

8 years ago[X86][AVX2] Added more fast-isel tests to match clang/test/CodeGen/avx2-builtins.c
Simon Pilgrim [Wed, 25 May 2016 10:56:23 +0000 (10:56 +0000)]
[X86][AVX2] Added more fast-isel tests to match clang/test/CodeGen/avx2-builtins.c

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

8 years ago[X86][AVX2] Begun adding fast-isel tests to match clang/test/CodeGen/avx2-builtins.c
Simon Pilgrim [Wed, 25 May 2016 10:15:06 +0000 (10:15 +0000)]
[X86][AVX2] Begun adding fast-isel tests to match clang/test/CodeGen/avx2-builtins.c

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

8 years ago[X86][SSE2] Use storeu intrinsics for _mm_storeu_pd/_mm_storeu_pd tests
Simon Pilgrim [Wed, 25 May 2016 09:42:29 +0000 (09:42 +0000)]
[X86][SSE2] Use storeu intrinsics for _mm_storeu_pd/_mm_storeu_pd tests

Also fixed name of _mm_store1_pd test

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

8 years ago[X86][SSE] Use storeu intrinsics for _mm_storeu_ps test
Simon Pilgrim [Wed, 25 May 2016 09:28:06 +0000 (09:28 +0000)]
[X86][SSE] Use storeu intrinsics for _mm_storeu_ps test

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

8 years ago[X86][SSE] Replace (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) lossless conversion intrinsics...
Simon Pilgrim [Wed, 25 May 2016 08:59:18 +0000 (08:59 +0000)]
[X86][SSE] Replace (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) lossless conversion intrinsics with generic IR

Followup to D20528 clang patch, this removes the (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) llvm intrinsics and auto-upgrades to sitofp/fpext instead.

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

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

8 years ago[X86] Remove the llvm.x86.sse2.storel.dq intrinsic. It hasn't been used in a long...
Craig Topper [Wed, 25 May 2016 06:56:32 +0000 (06:56 +0000)]
[X86] Remove the llvm.x86.sse2.storel.dq intrinsic. It hasn't been used in a long time.

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

8 years ago[Support] Reapply cleanup r270643
Gerolf Hoflehner [Wed, 25 May 2016 06:23:45 +0000 (06:23 +0000)]
[Support] Reapply cleanup r270643

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

8 years ago[FunctionAttrs] Volatile loads should disable readonly
David Majnemer [Wed, 25 May 2016 05:53:04 +0000 (05:53 +0000)]
[FunctionAttrs] Volatile loads should disable readonly

A volatile load has side effects beyond what callers expect readonly to
signify.  For example, it is not safe to reorder two function calls
which each perform a volatile load to the same memory location.

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

8 years ago[Support] revert previous commit r270643
Gerolf Hoflehner [Wed, 25 May 2016 05:51:05 +0000 (05:51 +0000)]
[Support] revert previous commit r270643

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

8 years ago[llvm-pdbdump] Decipher the remaining PDB streams.
Zachary Turner [Wed, 25 May 2016 05:49:48 +0000 (05:49 +0000)]
[llvm-pdbdump] Decipher the remaining PDB streams.

We know at least know the meaning of every stream of the
PDB file.  Yay!

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

8 years agoRevert "llvm-objdump: support dumping AUX records for weak externals"
Saleem Abdulrasool [Wed, 25 May 2016 05:45:02 +0000 (05:45 +0000)]
Revert "llvm-objdump: support dumping AUX records for weak externals"

Revert it until we can figure out the endianness issue.

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

8 years agoObject: ensure that structures are fully defined
Saleem Abdulrasool [Wed, 25 May 2016 05:23:02 +0000 (05:23 +0000)]
Object: ensure that structures are fully defined

Ensure that the unused fields are explicitly stated when defining the types.
Add some compile time assertions about the size requirements for the structure
types.

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

8 years ago[llvm-pdbdump] Dump the IPI stream and all records.
Zachary Turner [Wed, 25 May 2016 04:35:22 +0000 (04:35 +0000)]
[llvm-pdbdump] Dump the IPI stream and all records.

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

8 years agopdbdump: fix bug in name hash table.
Rui Ueyama [Wed, 25 May 2016 04:07:17 +0000 (04:07 +0000)]
pdbdump: fix bug in name hash table.

name_ids() did not return all IDs but only the first NameCount items.
The number of non-zero entries in IDs vector is NameCount, but it
does not mean that all non-zero entries are at the beginning of IDs
vector.

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

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

8 years ago[llvm-pdbdump] Stream 0 isn't actually the MSF superblock.
Zachary Turner [Wed, 25 May 2016 03:53:16 +0000 (03:53 +0000)]
[llvm-pdbdump] Stream 0 isn't actually the MSF superblock.

Oddly enough, I realized we don't actually know what stream
0 is (if anything).

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

8 years agotest: use a binary file instead
Saleem Abdulrasool [Wed, 25 May 2016 03:48:07 +0000 (03:48 +0000)]
test: use a binary file instead

Generate the obj rather than use yaml2obj.  Hopefully, this fixes the PPC64 test
failures.

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

8 years ago[llvm-pdbdump] Dump stream summary list.
Zachary Turner [Wed, 25 May 2016 03:43:17 +0000 (03:43 +0000)]
[llvm-pdbdump] Dump stream summary list.

Try to figure out what each stream is, and dump its name.

This gives us a better picture of what streams we still don't
understand.

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

8 years agoSupport: remove outdated comment
Saleem Abdulrasool [Wed, 25 May 2016 01:59:36 +0000 (01:59 +0000)]
Support: remove outdated comment

This information is in the latest version of the specification.

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

8 years agollvm-objdump: support dumping AUX records for weak externals
Saleem Abdulrasool [Wed, 25 May 2016 01:59:32 +0000 (01:59 +0000)]
llvm-objdump: support dumping AUX records for weak externals

This is a support COFF feature.  Ensure that we can display the weak externals
auxiliary symbol.  It contains useful information (such as the default binding
and how to resolve the symbol).

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

8 years ago[PM] Port BDCE to the new pass manager.
Davide Italiano [Wed, 25 May 2016 01:57:04 +0000 (01:57 +0000)]
[PM] Port BDCE to the new pass manager.

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

8 years agoSoften assertion in AMDGPU emitPrologue.
Nirav Dave [Wed, 25 May 2016 01:45:42 +0000 (01:45 +0000)]
Soften assertion in AMDGPU emitPrologue.

[AMDGPU] emitPrologue looks for an unused unallocated SGPR that is not
the scratch descriptor. Continue search if unused register found fails
other requirements.

Reviewers: arsenm, tstellarAMD, nhaehnle

Subscribers: arsenm, llvm-commits, kzhuravl

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

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

8 years agoFix some Include What You Use warnings in examples; other minor fixes.
Eugene Zelenko [Wed, 25 May 2016 01:18:36 +0000 (01:18 +0000)]
Fix some Include What You Use warnings in examples; other minor fixes.

Differential revision: http://reviews.llvm.org/D20607

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

8 years agoScheduleDAGInstrs: Fix memory corruption
Matthias Braun [Wed, 25 May 2016 01:18:00 +0000 (01:18 +0000)]
ScheduleDAGInstrs: Fix memory corruption

We have to modify V2SU before inserting new elements into the
CurrentVRegDefs set because that may move V2SU in memory invalidating
the reference.

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

8 years ago[Support] Cleanup of an ancient Darwin work-around in Signals.inc (PR26174)
Gerolf Hoflehner [Wed, 25 May 2016 00:54:39 +0000 (00:54 +0000)]
[Support] Cleanup of an ancient Darwin work-around in Signals.inc (PR26174)

Patch by Jeremy Huddleston Sequoia

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

8 years ago[esan|wset] EfficiencySanitizer working set tool fastpath
Derek Bruening [Wed, 25 May 2016 00:17:24 +0000 (00:17 +0000)]
[esan|wset] EfficiencySanitizer working set tool fastpath

Summary:
Adds fastpath instrumentation for esan's working set tool.  The
instrumentation for an intra-cache-line load or store consists of an
inlined write to shadow memory bits for the corresponding cache line.

Adds a basic test for this instrumentation.

Reviewers: aizatsky

Subscribers: vitalybuka, zhaoqin, kcc, eugenis, llvm-commits

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

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

8 years ago[libFuzzer] print stats if we crash on empty input
Kostya Serebryany [Wed, 25 May 2016 00:15:36 +0000 (00:15 +0000)]
[libFuzzer] print stats if we crash on empty input

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

8 years agoRevert r270569 (teach llvm-mc to generate compressed debug sections in zlib
Richard Smith [Wed, 25 May 2016 00:14:12 +0000 (00:14 +0000)]
Revert r270569 (teach llvm-mc to generate compressed debug sections in zlib
style). It appears that current ELF linkers are not ready for this.

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

8 years ago[codeview] Add support for new types and symbols.
Zachary Turner [Wed, 25 May 2016 00:12:48 +0000 (00:12 +0000)]
[codeview] Add support for new types and symbols.

This patch adds support for:

S_EXPORT
LF_BITFIELD

With this patch, I have run through a couple of gigabytes of PDB
files and cannot find a type or symbol that we do not understand.

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

8 years ago[codeview] Add support for S_EXPORT symbol.
Zachary Turner [Wed, 25 May 2016 00:12:40 +0000 (00:12 +0000)]
[codeview] Add support for S_EXPORT symbol.

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

8 years ago[WebAssembly] Put __stack_pointer in the offset field of loads and stores.
Dan Gohman [Tue, 24 May 2016 23:47:41 +0000 (23:47 +0000)]
[WebAssembly] Put __stack_pointer in the offset field of loads and stores.

Instead of this:

i32.const       $push10=, __stack_pointer
i32.load        $push11=, 0($pop10)

Emit this:

i32.const       $push10=, 0
i32.load        $push11=, __stack_pointer($pop10)

It's not currently clear which is better, though there's a chance the second
form may be better at overall compression. We can revisit this when we have
more data; for now it makes sense to make PEI consistent with isel.

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

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

8 years ago[libfuzzer] Trying random unit prefixes during corpus load.
Mike Aizatsky [Tue, 24 May 2016 23:14:29 +0000 (23:14 +0000)]
[libfuzzer] Trying random unit prefixes during corpus load.

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

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

8 years agoRe-enable "[LoopUnroll] Enable advanced unrolling analysis by default" one more time.
Michael Zolotukhin [Tue, 24 May 2016 23:00:05 +0000 (23:00 +0000)]
Re-enable "[LoopUnroll] Enable advanced unrolling analysis by default" one more time.

This reverts commit r270577.

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

8 years ago[LoopUnrollAnalyzer] Fix a crash in UnrolledInstAnalyzer::visitCastInst.
Michael Zolotukhin [Tue, 24 May 2016 22:59:58 +0000 (22:59 +0000)]
[LoopUnrollAnalyzer] Fix a crash in UnrolledInstAnalyzer::visitCastInst.

This fixes PR27847. Now for real.

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

8 years ago[codeview] Add support for new type records.
Zachary Turner [Tue, 24 May 2016 22:58:46 +0000 (22:58 +0000)]
[codeview] Add support for new type records.

This adds support for parsing and dumping the following
symbol types:

S_LPROCREF
S_ENVBLOCK
S_COMPILE2
S_REGISTER
S_COFFGROUP
S_SECTION
S_THUNK32
S_TRAMPOLINE

As of this patch, the test PDB files no longer have any unknown
symbol types.

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

8 years ago[esan] Add calls from the ctor/dtor to the runtime library
Derek Bruening [Tue, 24 May 2016 22:48:24 +0000 (22:48 +0000)]
[esan] Add calls from the ctor/dtor to the runtime library

Summary:
Adds createEsanInitToolGV for creating a tool-specific variable passed
to the runtime library.

Adds dtor "esan.module_dtor" and inserts calls from the dtor to
"__esan_exit" in the runtime library.

Updates the EfficiencySanitizer test.

Patch by Qin Zhao.

Reviewers: aizatsky

Subscribers: bruening, kcc, vitalybuka, eugenis, llvm-commits

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

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

8 years ago[libfuzzer][doc] documenting running libfuzzer tests.
Mike Aizatsky [Tue, 24 May 2016 22:25:46 +0000 (22:25 +0000)]
[libfuzzer][doc] documenting running libfuzzer tests.

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

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

8 years ago[MBP] Factor out the optimizations on branch conditions and unanalyzable branches...
Haicheng Wu [Tue, 24 May 2016 22:16:14 +0000 (22:16 +0000)]
[MBP] Factor out the optimizations on branch conditions and unanalyzable branches. NFCI.

The benefits of this patch are

-- We call AnalyzeBranch() to optimize unanalyzable branches, but the result of
   AnalyzeBranch() is not used. Now the result is useful.

-- Before the layout of all the MBBs is set, the result of AnalyzeBranch() is
   not correct and needs to be fixed before using it to optimize the branch
   conditions. Now this optimization is called after the layout, the code used
   to fix the result of AnalyzeBranch() is not needed.

-- The branch condition of the last block is not optimized before. Now it is
   optimized.

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

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

8 years agoThere's no reason to use _ to name variables different just for construction.
Eric Christopher [Tue, 24 May 2016 22:15:54 +0000 (22:15 +0000)]
There's no reason to use _ to name variables different just for construction.

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