platform/upstream/llvm.git
8 years ago[InstCombine] simplify code; NFCI
Sanjay Patel [Thu, 15 Sep 2016 19:04:55 +0000 (19:04 +0000)]
[InstCombine] simplify code; NFCI

llvm-svn: 281644

8 years agoUse SuperBlock struct defined in MSFCommon.h.
Rui Ueyama [Thu, 15 Sep 2016 18:55:18 +0000 (18:55 +0000)]
Use SuperBlock struct defined in MSFCommon.h.

llvm-svn: 281643

8 years agoConvert ArchSpec::ParseMachOCPUDashSubtypeTriple to use StringRef.
Zachary Turner [Thu, 15 Sep 2016 18:41:48 +0000 (18:41 +0000)]
Convert ArchSpec::ParseMachOCPUDashSubtypeTriple to use StringRef.

This makes the code easier to grok, and since this is a very low
level function it also is very helpful to have this take a StringRef
since it means anyone higher up the chain who has a StringRef would
have to first convert it to a null-terminated string.  This way it
can work equally well with StringRefs or const char*'s, which will
enable the conversion of higher up functions to StringRef.

Tested on Windows, Linux, and OSX and saw no regressions.

llvm-svn: 281642

8 years ago[libc++] Avoid <memory> include in locale_win32.h
Shoaib Meenai [Thu, 15 Sep 2016 18:36:13 +0000 (18:36 +0000)]
[libc++] Avoid <memory> include in locale_win32.h

When `_LIBCPP_NO_EXCEPTIONS` is defined, we end up with compile errors
when targeting MSVCRT:

* Code includes `<new>`
* `<new>` includes `<cstdlib>` in order to get `abort`
* `<cstdlib>` includes `<stdlib.h>`, _before_ the `using ::abort`
* `<stdlib.h>` includes `locale_win32.h`
* `locale_win32.h` includes `<memory>`
* `<memory>` includes `<stdexcept>`
* `<stdexcept>` includes `<cstdlib` for `abort`, but that inclusion gets
  (correctly) ignored because of header guards
* `<stdexcept>` references `_VSTD::abort`, which isn't declared

The easiest solution is to make `locale_win32.h` not include `<memory>`,
by removing the use of `unique_ptr` and manually restoring the locale
instead.

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

llvm-svn: 281641

8 years ago[PM] Port CFGViewer and CFGPrinter to the new Pass Manager
Sriraman Tallam [Thu, 15 Sep 2016 18:35:27 +0000 (18:35 +0000)]
[PM] Port CFGViewer and CFGPrinter to the new Pass Manager
Differential Revision: https://reviews.llvm.org/D24592

llvm-svn: 281640

8 years agoadded LLDB_PYTHON_TESTSUITE_ARCH Xcode variable
Todd Fiala [Thu, 15 Sep 2016 18:28:03 +0000 (18:28 +0000)]
added LLDB_PYTHON_TESTSUITE_ARCH Xcode variable

This Xcode build variable defaults to x86_64.  It can be set to i386
to cause the lldb-python-test-suite target run the tests in the
specified architecture.

This flag is being added for the zorg build script so that Green Dragon
can run the test suite against both x86_64 and i386 macOS targets.

llvm-svn: 281639

8 years ago[pdb] Write the IPI stream.
Zachary Turner [Thu, 15 Sep 2016 18:22:31 +0000 (18:22 +0000)]
[pdb] Write the IPI stream.

The IPI stream is structurally identical to the TPI stream, but it
contains different record types.  So we just re-use the TPI writing
code.

llvm-svn: 281638

8 years agofix function names; NFC
Sanjay Patel [Thu, 15 Sep 2016 18:22:25 +0000 (18:22 +0000)]
fix function names; NFC

llvm-svn: 281637

8 years ago[pdb] Fix the TPI stream size computation.
Zachary Turner [Thu, 15 Sep 2016 18:22:21 +0000 (18:22 +0000)]
[pdb] Fix the TPI stream size computation.

We were inadvertently adding the size of the hash value stream to
the size of the TPI stream, even though the hash value stream is
an entirely separate stream.

llvm-svn: 281636

8 years ago[SE] Support CUDA dynamic shared memory
Jason Henline [Thu, 15 Sep 2016 18:11:04 +0000 (18:11 +0000)]
[SE] Support CUDA dynamic shared memory

Summary:
Add proper handling for shared memory arguments in the CUDA platform. Also add
in unit tests for CUDA.

Reviewers: jlebar

Subscribers: beanz, mgorny, jprice, jlebar, parallel_libs-commits

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

llvm-svn: 281635

8 years ago[libFuzzer] fix the build for AFLDriverTest
Kostya Serebryany [Thu, 15 Sep 2016 18:10:38 +0000 (18:10 +0000)]
[libFuzzer] fix the build for  AFLDriverTest

llvm-svn: 281633

8 years agoReapply: Silence false positive diagnostics regarding passing an object of enumeratio...
Aaron Ballman [Thu, 15 Sep 2016 18:07:51 +0000 (18:07 +0000)]
Reapply: Silence false positive diagnostics regarding passing an object of enumeration type to va_start().

