platform/upstream/llvm.git
9 years agoAdded module map coverage support, extracted from module-map-checker.
John Thompson [Thu, 19 Feb 2015 16:47:27 +0000 (16:47 +0000)]
Added module map coverage support, extracted from module-map-checker.

llvm-svn: 229869

9 years agoFix usage of m_bThreadInvalid in -thread-info (MI)
Ilia K [Thu, 19 Feb 2015 16:33:16 +0000 (16:33 +0000)]
Fix usage of m_bThreadInvalid in -thread-info (MI)

llvm-svn: 229868

9 years agoDrop left over code from FinalRead statement removal.
Tobias Grosser [Thu, 19 Feb 2015 16:24:57 +0000 (16:24 +0000)]
Drop left over code from FinalRead statement removal.

We removed FinalRead statements in r152319.

llvm-svn: 229867

9 years agoMake basic_streambuf::xsputn write characters in chunks whenever possible, instead...
Marshall Clow [Thu, 19 Feb 2015 16:17:46 +0000 (16:17 +0000)]
Make basic_streambuf::xsputn write characters in chunks whenever possible, instead of one at a time. References PR#10193

llvm-svn: 229866

9 years agoclang-format: [js] Support ES6 module exports.
Daniel Jasper [Thu, 19 Feb 2015 16:14:18 +0000 (16:14 +0000)]
clang-format: [js] Support ES6 module exports.

Patch by Martin Probst, thank you!

llvm-svn: 229865

9 years agoAvoid conversion to float when creating ConstantDataArray/ConstantDataVector.
Rafael Espindola [Thu, 19 Feb 2015 16:08:20 +0000 (16:08 +0000)]
Avoid conversion to float when creating ConstantDataArray/ConstantDataVector.

Patch by Raoux, Thomas F!

llvm-svn: 229864

9 years agoclang-format: [js] Support ES6 module imports.
Daniel Jasper [Thu, 19 Feb 2015 16:07:32 +0000 (16:07 +0000)]
clang-format: [js] Support ES6 module imports.

Patch by Martin Probst.

llvm-svn: 229863

9 years agoclang-format: [js] Do not fall through for JS structural elements.
Daniel Jasper [Thu, 19 Feb 2015 16:03:16 +0000 (16:03 +0000)]
clang-format: [js] Do not fall through for JS structural elements.

Patch by Martin Probst. Thank you.

llvm-svn: 229862

9 years agoDemote vectors to arrays. No functionality change.
Benjamin Kramer [Thu, 19 Feb 2015 15:26:17 +0000 (15:26 +0000)]
Demote vectors to arrays. No functionality change.

llvm-svn: 229861

9 years ago[ASan/Win] Thread sanitizer common interface through asan_win_dll_thunk.cc
Timur Iskhodzhanov [Thu, 19 Feb 2015 15:25:26 +0000 (15:25 +0000)]
[ASan/Win] Thread sanitizer common interface through asan_win_dll_thunk.cc

llvm-svn: 229860

9 years ago[x86] Delete still more piles of complex code now that we have a good
Chandler Carruth [Thu, 19 Feb 2015 15:21:57 +0000 (15:21 +0000)]
[x86] Delete still more piles of complex code now that we have a good
systematic lowering of v8i16.

This required a slight strategy shift to prefer unpack lowerings in more
places. While this isn't a cut-and-dry win in every case, it is in the
overwhelming majority. There are only a few places where the old
lowering would probably be a touch faster, and then only by a small
margin.

In some cases, this is yet another significant improvement.

llvm-svn: 229859

9 years ago[Sanitizers] Move the common sanitizer interface from sanitizer_internal_defs.h to...
Timur Iskhodzhanov [Thu, 19 Feb 2015 15:15:33 +0000 (15:15 +0000)]
[Sanitizers] Move the common sanitizer interface from sanitizer_internal_defs.h to a new sanitizer_interface_internal.h file

Reviewed at http://reviews.llvm.org/D7758

llvm-svn: 229858

9 years agoAdd -stack-info-frame command (MI)
Ilia K [Thu, 19 Feb 2015 15:14:17 +0000 (15:14 +0000)]
Add -stack-info-frame command (MI)

Summary:
Add -stack-info-frame command + test.

All tests pass on OS X.

Reviewers: emaste, clayborg, abidh

Reviewed By: abidh

Subscribers: lldb-commits, clayborg, emaste, abidh

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

llvm-svn: 229857

9 years ago[x86] Teach the unpack lowering how to lower with an initial unpack in
Chandler Carruth [Thu, 19 Feb 2015 15:06:13 +0000 (15:06 +0000)]
[x86] Teach the unpack lowering how to lower with an initial unpack in
addition to lowering to trees rooted in an unpack.

This saves shuffles and or registers in many various ways, lets us
handle another class of v4i32 shuffles pre SSE4.1 without domain
crosses, etc.

llvm-svn: 229856

9 years agoPruned some unneeded code and comments.
John Thompson [Thu, 19 Feb 2015 14:31:48 +0000 (14:31 +0000)]
Pruned some unneeded code and comments.

llvm-svn: 229855

9 years agoAdd missing comments to member variables
Tobias Grosser [Thu, 19 Feb 2015 14:28:36 +0000 (14:28 +0000)]
Add missing comments to member variables

Reported-by: Johannes Doerfert
llvm-svn: 229854

9 years ago[x86] Dramatically improve v8i16 shuffle lowering by not using its
Chandler Carruth [Thu, 19 Feb 2015 14:08:24 +0000 (14:08 +0000)]
[x86] Dramatically improve v8i16 shuffle lowering by not using its
terribly complex partial blend logic.

