platform/upstream/llvm.git
8 years agoHave lldb-server log the timestamp in its log messages
Pavel Labath [Mon, 8 Feb 2016 09:35:53 +0000 (09:35 +0000)]
Have lldb-server log the timestamp in its log messages

llvm-svn: 260078

8 years ago[OPENMP 4.5] Ccapture/codegen of private non-static data members.
Alexey Bataev [Mon, 8 Feb 2016 09:29:13 +0000 (09:29 +0000)]
[OPENMP 4.5] Ccapture/codegen of private non-static data members.
OpenMP 4.5 introduces privatization of non-static data members of current class in non-static member functions.
To correctly handle such kind of privatization a new (pseudo)declaration VarDecl-based node is added. It allows to reuse an existing code for capturing variables in Lambdas/Block/Captured blocks of code for correct privatization and codegen.

llvm-svn: 260077

8 years ago[asan] Introduce new approach for ODR violation detection based on odr indicator...
Maxim Ostapenko [Mon, 8 Feb 2016 08:39:59 +0000 (08:39 +0000)]
[asan] Introduce new approach for ODR violation detection based on odr indicator symbols.

This is a compiler-rt part of this http://reviews.llvm.org/D15642 patch. Here,
we add a new approach for ODR violation detection.
Instead of using __asan_region_is_poisoned(g->beg, g->size_with_redzone) on
global address (that would return false now due to using private alias), we can
use new globally visible indicator symbol to perform the check.

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

llvm-svn: 260076

8 years ago[asan] Introduce new hidden -asan-use-private-alias option.
Maxim Ostapenko [Mon, 8 Feb 2016 08:30:57 +0000 (08:30 +0000)]
[asan] Introduce new hidden -asan-use-private-alias option.

As discussed in https://github.com/google/sanitizers/issues/398, with current
implementation of poisoning globals we can have some CHECK failures or false
positives in case of mixing instrumented and non-instrumented code due to ASan
poisons innocent globals from non-sanitized binary/library. We can use private
aliases to avoid such errors. In addition, to preserve ODR violation detection,
we introduce new __odr_asan_gen_XXX symbol for each instrumented global that
indicates if this global was already registered. To detect ODR violation in
runtime, we should only check the value of indicator and report an error if it
isn't equal to zero.

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

llvm-svn: 260075

8 years ago[Concepts] Implement a portion of Concepts TS[dcl.spec.concept]p1 by
Nathan Wilson [Mon, 8 Feb 2016 05:34:00 +0000 (05:34 +0000)]
[Concepts] Implement a portion of Concepts TS[dcl.spec.concept]p1 by
diagnosing when 'concept' is specified on a function or template
specialization.

Since a concept can only be applied to a function or variable template,
the concept bit is stored in TemplateDecl as a PointerIntPair.

Reviewers: rsmith, faisalv, aaron.ballman, hubert.reinterpretcast

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

llvm-svn: 260074

8 years agoELF: Simplify getFdeEncoding.
Rui Ueyama [Mon, 8 Feb 2016 05:18:44 +0000 (05:18 +0000)]
ELF: Simplify getFdeEncoding.

I found that the handling of 'L' character in an augmentation string is
wrong because 'L' means that the next byte is the length field. I could
have fixed that by just skipping the next byte, but I decided to take a
different approach.