The underlying type for an enumeration in C is either char, signed int, or unsigned int. In the case the underlying type is chosen to be char (such as when passing -fshort-enums or using __attribute__((packed)) on the enum declaration), the enumeration can result in undefined behavior. However, when the underlying type is signed int or unsigned int (or long long as an extension), there is no undefined behavior because the types are compatible. This patch silences diagnostics for the latter while retaining the diagnostics for the former.

This patch addresses PR29140.

llvm-svn: 281632

8 years ago[InstCombine] allow icmp (sub nsw) folds for vectors
Sanjay Patel [Thu, 15 Sep 2016 18:05:17 +0000 (18:05 +0000)]
[InstCombine] allow icmp (sub nsw) folds for vectors

Also, clean up the code and comments for the existing folds in foldICmpSubConstant().

llvm-svn: 281631

8 years ago[InstCombine] add vector tests for icmp (sub nsw)
Sanjay Patel [Thu, 15 Sep 2016 17:54:47 +0000 (17:54 +0000)]
[InstCombine] add vector tests for icmp (sub nsw)

llvm-svn: 281630

8 years ago[IRObjectFile] Handle undefined weak symbols in RecordStreamer.
Davide Italiano [Thu, 15 Sep 2016 17:54:22 +0000 (17:54 +0000)]
[IRObjectFile] Handle undefined weak symbols in RecordStreamer.

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

llvm-svn: 281629

8 years agoTake ownership of libLTO as discussed on llvm-dev.
Peter Collingbourne [Thu, 15 Sep 2016 17:42:39 +0000 (17:42 +0000)]
Take ownership of libLTO as discussed on llvm-dev.

llvm-svn: 281628

8 years ago[InstCombine] remove duplicated fold ; NFCI
Sanjay Patel [Thu, 15 Sep 2016 17:01:17 +0000 (17:01 +0000)]
[InstCombine] remove duplicated fold ; NFCI

This pattern is matched in foldICmpBinOpEqualityWithConstant() and already works
with vectors too. I changed some comments over there to point out the current
location. The tests for this transform are currently in 'sub.ll'.

Note that the remaining folds in this block all require a sub too, so they should
get grouped with the other icmp(sub) patterns.

llvm-svn: 281627

8 years ago[SE] Let users specify CUDA path
Jason Henline [Thu, 15 Sep 2016 16:48:55 +0000 (16:48 +0000)]
[SE] Let users specify CUDA path

Summary: Add logic to allow users to specify the CUDA path at configuration time.

Reviewers: jlebar

Subscribers: beanz, mgorny, jlebar, jprice, parallel_libs-commits

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

llvm-svn: 281626

8 years ago[analyzer] Fix HTMLRewriter style sheets to support non-webkit browsers.
Artem Dergachev [Thu, 15 Sep 2016 16:25:42 +0000 (16:25 +0000)]
[analyzer] Fix HTMLRewriter style sheets to support non-webkit browsers.

This fixes rounded corners and shadows of analyzer diagnostic pieces
in browsers such as Firefox.

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

llvm-svn: 281625

8 years ago[InstCombine] allow (icmp sgt smin(PosA, B), 0) fold for vectors
Sanjay Patel [Thu, 15 Sep 2016 16:23:20 +0000 (16:23 +0000)]
[InstCombine] allow (icmp sgt smin(PosA, B), 0) fold for vectors

llvm-svn: 281624

8 years ago[InstCombine] add vector tests for icmp sgt smin
Sanjay Patel [Thu, 15 Sep 2016 16:13:41 +0000 (16:13 +0000)]
[InstCombine] add vector tests for icmp sgt smin

llvm-svn: 281623

8 years ago[sanitizer] Test the allocator with the ASan win64 memory constants
Reid Kleckner [Thu, 15 Sep 2016 16:00:46 +0000 (16:00 +0000)]
[sanitizer] Test the allocator with the ASan win64 memory constants

These got out of sync and the tests were failing for me locally.  We
assume a 47 bit address space in ASan, so we should do the same in the
tests.

llvm-svn: 281622

8 years ago[InstCombine] auto-generate checks
Sanjay Patel [Thu, 15 Sep 2016 15:48:53 +0000 (15:48 +0000)]
[InstCombine] auto-generate checks

llvm-svn: 281621

8 years ago[compiler-rt] Changing function prototype returning unused value
Etienne Bergeron [Thu, 15 Sep 2016 15:45:05 +0000 (15:45 +0000)]
[compiler-rt] Changing function prototype returning unused value

Summary: The return value of `maybeInsertAsanInitAtFunctionEntry` is ignored.

Reviewers: rnk

Subscribers: llvm-commits, chrisha, dberris

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

llvm-svn: 281620

8 years agoReally fix the Windows sanitizer build
Reid Kleckner [Thu, 15 Sep 2016 15:39:52 +0000 (15:39 +0000)]
Really fix the Windows sanitizer build

Don't list __sanitizer_print_memory profile as an INTERFACE_FUNCTION. It
is not exported by ASan; it is exported by user code.

Move the weak definition from asan_win.cc to sanitizer_win.cc to fix the
ubsan tests.

llvm-svn: 281619