This code path was one of the more complex and bug prone when it first
went in and it hasn't faired much better. Ultimately, with the simpler
basis for unpack lowering and support bit-math blending, this is
completely obsolete. In the worst case without this we generate
different but equivalent instructions. However, in many cases we
generate much better code. This is especially true when blends or pshufb
is available.

This does expose one (minor) weakness of the unpack lowering that I'll
try to address.

In case you were wondering, this is actually a big part of what I've
been trying to pull off in the recent string of commits.

llvm-svn: 229853

9 years agoFIX PR 18432, default args, friends & late-parsed members.
Nathan Sidwell [Thu, 19 Feb 2015 14:03:22 +0000 (14:03 +0000)]
FIX PR 18432, default args, friends & late-parsed members.

Sema::MergeCXXFunctionDecl: propagate hasUnparsedDefaultArg to new decl.

Parser::HandleMemberFunctionDeclDelays: check hasUnparsedDefaultArg
flag.

Parser::ParseLexedMethodDeclaration: handle inherited unparsed default
arg case.

llvm-svn: 229852

9 years ago[x86] Remove the final fallback in the v8i16 lowering that isn't really
Chandler Carruth [Thu, 19 Feb 2015 13:56:49 +0000 (13:56 +0000)]
[x86] Remove the final fallback in the v8i16 lowering that isn't really
needed, and significantly improve the SSSE3 path.

This makes the new strategy much more clear. If we can blend, we just go
with that. If we can't blend, we try to permute into an unpack so
that we handle cases where the unpack doing the blend also simplifies
the shuffle. If that fails and we've got SSSE3, we now call into
factored-out pshufb lowering code so that we leverage the fact that
pshufb can set up a blend for us while shuffling. This generates great
code, especially because we *know* we don't have a fast blend at this
point. Finally, we fall back on decomposing into permutes and blends
because we do at least have a bit-math-based blend if we need to use
that.

This pretty significantly improves some of the v8i16 code paths. We
never need to form pshufb for the single-input shuffles because we have
effective target-specific combines to form it there, but we were missing
its effectiveness in the blends.

llvm-svn: 229851

9 years ago[analyzer] Different handling of alloca().
Anton Yartsev [Thu, 19 Feb 2015 13:36:20 +0000 (13:36 +0000)]
[analyzer] Different handling of alloca().

+ separate bug report for "Free alloca()" error to be able to customize checkers responsible for this error.
+ Muted "Free alloca()" error for NewDelete checker that is not responsible for c-allocated memory, turned on for unix.MismatchedDeallocator checker.
+ RefState for alloca() - to be able to detect usage of zero-allocated memory by upcoming ZeroAllocDereference checker.
+ AF_Alloca family to handle alloca() consistently - keep proper family in RefState, handle 'alloca' by getCheckIfTracked() facility, etc.
+ extra tests.

llvm-svn: 229850

9 years ago[x86] Simplify the pre-SSSE3 v16i8 lowering significantly by decomposing
Chandler Carruth [Thu, 19 Feb 2015 13:15:12 +0000 (13:15 +0000)]
[x86] Simplify the pre-SSSE3 v16i8 lowering significantly by decomposing
them into permutes and a blend with the generic decomposition logic.

This works really well in almost every case and lets the code only
manage the expansion of a single input into two v8i16 vectors to perform
the actual shuffle. The blend-based merging is often much nicer than the
pack based merging that this replaces. The only place where it isn't we
end up blending between two packs when we could do a single pack. To
handle that case, just teach the v2i64 lowering to handle these blends
by digging out the operands.

With this we're down to only really random permutations that cause an
explosion of instructions.

llvm-svn: 229849

9 years ago[Mach-O] Rename enum typename for consistency. NFC
Jean-Daniel Dupas [Thu, 19 Feb 2015 12:38:54 +0000 (12:38 +0000)]
[Mach-O] Rename enum typename for consistency. NFC

Typename shouldn't mix camel case and underscore.
Thanks to Rui for the remark.

llvm-svn: 229848

9 years ago[x86] Remove the insanely over-aggressive unpack lowering strategy for
Chandler Carruth [Thu, 19 Feb 2015 12:10:37 +0000 (12:10 +0000)]
[x86] Remove the insanely over-aggressive unpack lowering strategy for
v16i8 shuffles, and replace it with new facilities.

This uses precise patterns to match exact unpacks, and the new
generalized unpack lowering only when we detect a case where we will
have to shuffle both inputs anyways and they terminate in exactly
a blend.

This fixes all of the blend horrors that I uncovered by always lowering
blends through the vector shuffle lowering. It also removes *sooooo*
much of the crazy instruction sequences required for v16i8 lowering
previously. Much cleaner now.

The only "meh" aspect is that we sometimes use pshufb+pshufb+unpck when
it would be marginally nicer to use pshufb+pshufb+por. However, the
difference there is *tiny*. In many cases its a win because we re-use
the pshufb mask. In others, we get to avoid the pshufb entirely. I've
left a FIXME, but I'm dubious we can really do better than this. I'm
actually pretty happy with this lowering now.

For SSE2 this exposes some horrors that were really already there. Those
will have to fixed by changing a different path through the v16i8
lowering.

llvm-svn: 229846

9 years ago[mips][microMIPS] Make usage of AND16, OR16 and XOR16 by code generator
Jozef Kolek [Thu, 19 Feb 2015 11:51:32 +0000 (11:51 +0000)]
[mips][microMIPS] Make usage of AND16, OR16 and XOR16 by code generator

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

llvm-svn: 229845

9 years ago[x86] The SELECT x86 DAG combine also does legalization. It used to rely
Chandler Carruth [Thu, 19 Feb 2015 11:43:37 +0000 (11:43 +0000)]
[x86] The SELECT x86 DAG combine also does legalization. It used to rely
on things not being marked as either custom or legal, but we now do
custom lowering of more VSELECT nodes. To cope with this, manually
replicate the legality tests here. These have to stay in sync with the
set of tests used in the custom lowering of VSELECT.