Teaching the linker about all the types of CIE internal records just to
skip them is silly. And the code doing that is not actually executed now
(that's why the bug did not cause any issue.) It is because the 'R' field,
which we want to read, is always at beginning of the CIE. So I reduced
the code dramatically by assuming that that's always the case. I want to
see how it works in the wild. If it doesn't work, we can roll this back
(with a fix for 'L').

http://reviews.llvm.org/D16939

llvm-svn: 260073

8 years ago[LLDB][MIPS] Fix TestExpressionInSyscall.py for MIPS
Bhushan D. Attarde [Mon, 8 Feb 2016 04:35:51 +0000 (04:35 +0000)]
[LLDB][MIPS] Fix TestExpressionInSyscall.py for MIPS

    SUMMARY:
    This patch fixes TestExpressionInSyscall.py and solves bug 23659 for MIPS.
    Corrected indentation at couple of places.

    Reviewers: clayborg
    Subscribers: mohit.bhakkad, sagar, jaydeep, lldb-commits
    Differential Revision: http://reviews.llvm.org/D16916

llvm-svn: 260072

8 years agobuild: silence warnings in in-tree build
Saleem Abdulrasool [Mon, 8 Feb 2016 03:50:18 +0000 (03:50 +0000)]
build: silence warnings in in-tree build

Avoid the developer warnings from cmake when configuring libc++ as part of the
LLVM layout.  Setup the custom macro paths earlier to re-use the detection logic
prior to setting the project properties.

llvm-svn: 260071

8 years ago[WebAssembly] Add another optimization idea to README.txt.
Dan Gohman [Mon, 8 Feb 2016 03:42:36 +0000 (03:42 +0000)]
[WebAssembly] Add another optimization idea to README.txt.

llvm-svn: 260070

8 years ago[X86] Change FeatureIFMA string to 'avx512ifma'. Matches gcc and fixes PR26461.
Craig Topper [Mon, 8 Feb 2016 01:23:15 +0000 (01:23 +0000)]
[X86] Change FeatureIFMA string to 'avx512ifma'. Matches gcc and fixes PR26461.

llvm-svn: 260069

8 years ago[Support] Use hexdigit. NFC
Craig Topper [Mon, 8 Feb 2016 01:03:01 +0000 (01:03 +0000)]
[Support] Use hexdigit. NFC

llvm-svn: 260068

8 years ago[Support] Fix the examples and assertion for format_hex_no_prefix to take into accoun...
Craig Topper [Mon, 8 Feb 2016 01:02:55 +0000 (01:02 +0000)]
[Support] Fix the examples and assertion for format_hex_no_prefix to take into account that there are no prefix characters to include in Width.

llvm-svn: 260067

8 years ago[analyzer] Avoid crash when attempting to evaluate binary operation on LazyCompoundVal.
Devin Coughlin [Mon, 8 Feb 2016 00:28:24 +0000 (00:28 +0000)]
[analyzer] Avoid crash when attempting to evaluate binary operation on LazyCompoundVal.

Instead, return UnknownValue if either operand is a nonloc::LazyCompoundVal. This is a
spot fix for PR 24951.

rdar://problem/23682244

llvm-svn: 260066

8 years ago[clang-tidy] Reformatted docs + minor updates
Alexander Kornienko [Mon, 8 Feb 2016 00:19:29 +0000 (00:19 +0000)]
[clang-tidy] Reformatted docs + minor updates

llvm-svn: 260065

8 years agoDisable llvm/test/tools/llvm-profdata/value-prof.proftext on win32 for now. Investiga...
NAKAMURA Takumi [Sun, 7 Feb 2016 23:03:38 +0000 (23:03 +0000)]
Disable llvm/test/tools/llvm-profdata/value-prof.proftext on win32 for now. Investigating.

llvm-svn: 260064

8 years ago[X86][SSE] Resolve target shuffle inputs to sentinels to permit more combines
Simon Pilgrim [Sun, 7 Feb 2016 22:51:06 +0000 (22:51 +0000)]
[X86][SSE] Resolve target shuffle inputs to sentinels to permit more combines

The combineX86ShufflesRecursively only supports unary shuffles, but was missing the opportunity to combine binary shuffles with a zero / undef second input.

This patch resolves target shuffle inputs, converting the shuffle mask elements to SM_SentinelUndef/SM_SentinelZero where possible. It then resolves the updated mask to check if we have created a faux unary shuffle.

Additionally, we now attempt to recursively call combineX86ShufflesRecursively for all input operands (we used to just recurse for unary integer shuffles and unary unpacks) - it safely returns early if its not a target shuffle.

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

llvm-svn: 260063

8 years ago[MS ABI] Don't emit RTTI descriptors for dllimport vtables
David Majnemer [Sun, 7 Feb 2016 22:42:05 +0000 (22:42 +0000)]
[MS ABI] Don't emit RTTI descriptors for dllimport vtables

A dllimport'd vtable always points one past the RTTI data, this means
that the initializer will never end up referencing the data.  Our
emission is a harmless waste.

llvm-svn: 260062

8 years ago[X86][SSE] Regenerate PSHUFB shuffle mask comments tests
Simon Pilgrim [Sun, 7 Feb 2016 22:22:09 +0000 (22:22 +0000)]
[X86][SSE] Regenerate PSHUFB shuffle mask comments tests

llvm-svn: 260061

8 years agoclang-format: [JS] Don't count shortened object literals as blocks.
Daniel Jasper [Sun, 7 Feb 2016 22:17:13 +0000 (22:17 +0000)]
clang-format: [JS] Don't count shortened object literals as blocks.

Before:
  f({a},
    () => {
      g();  //
    });

After:
  f({a}, () => {
    g();  //
  });

llvm-svn: 260060

8 years agoRevert r259961, r259978, r259981.
Nico Weber [Sun, 7 Feb 2016 21:41:37 +0000 (21:41 +0000)]
Revert r259961, r259978, r259981.

The "sanitizer-windows" buildbot has been failing for two days because of this:

FAILED: cl.exe asan_report.cc
asan_scariness_score.h(60) : error C2536:
  '__asan::ScarinessScore::__asan::ScarinessScore::descr' :
      cannot specify explicit initializer for arrays
asan_scariness_score.h(60) : see declaration of '__asan::ScarinessScore::descr'

llvm-svn: 260059

8 years agoMake nozlibcompress.c pass and reenable it.
Nico Weber [Sun, 7 Feb 2016 21:32:17 +0000 (21:32 +0000)]
Make nozlibcompress.c pass and reenable it.

llvm-svn: 260058

8 years agoclang-format: [JS] Support @see annotations in JSDoc comments in Google
Daniel Jasper [Sun, 7 Feb 2016 21:22:16 +0000 (21:22 +0000)]
clang-format: [JS] Support @see annotations in JSDoc comments in Google
style.

llvm-svn: 260057

8 years agoDisable failing nozlibcompress.c
Nico Weber [Sun, 7 Feb 2016 21:00:17 +0000 (21:00 +0000)]
Disable failing nozlibcompress.c

This test hasn't been running after it was added until r259976 made
"REQUIRES: nozlib" work, and now that the test runs it fails.

llvm-svn: 260056

8 years agoMake check line consistent
Daniel Berlin [Sun, 7 Feb 2016 20:57:46 +0000 (20:57 +0000)]
Make check line consistent

llvm-svn: 260055

8 years ago[ELF][MIPS] Perform two checks using the single llvm-objdump / FileCheck run
Simon Atanasyan [Sun, 7 Feb 2016 20:36:40 +0000 (20:36 +0000)]
[ELF][MIPS] Perform two checks using the single llvm-objdump / FileCheck run

NFC

llvm-svn: 260054

8 years agoRevert 259942, r259943, r259948.
Nico Weber [Sun, 7 Feb 2016 20:09:18 +0000 (20:09 +0000)]
Revert 259942, r259943, r259948.

The Windows bots have been failing for the last two days, with:

FAILED: C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe -c LLVMContextImpl.cpp
D:\buildslave\clang-x64-ninja-win7\llvm\lib\IR\LLVMContextImpl.cpp(137) :
    error C2248: 'llvm::TrailingObjects<llvm::AttributeSetImpl,
                                        llvm::IndexAttrPair>::operator delete' :
        cannot access private member declared in class 'llvm::AttributeSetImpl'
    TrailingObjects.h(298) : see declaration of
        'llvm::TrailingObjects<llvm::AttributeSetImpl,
                               llvm::IndexAttrPair>::operator delete'
    AttributeImpl.h(213) : see declaration of 'llvm::AttributeSetImpl'

llvm-svn: 260053

8 years agoTest update : tighten up checks
Xinliang David Li [Sun, 7 Feb 2016 20:08:36 +0000 (20:08 +0000)]
Test update : tighten up checks

llvm-svn: 260052

8 years agoRevert 260050 -- new test case should not be included
Xinliang David Li [Sun, 7 Feb 2016 20:06:36 +0000 (20:06 +0000)]
Revert 260050 -- new test case should not be included

llvm-svn: 260051

8 years agoTest update : tighten up checks
Xinliang David Li [Sun, 7 Feb 2016 20:05:06 +0000 (20:05 +0000)]
Test update : tighten up checks

llvm-svn: 260050

8 years ago[docs] Add a note that the Visual Studio C++ tools are required
Keno Fischer [Sun, 7 Feb 2016 19:36:54 +0000 (19:36 +0000)]
[docs] Add a note that the Visual Studio C++ tools are required

Watching new contributors trying to build LLVM on Windows, one of the
very common failure modes was getting a version of Visual Studio
that did not have a C++ compiler for CMake to put up. Trying to create
a C++ project in Visual Studio will cause Visual Studio to go and
download the C++ tools.

llvm-svn: 260049

8 years ago[Frontend] Make the memory management of FrontendAction pointers explicit by using...
Argyrios Kyrtzidis [Sun, 7 Feb 2016 19:28:36 +0000 (19:28 +0000)]
[Frontend] Make the memory management of FrontendAction pointers explicit by using unique_ptr.

llvm-svn: 260048

8 years ago[libclang] Add missing CINDEX_LINKAGE from a function.
Argyrios Kyrtzidis [Sun, 7 Feb 2016 18:21:28 +0000 (18:21 +0000)]
[libclang] Add missing CINDEX_LINKAGE from a function.

llvm-svn: 260047

8 years agoFix build on FreeBSD after r259741.
Dimitry Andric [Sun, 7 Feb 2016 17:40:45 +0000 (17:40 +0000)]
Fix build on FreeBSD after r259741.

On FreeBSD, the uc_mcontext member of ucontext_t has a member called
mc_err, which corresponds to the Linux member gregs[REG_ERR].

Reviewed by: rdivacky@FreeBSD.org

llvm-svn: 260046

8 years agoSeparate invariant equivalence classes by type
Johannes Doerfert [Sun, 7 Feb 2016 17:30:13 +0000 (17:30 +0000)]
Separate invariant equivalence classes by type

  We now distinguish invariant loads to the same memory location if they
  have different types. This will cause us to pre-load an invariant
  location once for each type that is used to access it. However, we can
  thereby avoid invalid casting, especially if an array is accessed
  though different typed/sized invariant loads.

  This basically reverts the changes in r260023 but keeps the test
  cases.

llvm-svn: 260045

8 years agoMake -fno-math-builtin a cc1 option
Matthew Simpson [Sun, 7 Feb 2016 17:14:03 +0000 (17:14 +0000)]
Make -fno-math-builtin a cc1 option

This patch makes -fno-math-builtin a frontend only option instead of a driver
option. The appropriate test case was committed in r186899 when the flag was
introduced. This should fix PR26317.

Contributed-by: Frank Herrmann <fgh@4gh.tv>
llvm-svn: 260044

8 years ago[analyzer] Invalidate destination of std::copy() and std::copy_backward().
Devin Coughlin [Sun, 7 Feb 2016 16:55:44 +0000 (16:55 +0000)]
[analyzer] Invalidate destination of std::copy() and std::copy_backward().

Now that the libcpp implementations of these methods has a branch that doesn't call
memmove(), the analyzer needs to invalidate the destination for these methods explicitly.

rdar://problem/23575656

llvm-svn: 260043

8 years ago[docs] Remove now confusing references to cofigure/autoconf
Philip Reames [Sun, 7 Feb 2016 16:35:04 +0000 (16:35 +0000)]
[docs] Remove now confusing references to cofigure/autoconf

llvm-svn: 260042

8 years agoAdd coverage tests (defaulted constructors/destructor)
Xinliang David Li [Sun, 7 Feb 2016 16:31:13 +0000 (16:31 +0000)]
Add coverage tests (defaulted constructors/destructor)

llvm-svn: 260041

8 years ago[docs] Wordsmithing to program layout descriptio in GettingStarted
Philip Reames [Sun, 7 Feb 2016 16:23:32 +0000 (16:23 +0000)]
[docs] Wordsmithing to program layout descriptio in GettingStarted

This just incrementally improves what was already there; it's questionable whether this content belongs in the getting started guide at all.

Patch by Ben Nathanson w/permission w/minor edtis by me.

llvm-svn: 260040

8 years ago[docs] Clarify disk space usage of debug builds
Philip Reames [Sun, 7 Feb 2016 15:58:35 +0000 (15:58 +0000)]
[docs] Clarify disk space usage of debug builds

llvm-svn: 260039

8 years agoFix a typo.
Roman Divacky [Sun, 7 Feb 2016 15:50:55 +0000 (15:50 +0000)]
Fix a typo.

llvm-svn: 260038

8 years ago[docs] Remove a stale and confusing section from GettingStarted
Philip Reames [Sun, 7 Feb 2016 15:49:57 +0000 (15:49 +0000)]
[docs] Remove a stale and confusing section from GettingStarted

The mentioned environment variable doesn't appear to have any use in the LLVM repository.  If it is still relevant for clang, we can consider adding it to the clang getting started page.

Patch inspired by documentation work by Ben Nathanson at the LLVM Bloomberg sprint.

llvm-svn: 260037

8 years agoRevert "Re-apply r259977 - [OpenMP] Reorganize code to allow specialized code generat...
Renato Golin [Sun, 7 Feb 2016 15:43:09 +0000 (15:43 +0000)]
Revert "Re-apply r259977 - [OpenMP] Reorganize code to allow specialized code generation for different devices."

This reverts commit r259985, as it still fails one buildbot.

llvm-svn: 260036

8 years ago[docs] Update the docs to describe how to build the docs with cmake
Philip Reames [Sun, 7 Feb 2016 15:42:12 +0000 (15:42 +0000)]
[docs] Update the docs to describe how to build the docs with cmake

llvm-svn: 260035

8 years ago[X86][SSE] Added support for MOVHPD/MOVLPD + MOVHPS/MOVLPS shuffle decoding.
Simon Pilgrim [Sun, 7 Feb 2016 15:39:22 +0000 (15:39 +0000)]
[X86][SSE] Added support for MOVHPD/MOVLPD + MOVHPS/MOVLPS shuffle decoding.

llvm-svn: 260034

8 years ago[X86][AVX512] add intrinsics of Scalar FP to integer conversion with rounding mode
Asaf Badouh [Sun, 7 Feb 2016 14:59:13 +0000 (14:59 +0000)]
[X86][AVX512] add intrinsics of Scalar FP to integer conversion with rounding mode

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

llvm-svn: 260033

8 years ago[X86][SSE] Pulled out repeated target shuffle decodes into helper functions. NFCI.
Simon Pilgrim [Sun, 7 Feb 2016 14:33:03 +0000 (14:33 +0000)]
[X86][SSE] Pulled out repeated target shuffle decodes into helper functions. NFCI.

Pulled out the code used by PSHUFB/VPERMV/VPERMV3 shuffle mask decoding into common helper functions.

The helper functions handle masks coming from BROADCAST/BUILD_VECTOR and ConstantPool nodes respectively.

llvm-svn: 260032

8 years ago[FIX] Two "off-by-one" error in constant range usage
Johannes Doerfert [Sun, 7 Feb 2016 13:59:03 +0000 (13:59 +0000)]
[FIX] Two "off-by-one" error in constant range usage

llvm-svn: 260031

8 years agoSimplify code [NFC]
Johannes Doerfert [Sun, 7 Feb 2016 13:57:32 +0000 (13:57 +0000)]
Simplify code [NFC]

llvm-svn: 260030

8 years agoUse CodeGenModule::addReplacement() instead of directly accessing Replacements[].
Yaron Keren [Sun, 7 Feb 2016 12:44:35 +0000 (12:44 +0000)]
Use CodeGenModule::addReplacement() instead of directly accessing Replacements[].
This helps when trying to debug who inserted into Replacements.

llvm-svn: 260028

8 years ago[ELF][MIPS] Add comments to describe __gnu_local_gp magic symbol
Simon Atanasyan [Sun, 7 Feb 2016 12:09:40 +0000 (12:09 +0000)]
[ELF][MIPS] Add comments to describe __gnu_local_gp magic symbol

NFC. Follow-up to r259781.

llvm-svn: 260027

8 years agoFix typo in default getNoPreservedMask implementation
Jeroen Ketema [Sun, 7 Feb 2016 11:31:56 +0000 (11:31 +0000)]
Fix typo in default getNoPreservedMask implementation

llvm-svn: 260026

8 years agoMake memory accesses with different element types optional
Tobias Grosser [Sun, 7 Feb 2016 08:48:57 +0000 (08:48 +0000)]
Make memory accesses with different element types optional

We also disable this feature by default, as there are still some issues in
combination with invariant load hoisting that slipped through my initial
testing.

llvm-svn: 260025

8 years agoAVX512: VPBROADCASTB/W/D/Q from GPR intrinsics implementation.
Igor Breger [Sun, 7 Feb 2016 08:30:50 +0000 (08:30 +0000)]
AVX512: VPBROADCASTB/W/D/Q from GPR intrinsics implementation.

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

llvm-svn: 260024

8 years agoDo not yet consider loads with non-canonical element size for load hoisting.
Tobias Grosser [Sun, 7 Feb 2016 08:11:36 +0000 (08:11 +0000)]
Do not yet consider loads with non-canonical element size for load hoisting.

Invariant load hoisting of memory accesses with non-canonical element
types lacks support for equivalence classes that contain elements of
different width/size. This support should be added, but to get our buildbots
back to green, we disable load hoisting for memory accesses with non-canonical
element size for now.

llvm-svn: 260023

8 years agoFix test case problem(caused by clang-format
Xinliang David Li [Sun, 7 Feb 2016 07:13:18 +0000 (07:13 +0000)]
Fix test case problem(caused by clang-format

llvm-svn: 260022

8 years ago[PGO] add profile/coverage test cases for defaulted ctor/ctors
Xinliang David Li [Sun, 7 Feb 2016 06:57:29 +0000 (06:57 +0000)]
[PGO] add profile/coverage test cases for defaulted ctor/ctors

llvm-svn: 260021

8 years agoFix typo in comment. NFC
Craig Topper [Sun, 7 Feb 2016 06:39:23 +0000 (06:39 +0000)]
Fix typo in comment. NFC

llvm-svn: 260020

8 years agoDriver: adjust linker invocation for GNUTools
Saleem Abdulrasool [Sun, 7 Feb 2016 06:03:38 +0000 (06:03 +0000)]
Driver: adjust linker invocation for GNUTools

Adjust the driver to invoke the linker more similar to gcc.  -dynamic-linker is
only passed if -static and -shared are not part of the compiler (driver)
invocation.  Replicate the passing of -export-rdynamic as per the GCC link spec:

  %{!static: %{rdynamic:-export-dynamic} %{!shared:-dynamic-linker ...}}

This behaviour is consistent across all the targets that are supported, so no
need to conditionalise it on the target.

Resolves PR24245.

llvm-svn: 260019

8 years agoLangRef: Fix example code for cmpxchg
Duncan P. N. Exon Smith [Sun, 7 Feb 2016 05:06:35 +0000 (05:06 +0000)]
LangRef: Fix example code for cmpxchg

Patch by Daniel Robertson!

llvm-svn: 260018

8 years agoSema: handle typo correction on ARC'ed ivar
Saleem Abdulrasool [Sun, 7 Feb 2016 02:30:59 +0000 (02:30 +0000)]
Sema: handle typo correction on ARC'ed ivar

The ivar ref would be transformed by the Typo Correction TreeTransform, but not
be owned, resulting in the source location being invalid.  This would eventually
lead to an assertion in findCapturingExpr.  Prevent this assertion from
triggering.

Resolves PR25113.

llvm-svn: 260017

8 years agoSema: handle typo correction with ARC'ed objc properties
Saleem Abdulrasool [Sun, 7 Feb 2016 02:30:55 +0000 (02:30 +0000)]
Sema: handle typo correction with ARC'ed objc properties

We would previously assert in findCapturingExpr when performing a typo
correction resulting in an assignment of an ObjC property with a strong lifetype
specifier due to the expression not being rooted in the file (invalid SLoc)
during the retain cycle check on the typo-corrected expression.  Handle the
expression type appropriately during the TreeTransform to ensure that we have a
source location associated with the expression.

Fixes PR26486.

llvm-svn: 260016

8 years agoDon't use module context here. It's unnecessary and makes it harder to write unittests
Daniel Berlin [Sun, 7 Feb 2016 02:03:39 +0000 (02:03 +0000)]
Don't use module context here. It's unnecessary and makes it harder to write unittests

llvm-svn: 260015

8 years agoCompute live-in for MemorySSA
Daniel Berlin [Sun, 7 Feb 2016 01:52:19 +0000 (01:52 +0000)]
Compute live-in for MemorySSA

llvm-svn: 260014

8 years agoOnly insert into definingblocks once per block
Daniel Berlin [Sun, 7 Feb 2016 01:52:15 +0000 (01:52 +0000)]
Only insert into definingblocks once per block

llvm-svn: 260013

8 years agoCleanup node-type handling in the unordered containers
Eric Fiselier [Sun, 7 Feb 2016 00:36:33 +0000 (00:36 +0000)]
Cleanup node-type handling in the unordered containers

This patch is the first in a series of patches that's meant to better
support unordered_map. unordered_map has a special "value_type" that
differs from pair<const Key, Value>. In order to meet the EmplaceConstructible
and CopyInsertable requirements we need to teach __hash_table about this
special value_type.

This patch creates a "__hash_node_types" traits class that contains
all of the typedefs needed by the unordered containers and it's iterators.
These typedefs include ones for each node type and  node pointer type,
as well as special typedefs for "unordered_map"'s value type.

As a result of this change all of the unordered containers now all support
incomplete types.

As a drive-by fix I changed the difference_type in __hash_table to always
be ptrdiff_t. There is a corresponding change to size_type but it cannot
take affect until an ABI break.

This patch will be followed up shortly with fixes for various unordered_map
fixes.

llvm-svn: 260012

8 years agoIndex: provide adjustment thunk information for C++ manglings
Saleem Abdulrasool [Sat, 6 Feb 2016 22:36:34 +0000 (22:36 +0000)]
Index: provide adjustment thunk information for C++ manglings

Add support for exposing the adjustment thunk for virtual methods as
appropriate.

llvm-svn: 260011

8 years ago[X86][AVX2] Regenerated broadcast domain tests
Simon Pilgrim [Sat, 6 Feb 2016 22:09:25 +0000 (22:09 +0000)]
[X86][AVX2] Regenerated broadcast domain tests

llvm-svn: 260010

8 years agoIslNodeBuilder: Invariant load hoisting of elements with differing sizes
Tobias Grosser [Sat, 6 Feb 2016 21:23:39 +0000 (21:23 +0000)]
IslNodeBuilder: Invariant load hoisting of elements with differing sizes

Always use access-instruction pointer type to load the invariant values.
Otherwise mismatches between ScopArrayInfo element type and memory access
element type will result in invalid casts. These type mismatches are after
r259784 a lot more common and also arise with types of different size, which
have not been handled before.

Interestingly, this change actually simplifies the code, as we now have only
one code path that is always taken, rather then a standard code path for the
common case and a "fixup" code path that replaces the standard code path in
case of mismatching types.

llvm-svn: 260009

8 years ago[X86][SSE] Add tests for MOVHLPS/MOVLHPS shuffle lowering.
Simon Pilgrim [Sat, 6 Feb 2016 20:11:52 +0000 (20:11 +0000)]
[X86][SSE] Add tests for MOVHLPS/MOVLHPS shuffle lowering.

As raised in PR26491, we don't make use of these instructions at the moment.

llvm-svn: 260008

8 years ago[X86][AVX512] Added support for VPMOVZX shuffle decoding.
Simon Pilgrim [Sat, 6 Feb 2016 19:51:21 +0000 (19:51 +0000)]
[X86][AVX512] Added support for VPMOVZX shuffle decoding.

llvm-svn: 260007

8 years ago[docs] Warn against slow serial builds
Philip Reames [Sat, 6 Feb 2016 19:43:40 +0000 (19:43 +0000)]
[docs] Warn against slow serial builds

llvm-svn: 260006

8 years ago[NVPTX] Mark nvvm synchronizing intrinsics as convergent.
Justin Lebar [Sat, 6 Feb 2016 19:32:44 +0000 (19:32 +0000)]
[NVPTX] Mark nvvm synchronizing intrinsics as convergent.

Summary:
This is the attribute purpose-made for e.g. __syncthreads.  It appears
that NoDuplicate may not be sufficient to prevent Sink from touching a
call to __syncthreads.

Reviewers: jingyue, hfinkel

Subscribers: llvm-commits, jholewinski, jhen, rnk, tra, majnemer

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

llvm-svn: 260005

8 years ago[docs] Redirect new contributors to the right starting point
Philip Reames [Sat, 6 Feb 2016 19:29:23 +0000 (19:29 +0000)]
[docs] Redirect new contributors to the right starting point

llvm-svn: 260004

8 years ago[docs] Clarify a couple of getting started issues identified during Sprint
Philip Reames [Sat, 6 Feb 2016 19:20:26 +0000 (19:20 +0000)]
[docs] Clarify a couple of getting started issues identified during Sprint

llvm-svn: 260003

8 years agoAdd a missing call to MDNode::deleteTemporary().
Adrian Prantl [Sat, 6 Feb 2016 18:39:34 +0000 (18:39 +0000)]
Add a missing call to MDNode::deleteTemporary().
Follow-up to r259975. Kudos to the ASAN bots!

<rdar://problem/24493203>

llvm-svn: 260002

8 years agoIntroduce NetBSD support
Kamil Rytarowski [Sat, 6 Feb 2016 18:19:29 +0000 (18:19 +0000)]
Introduce NetBSD support

Current FreeBSD and NetBSD code is compatible.

llvm-svn: 260001

8 years ago[X86][AVX512] Fixed prefix ordering for lzcnt tests.
Simon Pilgrim [Sat, 6 Feb 2016 18:07:19 +0000 (18:07 +0000)]
[X86][AVX512] Fixed prefix ordering for lzcnt tests.

Let AVX512 targets share the same CHECKs.

llvm-svn: 260000

8 years ago[X86][SSE] Regenerate vector shift tests
Simon Pilgrim [Sat, 6 Feb 2016 17:57:15 +0000 (17:57 +0000)]
[X86][SSE] Regenerate vector shift tests

llvm-svn: 259999

8 years ago[analyzer] DeallocChecker: Don't warn on release of readonly assign property in dealloc.
Devin Coughlin [Sat, 6 Feb 2016 17:17:32 +0000 (17:17 +0000)]
[analyzer] DeallocChecker: Don't warn on release of readonly assign property in dealloc.

It is common for the ivars for read-only assign properties to always be stored retained,
so don't warn for a release in dealloc for the ivar backing these properties.

llvm-svn: 259998

8 years ago[X86][SSE] Moved shuffle decode CASE macros earlier. NFC.
Simon Pilgrim [Sat, 6 Feb 2016 17:02:15 +0000 (17:02 +0000)]
[X86][SSE] Moved shuffle decode CASE macros earlier. NFC.

To allow the helper functions to make use of them.

llvm-svn: 259997

8 years ago[X86][SSE] Refactored PMOVZX shuffle decoding to use scalar input types
Simon Pilgrim [Sat, 6 Feb 2016 16:33:42 +0000 (16:33 +0000)]
[X86][SSE] Refactored PMOVZX shuffle decoding to use scalar input types

First step towards being able to decode AVX512 PMOVZX instructions without a massive bloat in the shuffle decode switch statement.

This should also make it easier to decode X86ISD::VZEXT target shuffles in the future.

llvm-svn: 259995

8 years agoAdapt LLVM_CMAKE_PATH for recent cmake path changes
Kamil Rytarowski [Sat, 6 Feb 2016 16:23:18 +0000 (16:23 +0000)]
Adapt LLVM_CMAKE_PATH for recent cmake path changes

Current LLVM installs CMake files under lib/cmake/llvm.

llvm-svn: 259994

8 years ago[ThinLTO] Include linkage type in function summary
Teresa Johnson [Sat, 6 Feb 2016 16:07:35 +0000 (16:07 +0000)]
[ThinLTO] Include linkage type in function summary

Summary:
Adds the linkage type to both the per-module and combined function
summaries, which subsumes the current islocal bit. This will eventually
be used to optimized linkage types based on global summary-based
analysis.

Reviewers: joker.eph

Subscribers: joker.eph, davidxl, llvm-commits

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

llvm-svn: 259993

8 years agoline endings fix
Simon Pilgrim [Sat, 6 Feb 2016 15:38:25 +0000 (15:38 +0000)]
line endings fix

llvm-svn: 259992

8 years ago[X86][SSE] Don't replace an existing 32-bit load with its duplicate
Simon Pilgrim [Sat, 6 Feb 2016 15:37:09 +0000 (15:37 +0000)]
[X86][SSE] Don't replace an existing 32-bit load with its duplicate

If we are already loading a single 32-bit float/integer then just reuse it.

Fix for regression in D16729

llvm-svn: 259991

8 years agoComment fix
Simon Pilgrim [Sat, 6 Feb 2016 14:21:49 +0000 (14:21 +0000)]
Comment fix

llvm-svn: 259990

8 years agoCorrected tests for Loop Versioning LICM, by adding “REQUIRES: asserts”.
Ashutosh Nema [Sat, 6 Feb 2016 12:34:41 +0000 (12:34 +0000)]
Corrected tests for Loop Versioning LICM, by adding “REQUIRES: asserts”.
Earlier they were failing under no-assert build.

llvm-svn: 259989

8 years agoFixed short underline error in LangRef.rst for recently added
Ashutosh Nema [Sat, 6 Feb 2016 09:24:37 +0000 (09:24 +0000)]
Fixed short underline error in LangRef.rst for recently added
metadata 'llvm.loop.licm_versioning.disable' description.

llvm-svn: 259988

8 years agoFollow uses to create value MemoryAccesses
Michael Kruse [Sat, 6 Feb 2016 09:19:40 +0000 (09:19 +0000)]
Follow uses to create value MemoryAccesses

The previously implemented approach is to follow value definitions and
create write accesses ("push defs") while searching for uses. This
requires the same relatively validity- and requirement conditions to be
replicated at multiple locations (PHI instructions, other instructions,
uses by PHIs).

We replace this by iterating over the uses in a SCoP ("pull in
requirements"), and add writes only when at least one read has been
added. It turns out to be simpler code because each use is only iterated
over once and writes are added for the first access that reads it. We
need another iteration to identify escaping values (uses not in the
SCoP), which also makes the difference between such accesses more
obvious. As a side-effect, the order of scalar MemoryAccess can change.

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

llvm-svn: 259987

8 years agoNew Loop Versioning LICM Pass
Ashutosh Nema [Sat, 6 Feb 2016 07:47:48 +0000 (07:47 +0000)]
New Loop Versioning LICM Pass

Summary:
When alias analysis is uncertain about the aliasing between any two accesses,
it will return MayAlias. This uncertainty from alias analysis restricts LICM
from proceeding further. In cases where alias analysis is uncertain we might
use loop versioning as an alternative.

Loop Versioning will create a version of the loop with aggressive aliasing
assumptions in addition to the original with conservative (default) aliasing
assumptions. The version of the loop making aggressive aliasing assumptions
will have all the memory accesses marked as no-alias. These two versions of
loop will be preceded by a memory runtime check. This runtime check consists
of bound checks for all unique memory accessed in loop, and it ensures the
lack of memory aliasing. The result of the runtime check determines which of
the loop versions is executed: If the runtime check detects any memory
aliasing, then the original loop is executed. Otherwise, the version with
aggressive aliasing assumptions is used.

The pass is off by default and can be enabled with command line option
-enable-loop-versioning-licm.

Reviewers: hfinkel, anemet, chatur01, reames

Subscribers: MatzeB, grosser, joker.eph, sanjoy, javed.absar, sbaranga,
             llvm-commits

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

llvm-svn: 259986

8 years agoRe-apply r259977 - [OpenMP] Reorganize code to allow specialized code generation...
Samuel Antao [Sat, 6 Feb 2016 06:52:48 +0000 (06:52 +0000)]
Re-apply r259977 - [OpenMP] Reorganize code to allow specialized code generation for different devices.

This was reverted due to a failure in a buildbot, but it turned out the failure was unrelated.

llvm-svn: 259985

8 years agoRevert r259977 - [OpenMP] Reorganize code to allow specialized code generation for...
Samuel Antao [Sat, 6 Feb 2016 06:22:46 +0000 (06:22 +0000)]
Revert r259977 - [OpenMP] Reorganize code to allow specialized code generation for different devices.

It triggered some problem in the configuration related with zlib and exposed in the driver.

llvm-svn: 259984

8 years agoProcessMachCore scans through the core file pages looking for a
Jason Molenda [Sat, 6 Feb 2016 04:55:26 +0000 (04:55 +0000)]
ProcessMachCore scans through the core file pages looking for a
user process dyld binary and/or a mach kernel binary image.  By
default, it prefers the kernel if it finds both.

But if it finds two kernel binary images (which can happen when
random things are mapped into memory), it may pick the wrong
kernel image.

DynamicLoaderDarwinKernel has heuristics to find a kernel in memory;
once we've established that there is a kernel binary in memory,
call over to that class to see if it can find a kernel address via
its search methods.  If it does, use that.

Some minor cleanups to DynamicLoaderDarwinKernel while I was at it.

<rdar://problem/24446112>

llvm-svn: 259983

8 years ago[asan] trying to fix the non-x86 bots
Kostya Serebryany [Sat, 6 Feb 2016 04:50:30 +0000 (04:50 +0000)]
[asan] trying to fix the non-x86 bots

llvm-svn: 259981

8 years ago[asan] properly report an un-aligned global variable instead of just crashing
Kostya Serebryany [Sat, 6 Feb 2016 03:22:24 +0000 (03:22 +0000)]
[asan] properly report an un-aligned global variable instead of just crashing

llvm-svn: 259979

8 years ago[asan] disabled one subtest in scariness_score_test.cc that may fail when running...
Kostya Serebryany [Sat, 6 Feb 2016 02:37:39 +0000 (02:37 +0000)]
[asan] disabled one subtest in scariness_score_test.cc that may fail when running under GNU make. Add more subtests

llvm-svn: 259978

8 years ago[OpenMP] Reorganize code to allow specialized code generation for different devices.
Samuel Antao [Sat, 6 Feb 2016 02:12:34 +0000 (02:12 +0000)]
[OpenMP] Reorganize code to allow specialized code generation for different devices.

Summary:
Different devices may in some cases require different code generation schemes in order to implement OpenMP. This is required not only for performance reasons, but also because it may not be possible to have the current (default) implementation working for these devices. E.g. GPU's cannot implement the same scheme a target such as powerpc or x86b would use, in the sense that it does not have the ability to fork threads, instead all the threads are always executing and need to be managed by the implementation.

This patch proposes a reorganization of the code in the OpenMP code generation to pave the way to have specialized implementation of OpenMP support. More than a "real" patch this is more a request for comments in order to understand if what is proposed is acceptable or if there are better/easier ways to do it.

In this patch part of the common OpenMP codegen infrastructure is moved to a new file under a new namespace (CGOpenMPCommon) so it can be shared between the default implementation and the specialized one. When CGOpenMPRuntime is created, an attempt to select a specialized implementation is done.

In the patch a specialization for nvptx targets is done which currently checks if the target is an OpenMP device and trap if it is not.

Let me know comments suggestions you may have.

Reviewers: hfinkel, carlo.bertolli, arpith-jacob, kkwli0, ABataev

Subscribers: Hahnfeld, cfe-commits, fraggamuffin, caomhin, jholewinski

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

llvm-svn: 259977

8 years ago[modules] Compress files embedded into a .pcm file, to reduce the disk usage of ...
Richard Smith [Sat, 6 Feb 2016 02:06:43 +0000 (02:06 +0000)]
[modules] Compress files embedded into a .pcm file, to reduce the disk usage of -fembed-all-files mode.

llvm-svn: 259976

8 years agoFix a crash when emitting dbeug info for forward-declared scoped enums.
Adrian Prantl [Sat, 6 Feb 2016 01:59:09 +0000 (01:59 +0000)]
Fix a crash when emitting dbeug info for forward-declared scoped enums.
It is possible for enums to be created as part of their own
declcontext. We need to cache a placeholder to avoid the type being
created twice before hitting the cache.

<rdar://problem/24493203>

llvm-svn: 259975