8 years agoFix silly mistake introduced here : https://reviews.llvm.org/D24566
Etienne Bergeron [Thu, 15 Sep 2016 15:35:59 +0000 (15:35 +0000)]
Fix silly mistake introduced here : https://reviews.llvm.org/D24566
Asan bots are currently broken without this patch.

llvm-svn: 281618

8 years agoaddress comments from: https://reviews.llvm.org/D24566
Etienne Bergeron [Thu, 15 Sep 2016 15:19:19 +0000 (15:19 +0000)]
address comments from: https://reviews.llvm.org/D24566
using startswith instead of find.

llvm-svn: 281617

8 years agoDocument our extension to the COFF .section directive flags
Reid Kleckner [Thu, 15 Sep 2016 15:11:49 +0000 (15:11 +0000)]
Document our extension to the COFF .section directive flags

llvm-svn: 281616

8 years ago[InstCombine] clean up foldICmpWithConstant(); NFC
Sanjay Patel [Thu, 15 Sep 2016 15:11:12 +0000 (15:11 +0000)]
[InstCombine] clean up foldICmpWithConstant(); NFC
1. Early exit to reduce indent
2. Rename variables
3. Add local 'Pred' variable

llvm-svn: 281615

8 years ago[InstCombine] add helper function for foldICmpWithConstant; NFC
Sanjay Patel [Thu, 15 Sep 2016 14:37:50 +0000 (14:37 +0000)]
[InstCombine] add helper function for foldICmpWithConstant; NFC

This is a big glob of transforms that probably should work for vectors,
but currently they are disallowed because of ConstantInt guards.

llvm-svn: 281614

8 years ago[InstCombine] use m_APInt to allow icmp folds using known bits for splat constant...
Sanjay Patel [Thu, 15 Sep 2016 14:15:47 +0000 (14:15 +0000)]
[InstCombine] use m_APInt to allow icmp folds using known bits for splat constant vectors

llvm-svn: 281613

8 years agoReverting r281609; it caused some build bots to break.
Aaron Ballman [Thu, 15 Sep 2016 14:12:33 +0000 (14:12 +0000)]
Reverting r281609; it caused some build bots to break.

http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/20061/steps/test/logs/stdio

llvm-svn: 281612

8 years agoGPGPU: Do not assume arrays start at 0
Tobias Grosser [Thu, 15 Sep 2016 14:05:58 +0000 (14:05 +0000)]
GPGPU: Do not assume arrays start at 0

Our alias checks precisely check that the minimal and maximal accessed elements
do not overlap in a kernel. Hence, we must ensure that our host <-> device
transfers do not touch additional memory locations that are not covered in
the alias check. To ensure this, we make sure that the data we copy for a
given array is only the data from the smallest element accessed to the largest
element accessed.

We also adjust the size of the array according to the offset at which the array
is actually accessed.

An interesting result of this is: In case array are accessed with negative
subscripts ,e.g., A[-100], we automatically allocate and transfer _more_ data to
cover the full array. This is important as such code indeed exists in the wild.

llvm-svn: 281611

8 years ago[mips][ias] Enable IAS by default for N64 on Debian mips64el.
Simon Dardis [Thu, 15 Sep 2016 14:01:55 +0000 (14:01 +0000)]
[mips][ias] Enable IAS by default for N64 on Debian mips64el.

Unfortunately we can't enable it for all N64 because it is not yet possible to
distinguish N32 from N64 from the triple on other environments.

N64 has been confirmed to produce identical (within reason) objects to GAS
during stage 2 of compiler recursion on N64-abi Fedora. Unfortunately,
Fedora's triples do not distinguish N32 from N64 so I can't enable it by
default there. I'm currently repeating this testing for Debian mips64el but
it's very unlikely to produce a different result.

Patch by: Daniel Sanders

Reviewers: sdardis

Differential Review: https://reviews.llvm.org/D22679

llvm-svn: 281610

8 years agoSilence false positive diagnostics regarding passing an object of enumeration type...
Aaron Ballman [Thu, 15 Sep 2016 14:01:10 +0000 (14:01 +0000)]
Silence false positive diagnostics regarding passing an object of enumeration type to va_start(). The underlying type for an enumeration in C is either char, signed int, or unsigned int. In the case the underlying type is chosen to be char (such as when passing -fshort-enums or using __attribute__((packed)) on the enum declaration), the enumeration can result in undefined behavior. However, when the underlying type is signed int or unsigned int (or long long as an extension), there is no undefined behavior because the types are compatible. This patch silences diagnostics for the latter while retaining the diagnostics for the former.

This patch addresses PR29140.

llvm-svn: 281609

8 years agoCheck the return of getInteger.
Rafael Espindola [Thu, 15 Sep 2016 13:36:44 +0000 (13:36 +0000)]
Check the return of getInteger.

llvm-svn: 281608

8 years ago[mips][ias] Enable IAS by default for N64 on Debian mips64el.
Simon Dardis [Thu, 15 Sep 2016 13:13:01 +0000 (13:13 +0000)]
[mips][ias] Enable IAS by default for N64 on Debian mips64el.

Unfortunately we can't enable it for all N64 because it is not yet possible to
distinguish N32 from N64.