Ideally, we wouldn't do any of this combine-based-legalization when we
have an actual custom legalization step for VSELECT, but I'm not going
to be able to rewrite all of that today.

I don't have a test case for this currently, but it was found when
compiling a number of the test-suite benchmarks. I'll try to reduce
a test case and add it.

This should at least fix the test-suite fallout on build bots.

llvm-svn: 229844

9 years agoSilence unused variable warnings in release builds
Pavel Labath [Thu, 19 Feb 2015 11:41:12 +0000 (11:41 +0000)]
Silence unused variable warnings in release builds

llvm-svn: 229843

9 years agoAdd few simple tests to check statepoint placement for invoke instructions.
Igor Laevsky [Thu, 19 Feb 2015 11:39:04 +0000 (11:39 +0000)]
Add few simple tests to check statepoint placement for invoke instructions.
Differential Revision: http://reviews.llvm.org/D7535

llvm-svn: 229842

9 years agoReverting r229831 due to multiple ARM/PPC/MIPS build-bot failures.
Michael Kuperstein [Thu, 19 Feb 2015 11:38:11 +0000 (11:38 +0000)]
Reverting r229831 due to multiple ARM/PPC/MIPS build-bot failures.

llvm-svn: 229841

9 years agoImplement invoke statepoint verification.
Igor Laevsky [Thu, 19 Feb 2015 11:28:47 +0000 (11:28 +0000)]
Implement invoke statepoint verification.
Differential Revision: http://reviews.llvm.org/D7366

llvm-svn: 229840

9 years agoSpelling correction.
Yaron Keren [Thu, 19 Feb 2015 11:21:11 +0000 (11:21 +0000)]
Spelling correction.

llvm-svn: 229839

9 years agoAdd invoke related functionality into StatepointSite classes.
Igor Laevsky [Thu, 19 Feb 2015 11:02:11 +0000 (11:02 +0000)]
Add invoke related functionality into StatepointSite classes.
Differential Revision: http://reviews.llvm.org/D7364

llvm-svn: 229838

9 years agoAVX-512: Full implementation for VRNDSCALESS/SD instructions and intrinsics.
Elena Demikhovsky [Thu, 19 Feb 2015 10:48:04 +0000 (10:48 +0000)]
AVX-512: Full implementation for VRNDSCALESS/SD instructions and intrinsics.

llvm-svn: 229837

9 years ago[x86] Add support for bit-wise blending and use it in the v8 and v16
Chandler Carruth [Thu, 19 Feb 2015 10:46:52 +0000 (10:46 +0000)]
[x86] Add support for bit-wise blending and use it in the v8 and v16
lowering paths. I'm going to be leveraging this to simplify a lot of the
overly complex lowering of v8 and v16 shuffles in pre-SSSE3 modes.

Sadly, this isn't profitable on v4i32 and v2i64. There, the float and
double blending instructions for pre-SSE4.1 are actually pretty good,
and we can't beat them with bit math. And once SSE4.1 comes around we
have direct blending support and this ceases to be relevant.

Also, some of the test cases look odd because the domain fixer
canonicalizes these to floating point domain. That's OK, it'll use the
integer domain when it matters and some day I may be able to update
enough of LLVM to canonicalize the other way.

This restores almost all of the regressions from teaching x86's vselect
lowering to always use vector shuffle lowering for blends. The remaining
problems are because the v16 lowering path is still doing crazy things.
I'll be re-arranging that strategy in more detail in subsequent commits
to finish recovering the performance here.

llvm-svn: 229836

9 years ago[x86,sdag] Two interrelated changes to the x86 and sdag code.
Chandler Carruth [Thu, 19 Feb 2015 10:36:19 +0000 (10:36 +0000)]
[x86,sdag] Two interrelated changes to the x86 and sdag code.

First, don't combine bit masking into vector shuffles (even ones the
target can handle) once operation legalization has taken place. Custom
legalization of vector shuffles may exist for these patterns (making the
predicate return true) but that custom legalization may in some cases
produce the exact bit math this matches. We only really want to handle
this prior to operation legalization.

However, the x86 backend, in a fit of awesome, relied on this. What it
would do is mark VSELECTs as expand, which would turn them into
arithmetic, which this would then match back into vector shuffles, which
we would then lower properly. Amazing.

Instead, the second change is to teach the x86 backend to directly form
vector shuffles from VSELECT nodes with constant conditions, and to mark
all of the vector types we support lowering blends as shuffles as custom
VSELECT lowering. We still mark the forms which actually support
variable blends as *legal* so that the custom lowering is bypassed, and
the legal lowering can even be used by the vector shuffle legalization
(yes, i know, this is confusing. but that's how the patterns are
written).

This makes the VSELECT lowering much more sensible, and in fact should
fix a bunch of bugs with it. However, as you'll see in the test cases,
right now what it does is point out the *hilarious* deficiency of the
new vector shuffle lowering when it comes to blends. Fortunately, my
very next patch fixes that. I can't submit it yet, because that patch,
somewhat obviously, forms the exact and/or pattern that the DAG combine
is matching here! Without this patch, teaching the vector shuffle
lowering to produce the right code infloops in the DAG combiner. With
this patch alone, we produce terrible code but at least lower through
the right paths. With both patches, all the regressions here should be
fixed, and a bunch of the improvements (like using 2 shufps with no
memory loads instead of 2 andps with memory loads and an orps) will
stay. Win!

There is one other change worth noting here. We had hilariously wrong
vectorization cost estimates for vselect because we fell through to the
code path that assumed all "expand" vector operations are scalarized.
However, the "expand" lowering of VSELECT is vector bit math, most
definitely not scalarized. So now we go back to the correct if horribly
naive cost of "1" for "not scalarized". If anyone wants to add actual
modeling of shuffle costs, that would be cool, but this seems an
improvement on its own. Note the removal of 16 and 32 "costs" for doing
a blend. Even in SSE2 we can blend in fewer than 16 instructions. ;] Of
course, we don't right now because of OMG bad code, but I'm going to fix
that. Next patch. I promise.

llvm-svn: 229835

9 years agoMake -fmodules-decluse and -fmodules-strict-decluse compatible options.
Daniel Jasper [Thu, 19 Feb 2015 09:56:13 +0000 (09:56 +0000)]
Make -fmodules-decluse and -fmodules-strict-decluse compatible options.

They don't actually influence the result of the module compilation.

llvm-svn: 229834

9 years ago[LSan][MIPS64] Enable LSan testing for mips64/mips64el
Mohit K. Bhakkad [Thu, 19 Feb 2015 09:14:43 +0000 (09:14 +0000)]
[LSan][MIPS64] Enable LSan testing for mips64/mips64el

Patch by Sagar Thakur

Reviewers: petarj, earthdok, kcc.

Subscribers:  samsonov, dsanders, mohit.bhakkad, Anand.Takale, llvm-commits.

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

llvm-svn: 229833

9 years agotsan: fix PTRACE_ATTACH handling during stop-the-world
Dmitry Vyukov [Thu, 19 Feb 2015 09:02:29 +0000 (09:02 +0000)]
tsan: fix PTRACE_ATTACH handling during stop-the-world

If the thread receives a signal concurrently with PTRACE_ATTACH,
we can get notification about the signal before notification about stop.
In such case we need to forward the signal to the thread, otherwise
the signal will be missed (as we do PTRACE_DETACH with arg=0) and
any logic relying on signals will break. After forwarding we need to
continue to wait for stopping, because the thread is not stopped yet.
We do ignore delivery of SIGSTOP, because we want to make stop-the-world
as invisible as possible.

http://reviews.llvm.org/D7723

 --This line, and those below, will be ignored--
M    lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
M    test/tsan/signal_segv_handler.cc

llvm-svn: 229832

9 years agoUse std::bitset for SubtargetFeatures
Michael Kuperstein [Thu, 19 Feb 2015 09:01:04 +0000 (09:01 +0000)]
Use std::bitset for SubtargetFeatures

Previously, subtarget features were a bitfield with the underlying type being uint64_t.
Since several targets (X86 and ARM, in particular) have hit or were very close to hitting this bound, switching the features to use a bitset.

No functional change.

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

llvm-svn: 229831

9 years ago[LSan] [MIPS] adding support of LSan for mips64/mips64el arch
Mohit K. Bhakkad [Thu, 19 Feb 2015 07:30:39 +0000 (07:30 +0000)]
[LSan] [MIPS] adding support of LSan for mips64/mips64el arch

Patch by Sagar Thakur

Reviewers: petarj, earthdok, kcc.

Subscribers:  samsonov, dsanders, mohit.bhakkad, Anand.Takale, llvm-commits.

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

llvm-svn: 229830

9 years agoMark DR1940 as implemented
David Majnemer [Thu, 19 Feb 2015 07:29:01 +0000 (07:29 +0000)]
Mark DR1940 as implemented

llvm-svn: 229829

9 years agoMark DR1947 as implemented
David Majnemer [Thu, 19 Feb 2015 07:28:57 +0000 (07:28 +0000)]
Mark DR1947 as implemented

llvm-svn: 229828

9 years agoMark DR1948 as implemented
David Majnemer [Thu, 19 Feb 2015 07:28:55 +0000 (07:28 +0000)]
Mark DR1948 as implemented

llvm-svn: 229827

9 years agoMark DR1994 as a duplicate of DR529
David Majnemer [Thu, 19 Feb 2015 07:28:52 +0000 (07:28 +0000)]
Mark DR1994 as a duplicate of DR529

llvm-svn: 229826

9 years agoMark DR1968 as implemented
David Majnemer [Thu, 19 Feb 2015 07:28:49 +0000 (07:28 +0000)]
Mark DR1968 as implemented

llvm-svn: 229825

9 years ago[Support/Timer] Make GetMallocUsage() aware of jemalloc.
Davide Italiano [Thu, 19 Feb 2015 07:27:14 +0000 (07:27 +0000)]
[Support/Timer] Make GetMallocUsage() aware of jemalloc.

Differential Revision: D7657
Reviewed by: shankarke, majnemer

llvm-svn: 229824

9 years agoCXXNameMangler::mangleUnresolvedPrefix(): Prune an obsolete \param, according to...
NAKAMURA Takumi [Thu, 19 Feb 2015 07:14:26 +0000 (07:14 +0000)]
CXXNameMangler::mangleUnresolvedPrefix(): Prune an obsolete \param, according to r229809. [-Wdocumentation]

llvm-svn: 229823

9 years agoItanium ABI: Don't pass nullptr to a bool argument
David Majnemer [Thu, 19 Feb 2015 05:51:14 +0000 (05:51 +0000)]
Itanium ABI: Don't pass nullptr to a bool argument

llvm-svn: 229822

9 years ago[Orc][Kaleidoscope] Fix typo in tutorial comment.
Lang Hames [Thu, 19 Feb 2015 05:33:30 +0000 (05:33 +0000)]
[Orc][Kaleidoscope] Fix typo in tutorial comment.

llvm-svn: 229821

9 years agoScopDetection: Only detect scops that have at least one read and one write
Tobias Grosser [Thu, 19 Feb 2015 05:31:07 +0000 (05:31 +0000)]
ScopDetection: Only detect scops that have at least one read and one write