N64 has been confirmed to produce identical (within reason) objects to GAS
during stage 2 of compiler recursion on N64-abit Fedora. Unfortunately,
Fedora's triples do not distinguish N32 from N64 so I can't enable it by
default there. I'm currently repeating this testing for Debian mips64el but
it's very unlikely to produce a different result.

Patch by: Daniel Sanders

Reviewers: sdardis

Differential Review: https://reviews.llvm.org/D22678

llvm-svn: 281607

8 years agoReformat x86_64 register infos defines table
Dimitar Vlahovski [Thu, 15 Sep 2016 12:58:27 +0000 (12:58 +0000)]
Reformat x86_64 register infos defines table

Fix the table format of the register defines after clang-format.
Added guards to prevent future reformatting again from clang-format.

llvm-svn: 281606

8 years agoRecommit r281318 "[ELF] - Versionscript: support mangled symbols with the same name."
George Rimar [Thu, 15 Sep 2016 12:44:38 +0000 (12:44 +0000)]
Recommit r281318 "[ELF] - Versionscript: support mangled symbols with the same name."

Previouly bot was failing:
http://lab.llvm.org:8011/builders/clang-with-lto-ubuntu/builds/413/steps/test-stage1-compiler/logs/stdio
Fixed possible segfault, so commit should bix the buildbot.

Initial commit message:

This is PR30312. Info from bug page:

Both of these symbols demangle to abc::abc():
_ZN3abcC1Ev
_ZN3abcC2Ev
(These would be abc's complete object constructor and base object constructor, respectively.)
however with "abc::abc()" in the version script only one of the two receives the symbol version.

Patch fixes that.
It uses testcase created by Ed Maste (D24306).

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

llvm-svn: 281605

8 years ago[ARM] Promote small global constants to constant pools
James Molloy [Thu, 15 Sep 2016 12:30:27 +0000 (12:30 +0000)]
[ARM] Promote small global constants to constant pools

If a constant is unamed_addr and is only used within one function, we can save
on the code size and runtime cost of an indirection by changing the global's storage
to inside the constant pool. For example, instead of:

      ldr r0, .CPI0
      bl printf
      bx lr
    .CPI0: &format_string
    format_string: .asciz "hello, world!\n"

We can emit:

      adr r0, .CPI0
      bl printf
      bx lr
    .CPI0: .asciz "hello, world!\n"

This can cause significant code size savings when many small strings are used in one
function (4 bytes per string).

This recommit contains fixes for a nasty bug related to fast-isel fallback - because
fast-isel doesn't know about this optimization, if it runs and emits references to
a string that we inline (because fast-isel fell back to SDAG) we will end up
with an inlined string and also an out-of-line string, and we won't emit the
out-of-line string, causing backend failures.

llvm-svn: 281604

8 years ago[libcxx] Allow sanitizing libcxx with ASan+UBSan simultaneously
Kuba Brecka [Thu, 15 Sep 2016 11:04:53 +0000 (11:04 +0000)]
[libcxx] Allow sanitizing libcxx with ASan+UBSan simultaneously

Allow building with LLVM_USE_SANITIZER=“Address;Undefined” (and “Undefined;Address”).

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

llvm-svn: 281603

8 years agoGlobalISel: legalize GEP instructions with small offsets.
Tim Northover [Thu, 15 Sep 2016 11:02:19 +0000 (11:02 +0000)]
GlobalISel: legalize GEP instructions with small offsets.

llvm-svn: 281602

8 years agoFix TestSymbolContextTwoFiles on Android after rL281595
Tamas Berghammer [Thu, 15 Sep 2016 10:49:55 +0000 (10:49 +0000)]
Fix TestSymbolContextTwoFiles on Android after rL281595

llvm-svn: 281601

8 years agoGlobalISel: relax type constraints on G_ICMP to allow pointers.
Tim Northover [Thu, 15 Sep 2016 10:40:38 +0000 (10:40 +0000)]
GlobalISel: relax type constraints on G_ICMP to allow pointers.

llvm-svn: 281600

8 years agoGlobalISel: remove "unsized" LLT
Tim Northover [Thu, 15 Sep 2016 10:09:59 +0000 (10:09 +0000)]
GlobalISel: remove "unsized" LLT

It was only really there as a sentinel when instructions had to have precisely
one type. Now that registers are typed, each register really has to have a type
that is sized.

llvm-svn: 281599

8 years agollvm/test/Transforms/CorrelatedValuePropagation/alloca.ll REQUIRES +Asserts.
NAKAMURA Takumi [Thu, 15 Sep 2016 09:45:31 +0000 (09:45 +0000)]
llvm/test/Transforms/CorrelatedValuePropagation/alloca.ll REQUIRES +Asserts.

llvm-svn: 281598

8 years agoGlobalISel: cache pointer sizes in LLT
Tim Northover [Thu, 15 Sep 2016 09:20:34 +0000 (09:20 +0000)]
GlobalISel: cache pointer sizes in LLT

Otherwise everything that needs to work out what size they are has to keep a
DataLayout handy, which is a bit silly and very annoying.

llvm-svn: 281597

8 years ago[ARM] ARM-specific attributes should be accepted for big-endian
Oliver Stannard [Thu, 15 Sep 2016 08:55:41 +0000 (08:55 +0000)]
[ARM] ARM-specific attributes should be accepted for big-endian

The ARM-specific C attributes (currently just interrupt) need to check
for both the big- and little-endian versions of the triples, so that
they are accepted for both big and little endian targets.

TargetWindows and TargetMicrosoftCXXABI also only use the little-endian
triples, but this is correct as windows is not supported on big-endian
ARM targets (and this is asserted in lib/Basic/Targets.cpp).

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

llvm-svn: 281596

8 years agoAdd support for DW_AT_ranges_base attribute
Tamas Berghammer [Thu, 15 Sep 2016 08:53:33 +0000 (08:53 +0000)]
Add support for DW_AT_ranges_base attribute

It is a new attribute emitted by clang as a GNU extension and will
be part of Dwarf5. The purpose of the attribute is to specify a compile
unit level base value for all DW_AT_ranges to reduce the number of
relocations have to be done by the linker.

Fixes (at least partially): https://llvm.org/pr28826

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

llvm-svn: 281595

8 years agoTry to fix windows build after rL281569
Tamas Berghammer [Thu, 15 Sep 2016 08:47:59 +0000 (08:47 +0000)]
Try to fix windows build after rL281569

llvm-svn: 281594

8 years ago[asan] Reify ErrorInvalidPointerPair
Filipe Cabecinhas [Thu, 15 Sep 2016 08:10:56 +0000 (08:10 +0000)]
[asan] Reify ErrorInvalidPointerPair

Summary: Continue work on PR30351

Reviewers: vitalybuka, kcc, eugenis

Subscribers: kubabrecka, llvm-commits

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

llvm-svn: 281593

8 years ago[asan] Reify ErrorODRViolation
Filipe Cabecinhas [Thu, 15 Sep 2016 08:10:52 +0000 (08:10 +0000)]
[asan] Reify ErrorODRViolation

Summary: Continue work on PR30351

Reviewers: vitalybuka, kcc, eugenis

Subscribers: kubabrecka, llvm-commits

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

llvm-svn: 281592

8 years ago[asan] Reify ErrorBadParamsToAnnotateContiguousContainer
Filipe Cabecinhas [Thu, 15 Sep 2016 08:10:48 +0000 (08:10 +0000)]
[asan] Reify ErrorBadParamsToAnnotateContiguousContainer

Summary: Continue work on PR30351

Reviewers: vitalybuka, kcc, eugenis

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 281591

8 years ago[llvm-cov] Move some layout logic to the right spot (NFC)
Vedant Kumar [Thu, 15 Sep 2016 06:49:13 +0000 (06:49 +0000)]
[llvm-cov] Move some layout logic to the right spot (NFC)

llvm-svn: 281590

8 years ago[llvm-cov] Hide instantiation views for unexecuted functions
Vedant Kumar [Thu, 15 Sep 2016 06:44:51 +0000 (06:44 +0000)]
[llvm-cov] Hide instantiation views for unexecuted functions

Copying in the full text of the function doesn't help at all when we
already know that it's never executed. Just say that it's unexecuted --
the relevant source text has already been printed.

llvm-svn: 281589

8 years ago[llvm-cov] Don't create 'jump to ...' links in nested views
Vedant Kumar [Thu, 15 Sep 2016 06:44:48 +0000 (06:44 +0000)]
[llvm-cov] Don't create 'jump to ...' links in nested views

Doing so is pointless, since the whole view is usually visible in a
small amount of space.

llvm-svn: 281588

8 years agoUpdate clang unittests for rL281586.
Wei Mi [Thu, 15 Sep 2016 06:31:30 +0000 (06:31 +0000)]
Update clang unittests for rL281586.

The change in rL281586 is in llvm component and tests updated here are
in clang component, so I have to commit them consecutively.

llvm-svn: 281587

8 years agoAdd some shortcuts in LazyValueInfo to reduce compile time of Correlated Value Propag...
Wei Mi [Thu, 15 Sep 2016 06:28:34 +0000 (06:28 +0000)]
Add some shortcuts in LazyValueInfo to reduce compile time of Correlated Value Propagation.

The patch is to partially fix PR10584. Correlated Value Propagation queries LVI
to check non-null for pointer params of each callsite. If we know the def of
param is an alloca instruction, we know it is non-null and can return early from
LVI. Similarly, CVP queries LVI to check whether pointer for each mem access is
constant. If the def of the pointer is an alloca instruction, we know it is not
a constant pointer. These shortcuts can reduce the cost of CVP significantly.

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

llvm-svn: 281586

8 years ago[CMake] Fixing lit for runtimes directory
Jonas Hahnfeld [Thu, 15 Sep 2016 06:14:13 +0000 (06:14 +0000)]
[CMake] Fixing lit for runtimes directory

Copy variable LLVM_BUILD_MAIN_SRC_DIR from LLVMConfig.cmake to
LLVM_MAIN_SRC_DIR as it is named for in-tree builds. This ensures that
add_lit_target() can reliably find llvm-lit which is not necessarily
in the PATH.

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

llvm-svn: 281585

8 years ago[libFuzzer] disable test that requires debug info -- it fails on the bot
Kostya Serebryany [Thu, 15 Sep 2016 05:46:58 +0000 (05:46 +0000)]
[libFuzzer] disable test that requires debug info -- it fails on the bot

llvm-svn: 281584

8 years ago[libFuzzer] move the AFL driver build rule test into the uninstrumented dir
Kostya Serebryany [Thu, 15 Sep 2016 05:17:39 +0000 (05:17 +0000)]
[libFuzzer] move the AFL driver build rule test into the uninstrumented dir

llvm-svn: 281583

8 years agoBuiltins.def: Explicitly undef finitef, to appease mingw. It defines finitef as alias...
NAKAMURA Takumi [Thu, 15 Sep 2016 05:11:43 +0000 (05:11 +0000)]
Builtins.def: Explicitly undef finitef, to appease mingw. It defines finitef as alias of _finitef.

llvm-svn: 281582

8 years ago[llvm-cov] Make a method name more accurate (NFC)
Vedant Kumar [Thu, 15 Sep 2016 04:45:59 +0000 (04:45 +0000)]
[llvm-cov] Make a method name more accurate (NFC)

llvm-svn: 281581

8 years ago[libFuzzer] fix print_pcs test
Kostya Serebryany [Thu, 15 Sep 2016 04:43:06 +0000 (04:43 +0000)]
[libFuzzer] fix print_pcs test

llvm-svn: 281580

8 years ago[llvm-cov] Don't print a verbose title when looking at one file
Vedant Kumar [Thu, 15 Sep 2016 04:41:39 +0000 (04:41 +0000)]
[llvm-cov] Don't print a verbose title when looking at one file

Having the same title, timestamp, etc. occur repeatedly creates an
unnecessary distraction when paging through a report.

llvm-svn: 281579

8 years ago[llvm-cov] Fix tests that aren't checking anything (NFC)
Vedant Kumar [Thu, 15 Sep 2016 04:41:37 +0000 (04:41 +0000)]
[llvm-cov] Fix tests that aren't checking anything (NFC)

E.g the 'showProjectSummary' test contains some checks which can't fail
because they match themselves...

llvm-svn: 281578

8 years ago[libFuzzer] implement print_pcs with trace-pc-guard. Change the trace-pc-guard heuris...
Kostya Serebryany [Thu, 15 Sep 2016 04:36:45 +0000 (04:36 +0000)]
[libFuzzer] implement print_pcs with trace-pc-guard. Change the trace-pc-guard heuristic for 8-bit counters to look more like in AFL (not that it's provable better, but the existin test preferes this heuristic)

llvm-svn: 281577

8 years ago[sanitizer] Fix darwin Go tsan build by unifying r281567 and r281553.
Ahmed Bougacha [Thu, 15 Sep 2016 04:28:20 +0000 (04:28 +0000)]
[sanitizer] Fix darwin Go tsan build by unifying r281567 and r281553.

Avoid redefining the weak stub when building gotsan.cc

llvm-svn: 281576

8 years agoAdd a C++ unittest to test the fix for PR30213.
Wei Mi [Thu, 15 Sep 2016 04:06:44 +0000 (04:06 +0000)]
Add a C++ unittest to test the fix for PR30213.

The test exercises the branch in scev expansion when the value in ValueOffsetPair
is a ptr and the offset is not divisible by the elem type size of value.

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

llvm-svn: 281575

8 years ago[sanitizer] one more attempt to fix things with __sanitizer_print_memory_profile
Kostya Serebryany [Thu, 15 Sep 2016 02:11:07 +0000 (02:11 +0000)]
[sanitizer] one more attempt to fix things with  __sanitizer_print_memory_profile

llvm-svn: 281574

8 years ago[doc] [CUDA] Add sections about STL support and differences between nvcc and clang...
Justin Lebar [Thu, 15 Sep 2016 02:04:32 +0000 (02:04 +0000)]
[doc] [CUDA] Add sections about STL support and differences between nvcc and clang to CompileCudaWithLLVM.rst.

llvm-svn: 281573

8 years ago[LangRef] Add a clarifying example for undef
Sanjoy Das [Thu, 15 Sep 2016 01:56:58 +0000 (01:56 +0000)]
[LangRef] Add a clarifying example for undef

llvm-svn: 281570

8 years agoMake the keys enumerations for options and resolvers enum classes.
Jim Ingham [Thu, 15 Sep 2016 01:47:22 +0000 (01:47 +0000)]
Make the keys enumerations for options and resolvers enum classes.

This keeps them from conflicting with other symbols names, so it's
worth their being less convenient to use for indexing.

llvm-svn: 281569

8 years ago[libFuzzer] add 8-bit counters to trace-pc-guard handler
Kostya Serebryany [Thu, 15 Sep 2016 01:30:18 +0000 (01:30 +0000)]
[libFuzzer] add 8-bit counters to trace-pc-guard handler

llvm-svn: 281568

8 years agoDefine the weak symbol added by r281546 on mac.
Ahmed Bougacha [Thu, 15 Sep 2016 01:04:32 +0000 (01:04 +0000)]
Define the weak symbol added by r281546 on mac.

'weak' doesn't behave like it does on linux.

llvm-svn: 281567

8 years agomath: Implement tgamma
Aaron Watry [Thu, 15 Sep 2016 00:17:34 +0000 (00:17 +0000)]
math: Implement tgamma

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 281566

8 years agomath: Implement lgamma
Aaron Watry [Thu, 15 Sep 2016 00:17:31 +0000 (00:17 +0000)]
math: Implement lgamma

Just use lgamma_r and ignore the value returned in the second argument

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 281565

8 years agomath: Implement lgamma_r
Aaron Watry [Thu, 15 Sep 2016 00:17:28 +0000 (00:17 +0000)]
math: Implement lgamma_r

Ported from the amd-builtins branch, which is itself based on the
Sun Microsystems implementation.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 281564

8 years agoAdd ADDR_SPACE parameter to _CLC_V_V_VP_VECTORIZE
Aaron Watry [Thu, 15 Sep 2016 00:17:22 +0000 (00:17 +0000)]
Add ADDR_SPACE parameter to _CLC_V_V_VP_VECTORIZE

This macro is currently unused, but I plan to use it shortly.

The previous form did casts of pointers without an address space, which
doesn't work so well for CL 1.x.

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 281563

8 years agoRevert r280944 - Added 'inline' attribute to basic_string's destructor
Eric Fiselier [Wed, 14 Sep 2016 23:52:01 +0000 (23:52 +0000)]
Revert r280944 - Added 'inline' attribute to basic_string's destructor

This patch causes a couple of issues:

1) It triggers http://llvm.org/PR30341. Although the bug is not truly a libc++
bug it breaks the LLVM build using libc++. Reverting this patch is only
a temporary workaround until Clang is fixed.

2) It adds yet another ABI incompatibility when libc++.so is compiled with GCC.
Specifically GCC doesn't ignore the _LIBCPP_INLINE_VISIBILITY on the out-of-line
definition when compiling the dylib. This causes the externally instantiated
~basic_string symbol to have hidden visibility.