Scops that only read seem generally uninteresting and scops that only write are
most likely initializations where there is also little to optimize.  To not
waste compile time we bail early.

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

llvm-svn: 229820

9 years agoProvide the same ABI regardless of NDEBUG
Dmitri Gribenko [Thu, 19 Feb 2015 05:30:16 +0000 (05:30 +0000)]
Provide the same ABI regardless of NDEBUG

For projects depending on LLVM, I find it very useful to combine a
release-no-asserts build of LLVM with a debug+asserts build of the dependent
project.  The motivation is that when developing a dependent project, you are
debugging that project itself, not LLVM.  In my usecase, a significant part of
the runtime is spent in LLVM optimization passes, so I would like to build LLVM
without assertions to get the best performance from this combination.

Currently, `lib/Support/Debug.cpp` changes the set of symbols it provides
depending on NDEBUG, while `include/llvm/Support/Debug.h` requires extra
symbols when NDEBUG is not defined.  Thus, it is not possible to enable
assertions in an external project that uses facilities of `Debug.h`.

This patch changes `Debug.cpp` and `Valgrind.cpp` to always define the symbols
that other code may depend on when #including LLVM headers without NDEBUG.

http://reviews.llvm.org/D7662

llvm-svn: 229819

9 years agoUpdate C++ implementation status page with recent changes w.r.t. to sized deallocation.
Larisse Voufo [Thu, 19 Feb 2015 04:34:13 +0000 (04:34 +0000)]
Update C++ implementation status page with recent changes w.r.t. to sized deallocation.

llvm-svn: 229818

9 years ago[MSVC] Improved lookup into dependent/non-dependent bases of dependent class
Alexey Bataev [Thu, 19 Feb 2015 04:28:23 +0000 (04:28 +0000)]
[MSVC] Improved lookup into dependent/non-dependent bases of dependent class
Patch improves lookup into dependendt bases of dependent class and adds lookup
into non-dependent bases.
Differential Revision: http://reviews.llvm.org/D7173

llvm-svn: 229817

9 years agoPECOFF: Fix base relocation for an absolute symbol.
Rui Ueyama [Thu, 19 Feb 2015 04:22:27 +0000 (04:22 +0000)]
PECOFF: Fix base relocation for an absolute symbol.

Previously we wrongly emitted a base relocation entry for an absolute symbol.
That made the loader to rewrite some instruction operands with wrong values
only when a DLL is not loaded at the default address. That caused a
misterious crash of some executable.

Absolute symbols will of course never change value wherever the binary is
loaded to memory. We shouldn't emit base relocations for absolute symbols.

llvm-svn: 229816

9 years agoRevert adding hostname to module hash
Ben Langmuir [Thu, 19 Feb 2015 04:03:57 +0000 (04:03 +0000)]
Revert adding hostname to module hash

I didn't realize how easily the hostname could change - for example just
changing wireless networks seems to prompt it in some cases.

Users can always set their own local module cache path to avoid this.

This reverts commits r228592, 228594, 228601 and 228613.
rdar://19287368

llvm-svn: 229815

9 years agoPECOFF: use llvm-readobj to dump .reloc section
Rui Ueyama [Thu, 19 Feb 2015 04:02:17 +0000 (04:02 +0000)]
PECOFF: use llvm-readobj to dump .reloc section

When this test was written, no llvm tool could print out contents
of base relocation section. Now llvm-readobj is able to dump it in
a text format. Use that tool to make this test readable.

llvm-svn: 229814

9 years agoInstrProf: Always emit a coverage region for the condition of an if
Justin Bogner [Thu, 19 Feb 2015 03:10:30 +0000 (03:10 +0000)]
InstrProf: Always emit a coverage region for the condition of an if

When tools like llvm-cov show regions, it's much easier to understand
what's happening if the condition of an if shows a counter as well as
the body.

llvm-svn: 229813

9 years agoFix a test case.
Larisse Voufo [Thu, 19 Feb 2015 03:03:23 +0000 (03:03 +0000)]
Fix a test case.

llvm-svn: 229812

9 years ago[Headers] Add tests for _mm256_insert_epi64 and fix its definition
Filipe Cabecinhas [Thu, 19 Feb 2015 03:02:33 +0000 (03:02 +0000)]
[Headers] Add tests for _mm256_insert_epi64 and fix its definition

Summary:
The definition for _mm256_insert_epi64 was taking an int, which would get
truncated before being inserted in the vector.

Original patch by Joshua Magee!

Reviewers: bruno, craig.topper

Subscribers: cfe-commits

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

llvm-svn: 229811

9 years agoMark more tuple tests as unsupported in C++98 && C++03
Eric Fiselier [Thu, 19 Feb 2015 02:44:09 +0000 (02:44 +0000)]
Mark more tuple tests as unsupported in C++98 && C++03

llvm-svn: 229810

9 years agoItanium ABI: Properly qualify the destructor-name
David Majnemer [Thu, 19 Feb 2015 02:16:16 +0000 (02:16 +0000)]
Itanium ABI: Properly qualify the destructor-name

We didn't have enough qualificaiton before the scope specifier and we
had too much qualification in the destructor name itself.

llvm-svn: 229809

9 years ago[libcxx] Mark most tuple tests UNSUPPORTED for c++03 and c++98.
Eric Fiselier [Thu, 19 Feb 2015 02:10:42 +0000 (02:10 +0000)]
[libcxx] Mark most tuple tests UNSUPPORTED for c++03 and c++98.

Summary: No declaration for the type `tuple` is given in c++03 or c++98 modes. Mark all tests that use the actual `tuple` type as UNSUPPORTED.

Reviewers: jroelofs, mclow.lists, danalbert

Reviewed By: danalbert

Subscribers: cfe-commits

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

llvm-svn: 229808

9 years ago[Orc][Kaleidoscope] Make the 'fully lazy' orc kaleidoscope tutorial lazier still.
Lang Hames [Thu, 19 Feb 2015 01:32:43 +0000 (01:32 +0000)]
[Orc][Kaleidoscope] Make the 'fully lazy' orc kaleidoscope tutorial lazier still.

The new JIT doesn't IRGen stubs until they're referenced.

llvm-svn: 229807

9 years ago[Orc] Fix a bug in the compile callback manager: trampoline ids need to be fixed
Lang Hames [Thu, 19 Feb 2015 01:31:25 +0000 (01:31 +0000)]
[Orc] Fix a bug in the compile callback manager: trampoline ids need to be fixed
up before returning them to the available pool.

llvm-svn: 229806

9 years agoRemove the local subtarget variable from the SystemZ asm printer
Eric Christopher [Thu, 19 Feb 2015 01:26:28 +0000 (01:26 +0000)]
Remove the local subtarget variable from the SystemZ asm printer
and update the two calls accordingly.

llvm-svn: 229805

9 years agoRemove a few more calls to TargetMachine::getSubtarget from the
Eric Christopher [Thu, 19 Feb 2015 01:10:55 +0000 (01:10 +0000)]
Remove a few more calls to TargetMachine::getSubtarget from the
R600 port.

llvm-svn: 229804

9 years agoGrab the subtarget off of the machine function for the R600
Eric Christopher [Thu, 19 Feb 2015 01:10:53 +0000 (01:10 +0000)]
Grab the subtarget off of the machine function for the R600
asm printer and clean up a bunch of uses.

llvm-svn: 229803

9 years agoRemove the DisasmEnabled AsmPrinter variable and just look it
Eric Christopher [Thu, 19 Feb 2015 01:10:49 +0000 (01:10 +0000)]
Remove the DisasmEnabled AsmPrinter variable and just look it
up on the subtarget where it's set anyhow than looking it up
2-3 times in the same place.

llvm-svn: 229802

9 years agoImprove our handling of rtti/sanitize=vptr/sanitize=undefined
Filipe Cabecinhas [Thu, 19 Feb 2015 01:04:49 +0000 (01:04 +0000)]
Improve our handling of rtti/sanitize=vptr/sanitize=undefined

This patch removes the huge blob of code that is dealing with
rtti/exceptions/sanitizers and replaces it with:

A ToolChain function which, for a given set of Args, figures out if rtti
should be:
  - enabled
  - disabled implicitly
  - disabled explicitly

A change in the way SanitizerArgs figures out what sanitizers to enable
(or if it should error out, or warn);

And a check for exceptions/rtti interaction inside addExceptionArgs.

The RTTIMode algorithm is:
  - If -mkernel, -fapple-kext, or -fno-rtti are passed, rtti was disabled explicitly;
  - If -frtti was passed or we're not targetting the PS4, rtti is enabled;
  - If -fexceptions or -fcxx-exceptions was passed and we're targetting
    the PS4, rtti was enabled implicitly;
  - If we're targetting the PS4, rtti is disabled implicitly;
  - Otherwise, rtti is enabled;

Since the only flag needed to pass to -cc1 is -fno-rtti if we want to
disable it, there's no problem in saying rtti is enabled if we're
compiling C code, so we don't look at the input file type.

addExceptionArgs now looks at the RTTIMode and warns that rtti is being
enabled implicitly if targetting the PS4 and exceptions are on. It also
errors out if, targetting the PS4, -fno-rtti was passed, and exceptions
were turned on.

SanitizerArgs now errors out if rtti was disabled explicitly and the vptr
sanitizer was enabled implicitly, but just turns off vptr if rtti is
disabled but -fsanitize=undefined was passed.

Also fixed tests, removed duplicate name from addExceptionArgs comment,
and added one or two surrounding lines when running clang-format.
This changes test/Driver/fsanitize.c to make it not expect a warning when
passed -fsanitize=undefined -fno-rtti, but expect vptr to not be on.

Removed all users and definition of SanitizerArgs::sanitizesVptr().

Reviewers: samsonov

Subscribers: llvm-commits, samsonov, rsmith

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

llvm-svn: 229801

9 years agoMC: Remove NullStreamer hook, as it is redundant with NullTargetStreamer.
Peter Collingbourne [Thu, 19 Feb 2015 00:45:07 +0000 (00:45 +0000)]
MC: Remove NullStreamer hook, as it is redundant with NullTargetStreamer.

llvm-svn: 229799

9 years agollvm-mc: Use Target::createNullStreamer to fix crashes on target-specific asm directives.
Peter Collingbourne [Thu, 19 Feb 2015 00:45:04 +0000 (00:45 +0000)]
llvm-mc: Use Target::createNullStreamer to fix crashes on target-specific asm directives.

llvm-svn: 229798

9 years agoIntroduce Target::createNullTargetStreamer and use it from IRObjectFile.
Peter Collingbourne [Thu, 19 Feb 2015 00:45:02 +0000 (00:45 +0000)]
Introduce Target::createNullTargetStreamer and use it from IRObjectFile.

A null MCTargetStreamer allows IRObjectFile to ignore target-specific
directives. Previously we were crashing.

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

llvm-svn: 229797

9 years ago[objc-arc] Introduce the concept of RCIdentity and rename all relevant functions...
Michael Gottesman [Thu, 19 Feb 2015 00:42:38 +0000 (00:42 +0000)]
[objc-arc] Introduce the concept of RCIdentity and rename all relevant functions to use that name. NFC.

The RCIdentity root ("Reference Count Identity Root") of a value V is a
dominating value U for which retaining or releasing U is equivalent to
retaining or releasing V. In other words, ARC operations on V are
equivalent to ARC operations on U.