This patch should be recommitted after addressing (1) and (2). (2) can be fixed
by adding _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY which is defined as
__attribute__((visibility("default"), always_inline)) as opposed to
_LIBCPP_INLINE_VISIBILITY which makes the symbol hidden.

llvm-svn: 281562

8 years ago[InstCombine] refactor eq/ne cases in foldICmpUsingKnownBits() ; NFCI
Sanjay Patel [Wed, 14 Sep 2016 23:38:56 +0000 (23:38 +0000)]
[InstCombine] refactor eq/ne cases in foldICmpUsingKnownBits() ; NFCI

The pattern matching and transforms are identical; the cmp predicate just changes.

llvm-svn: 281561

8 years ago[pdb] Fix unit test compilation.
Zachary Turner [Wed, 14 Sep 2016 23:17:08 +0000 (23:17 +0000)]
[pdb] Fix unit test compilation.

llvm-svn: 281560

8 years ago[InstCombine] add vector tests for foldICmpUsingKnownBits()
Sanjay Patel [Wed, 14 Sep 2016 23:15:11 +0000 (23:15 +0000)]
[InstCombine] add vector tests for foldICmpUsingKnownBits()

llvm-svn: 281559

8 years agoFix the Windows build after r281546
Reid Kleckner [Wed, 14 Sep 2016 23:07:05 +0000 (23:07 +0000)]
Fix the Windows build after r281546