This is a useful property to ascertain since we can use this in the ARC
optimizer to make it easier to match up ARC operations by always mapping
ARC operations to RCIdentityRoots instead of pointers themselves. Then
we perform pairing of retains, releases which are applied to the same
RCIdentityRoot.

In general, the two ways that we see RCIdentical values in ObjC are via:

  1. PointerCasts
  2. Forwarding Calls that return their argument verbatim.

As such in ObjC, two RCIdentical pointers must always point to the same
memory location.

Previously this concept was implicit in the code and various methods
that dealt with this concept were given functional names that did not
conform to any name in the "ARC" model. This often times resulted in
code that was hard for the non-ARC acquanted to understand resulting in
unhappiness and confusion.

llvm-svn: 229796

9 years ago[objc-arc-contract] Rename contractRelease => tryToContractReleaseIntoStoreStrong.
Michael Gottesman [Thu, 19 Feb 2015 00:42:34 +0000 (00:42 +0000)]
[objc-arc-contract] Rename contractRelease => tryToContractReleaseIntoStoreStrong.

NFC. Makes it clearer what this method is actually supposed to do.

llvm-svn: 229795

9 years ago[objc-arc-contract] Refactor out tryToPeepholeInstruction into its own method. NFC.
Michael Gottesman [Thu, 19 Feb 2015 00:42:30 +0000 (00:42 +0000)]
[objc-arc-contract] Refactor out tryToPeepholeInstruction into its own method. NFC.

The main method of ObjCARCContract is really large and busy. By refactoring this
out, it becomes easier to reason about.

llvm-svn: 229794

9 years ago[objc-arc-contract] Reorganize the code a bit and make the debug output easier to...
Michael Gottesman [Thu, 19 Feb 2015 00:42:27 +0000 (00:42 +0000)]
[objc-arc-contract] Reorganize the code a bit and make the debug output easier to read.

llvm-svn: 229793

9 years agoPR22566: a conversion from a floating-point type to bool is a narrowing conversion.
Richard Smith [Thu, 19 Feb 2015 00:39:05 +0000 (00:39 +0000)]
PR22566: a conversion from a floating-point type to bool is a narrowing conversion.

llvm-svn: 229792

9 years agoIR: Drop scope from MDTemplateParameter
Duncan P. N. Exon Smith [Thu, 19 Feb 2015 00:37:21 +0000 (00:37 +0000)]
IR: Drop scope from MDTemplateParameter

Follow-up to r229740, which removed `DITemplate*::getContext()` after my
upgrade script revealed that scopes are always `nullptr` for template
parameters.  This is the other shoe: drop `scope:` from
`MDTemplateParameter` and its two subclasses.  (Note: a bitcode upgrade
would be pointless, since the hierarchy hasn't been moved into place.)

llvm-svn: 229791

9 years agoAvoid using a self-referential initializer and fix up uses.
Eric Christopher [Thu, 19 Feb 2015 00:22:47 +0000 (00:22 +0000)]
Avoid using a self-referential initializer and fix up uses.

llvm-svn: 229790

9 years ago80-column fixups.
Eric Christopher [Thu, 19 Feb 2015 00:15:33 +0000 (00:15 +0000)]
80-column fixups.

llvm-svn: 229789

9 years agoAllow errors on use of a private module header to be disabled, to better support...
Richard Smith [Thu, 19 Feb 2015 00:10:28 +0000 (00:10 +0000)]
Allow errors on use of a private module header to be disabled, to better support incremental transition to modules.

llvm-svn: 229788

9 years agoRemove all use of is64bit off of NVPTXSubtarget and clean up code
Eric Christopher [Thu, 19 Feb 2015 00:08:27 +0000 (00:08 +0000)]
Remove all use of is64bit off of NVPTXSubtarget and clean up code
accordingly. This changes the constructors of a number of classes
that don't need to know the subtarget's 64-bitness.

llvm-svn: 229787

9 years agoRemove all use of getDrvInterface off of NVPTXSubtarget and clean
Eric Christopher [Thu, 19 Feb 2015 00:08:23 +0000 (00:08 +0000)]
Remove all use of getDrvInterface off of NVPTXSubtarget and clean
up code accordingly. Delete code that was checking for all cases
of an enum.

llvm-svn: 229786

9 years agoMigrate the NVPTX backend asm printer to a per function subtarget.
Eric Christopher [Thu, 19 Feb 2015 00:08:14 +0000 (00:08 +0000)]
Migrate the NVPTX backend asm printer to a per function subtarget.

This involved moving two non-subtarget dependent features (64-bitness
and the driver interface) to the NVPTX target machine and updating
the uses (or migrating around the subtarget use for ease of review).
Otherwise use the cached subtarget or create a default subtarget
based on the TargetMachine cpu and feature string for the module
level assembler emission.

llvm-svn: 229785

9 years agoA few minor path fixes for Windows.
Zachary Turner [Wed, 18 Feb 2015 23:59:11 +0000 (23:59 +0000)]
A few minor path fixes for Windows.

When launching argdumper, there are a few problems with the
current logic.  First, on Windows, the file is called
argdumper.exe, not argdumper.  Second, Windows paths have
backslashes in them, and JSON treats <backslash><char> as an
escape sequence.  To fix the second problem, on Windows we
convert backslashes to forward slashes, since backslash isn't
a valid filename character anyway this shouldn't be a problem.

llvm-svn: 229784

9 years agoclang-format: Space and triple angle braces.
Jacques Pienaar [Wed, 18 Feb 2015 23:48:37 +0000 (23:48 +0000)]
clang-format: Space and triple angle braces.

Committing patch http://reviews.llvm.org/D6800.

llvm-svn: 229783

9 years ago[x86] Merge checks for a recently added test case that is the same on
Chandler Carruth [Wed, 18 Feb 2015 23:20:49 +0000 (23:20 +0000)]
[x86] Merge checks for a recently added test case that is the same on
all SSE variants and AVX variants.

llvm-svn: 229770

9 years agoIR: Allow MDSubrange to have 'count: -1'
Duncan P. N. Exon Smith [Wed, 18 Feb 2015 23:17:51 +0000 (23:17 +0000)]
IR: Allow MDSubrange to have 'count: -1'

It turns out that `count: -1` is a special value indicating an empty
array, such as `Values` in:

    struct T {
      unsigned Count;
      int Values[];
    };

Handle it.

llvm-svn: 229769

9 years agoAdd an IR-to-IR test for dwarf EH preparation using opt
Reid Kleckner [Wed, 18 Feb 2015 23:17:41 +0000 (23:17 +0000)]
Add an IR-to-IR test for dwarf EH preparation using opt

This tests the simple resume instruction elimination logic that we have
before making some changes to it.

llvm-svn: 229768

9 years agoFix TestDataFormatter* on Linux
Vince Harron [Wed, 18 Feb 2015 23:16:51 +0000 (23:16 +0000)]
Fix TestDataFormatter* on Linux

llvm::StringRef doesn't make a copy of a string, it just holds a
reference. When special_directions_stream went out of scope,
special_directions was holding on to a stale pointer.

Moving special_directions_stream into a higher scope to keep
special_directions pointing to a valid string.

llvm-svn: 229767

9 years agoFixed TestProcessLaunch.py for remote targets
Vince Harron [Wed, 18 Feb 2015 23:16:09 +0000 (23:16 +0000)]
Fixed TestProcessLaunch.py for remote targets

Just needed to copy stdio redirect files to/from target

llvm-svn: 229766

9 years ago[Orc][Kaleidoscope] Fix a fixme - no reason we can't use C++14 in the tutorials.
Lang Hames [Wed, 18 Feb 2015 23:16:09 +0000 (23:16 +0000)]
[Orc][Kaleidoscope] Fix a fixme - no reason we can't use C++14 in the tutorials.

llvm-svn: 229765

9 years agoFixed remaining remote target failures in TestSettings.py
Vince Harron [Wed, 18 Feb 2015 23:14:49 +0000 (23:14 +0000)]
Fixed remaining remote target failures in TestSettings.py

needed to copy an output file back from remote target
skipped test that expects host env vars to be inherited by target
processes

llvm-svn: 229764

9 years agoFix SettingsCommandTestCase.test_set_error_output_path
Vince Harron [Wed, 18 Feb 2015 23:12:26 +0000 (23:12 +0000)]
Fix SettingsCommandTestCase.test_set_error_output_path

target.error-path (and output-path) were getting resolved on the
local file system, which doesn't make any sense for remote targets

So this patch prevents file paths from being resolved on the host
system.

llvm-svn: 229763

9 years agoPECOFF: Fix symbol aliases
Rui Ueyama [Wed, 18 Feb 2015 23:11:48 +0000 (23:11 +0000)]
PECOFF: Fix symbol aliases

Weak aliases defined using /alternatename command line option were getting
wrong RVAs in the final output because of wrong atom ordinal. Alias atoms
were assigned large ordinals than any other regular atoms because they were
instantiated after other atoms and just got new (larger) ordinals.

Atoms are sorted by its file and atom ordinals in the order pass. Alias
atoms were located after all other atoms in the same file.

An alias atom's ordinal needs to be smaller than its alias target but larger
than the atom appeared before the target -- so that the alias is located
between the two. Since an alias has no size, the alias target will be located
at the same location as the alias.

In this patch, I made a gap between two regular atoms so that we can put
aliases after instantiating them (without re-numbering existing atoms).

llvm-svn: 229762

9 years ago[Orc][Kaleidoscope] Make the Orc/Kaleidoscope tutorials easier to build on
Lang Hames [Wed, 18 Feb 2015 23:08:56 +0000 (23:08 +0000)]
[Orc][Kaleidoscope] Make the Orc/Kaleidoscope tutorials easier to build on
Darwin.

llvm-svn: 229761

9 years ago[Orc][Kaleidoscope] Make sure to look for the mangled name when updating the
Lang Hames [Wed, 18 Feb 2015 23:07:13 +0000 (23:07 +0000)]
[Orc][Kaleidoscope] Make sure to look for the mangled name when updating the
function body pointer in the fully lazy orc/kaleidoscope tutorial.

llvm-svn: 229760

9 years ago[Objdump] Fixing crash when printing symbols in ELF sections with special types.
Colin LeMahieu [Wed, 18 Feb 2015 23:00:22 +0000 (23:00 +0000)]
[Objdump] Fixing crash when printing symbols in ELF sections with special types.

llvm-svn: 229759

9 years agoStyle and formatting fixes for r229715
Andrew Kaylor [Wed, 18 Feb 2015 22:52:18 +0000 (22:52 +0000)]
Style and formatting fixes for r229715

llvm-svn: 229758

9 years agoRemove support for building sanitizers from Makefile/autoconf build on Linux.
Alexey Samsonov [Wed, 18 Feb 2015 22:26:49 +0000 (22:26 +0000)]
Remove support for building sanitizers from Makefile/autoconf build on Linux.

This is a re-application of r229554 restricted to Linux build only.
Apple still uses Makefile/autoconf to build Clang and sanitizers.

llvm-svn: 229756

9 years agoRemove support for building sanitizers from Makefile/autoconf build on Linux.
Alexey Samsonov [Wed, 18 Feb 2015 22:26:22 +0000 (22:26 +0000)]
Remove support for building sanitizers from Makefile/autoconf build on Linux.

This is a re-application of r229554 restricted to Linux build only.
Apple still uses Makefile/autoconf to build Clang and sanitizers.

llvm-svn: 229755