llvm-svn: 281558

8 years agoRevert r281457 "Supports adding insertion around non-insertion replacements."
Artem Belevich [Wed, 14 Sep 2016 23:03:06 +0000 (23:03 +0000)]
Revert r281457 "Supports adding insertion around non-insertion replacements."

Commit was breaking our internal tests.

llvm-svn: 281557

8 years ago[pdb] Get rid of Data and RawData in CVType.
Zachary Turner [Wed, 14 Sep 2016 23:00:16 +0000 (23:00 +0000)]
[pdb] Get rid of Data and RawData in CVType.

The `CVType` had two redundant fields which were confusing and
error-prone to fill out.  By treating member records as a distinct
type from leaf records, we are able to simplify this quite a bit.

Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D24432

llvm-svn: 281556

8 years ago[pdb] Write TPI hash values to the TPI stream.
Zachary Turner [Wed, 14 Sep 2016 23:00:02 +0000 (23:00 +0000)]
[pdb] Write TPI hash values to the TPI stream.

This completes being able to write all the interesting
values of a PDB TPI stream.

Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D24370

llvm-svn: 281555

8 years ago[MC] Handle discardable COFF sections in assembly
Reid Kleckner [Wed, 14 Sep 2016 22:41:50 +0000 (22:41 +0000)]
[MC] Handle discardable COFF sections in assembly

Summary:
This fixes a dumpbin warning on objects produced by the MC assembler
when starting from text. All .debug$S sections are supposed to be marked
IMAGE_SCN_MEM_DISCARDABLE. The main, non-COMDAT .debug$S section had
this set, but any comdat ones were not being marked discardable because
there was no .section flag for it.

This change does two things:

- If the section name starts with .debug, implicitly mark the section as
  discardable. This means we do the same thing as gas on .s files with
  DWARF from GCC, which is important.

- Adds the 'D' flag to the .section directive on COFF to explicitly say
  a section is discardable. We only emit this flag if the section name
  does not start with .debug. This allows the user to explicitly tweak
  their section flags without worrying about magic section names.

The only thing you can't do in this scheme is to create a
non-discardable section with a name starting with ".debug", but
hopefully users don't need that.

Reviewers: majnemer, rafael

Subscribers: llvm-commits

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

llvm-svn: 281554

8 years ago[tsan] fix tsan build by adding a dummy __sanitizer_print_memory_profile
Kostya Serebryany [Wed, 14 Sep 2016 22:35:56 +0000 (22:35 +0000)]
[tsan] fix tsan build by adding a dummy __sanitizer_print_memory_profile

llvm-svn: 281553

8 years ago[clang-cl] Accept the joined equals version of -resource-dir=
Reid Kleckner [Wed, 14 Sep 2016 22:31:24 +0000 (22:31 +0000)]
[clang-cl] Accept the joined equals version of -resource-dir=

lib/Tooling injects this argument without regard for what driver syntax
is in use.

llvm-svn: 281550

8 years agoFix auto-upgrade of TBAA tags in Bitcode Reader
Mehdi Amini [Wed, 14 Sep 2016 22:29:59 +0000 (22:29 +0000)]
Fix auto-upgrade of TBAA tags in Bitcode Reader

If TBAA is on an intrinsic and it gets upgraded, it'll delete the call
instruction that we collected in a vector. Even if we were to use
WeakVH, it'll drop the TBAA and we'll hit the assert on the upgrade
path.

r263673 gave a shot to make sure the TBAA upgrade happens before
intrinsics upgrade, but failed to account for all cases.

Instead of collecting instructions in a vector, this patch makes it
just upgrade the TBAA on the fly, because metadata are always
already loaded at this point.

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

llvm-svn: 281549

8 years ago[asan] fix windows
Kostya Serebryany [Wed, 14 Sep 2016 22:13:20 +0000 (22:13 +0000)]
[asan] fix windows

llvm-svn: 281548

8 years ago[asan] add heap_profile=1 to asan to periodically print the heap profile. So far...
Kostya Serebryany [Wed, 14 Sep 2016 22:00:58 +0000 (22:00 +0000)]
[asan] add heap_profile=1 to asan to periodically print the heap profile. So far this is a very basic heap-profile functionality

llvm-svn: 281546

8 years agoMore cleanup in `frame diagnose,` eliminating a bunch of messy cases.
Sean Callanan [Wed, 14 Sep 2016 21:54:28 +0000 (21:54 +0000)]
More cleanup in `frame diagnose,` eliminating a bunch of messy cases.

llvm-svn: 281545

8 years ago[CUDA] Make __clang_cuda_cmath.h compatible with libc++.
Justin Lebar [Wed, 14 Sep 2016 21:50:14 +0000 (21:50 +0000)]
[CUDA] Make __clang_cuda_cmath.h compatible with libc++.

Summary:
We need to add a bunch more "using"s, which weren't necessary with
libstdc++.

Once this is in I can check in a test to the test-suite.

Reviewers: tra

Subscribers: cfe-commits

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

llvm-svn: 281544

8 years ago[CUDA] Add test checking our ability to take a function pointer to a __global__ funct...
Justin Lebar [Wed, 14 Sep 2016 21:50:11 +0000 (21:50 +0000)]
[CUDA] Add test checking our ability to take a function pointer to a __global__ function on the host side.

Summary: This functionality is used by Thrust.

Reviewers: tra

Subscribers: cfe-commits

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

llvm-svn: 281543

8 years agoFix indentation in codeview code
Reid Kleckner [Wed, 14 Sep 2016 21:49:21 +0000 (21:49 +0000)]
Fix indentation in codeview code

llvm-svn: 281542

8 years agoAdd some MS aliases for existing intrinsics
Albert Gutowski [Wed, 14 Sep 2016 21:19:43 +0000 (21:19 +0000)]
Add some MS aliases for existing intrinsics

Reviewers: thakis, compnerd, majnemer, rsmith, rnk

Subscribers: alexshap, cfe-commits

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

llvm-svn: 281540

8 years ago[LTO] Move tests from test/tools to test/LTO, as they're testing the API functionalit...
Mehdi Amini [Wed, 14 Sep 2016 21:07:32 +0000 (21:07 +0000)]
[LTO] Move tests from test/tools to test/LTO, as they're testing the API functionalities (NFC)

llvm-svn: 281539

8 years ago[LTO] Fix commons handling
Mehdi Amini [Wed, 14 Sep 2016 21:05:04 +0000 (21:05 +0000)]
[LTO] Fix commons handling

Previously the prevailing information was not honored, and commons
symbols could override a strong definition. This patch fixes it and
propose the following semantic for commons: the client should mark
as prevailing the commons that it expects the LTO implementation to
merge (i.e. take the maximum size and alignment).
It implies that commons are allowed to have multiple prevailing
definitions.

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

llvm-svn: 281538