platform/upstream/llvm.git
7 years ago[LCG] Redesign the lazy post-order iteration mechanism for the
Chandler Carruth [Fri, 16 Sep 2016 10:20:17 +0000 (10:20 +0000)]
[LCG] Redesign the lazy post-order iteration mechanism for the
LazyCallGraph to support repeated, stable iterations, even in the face
of graph updates.

This is particularly important to allow the CGSCC pass manager to walk
the RefSCCs (and thus everything else) in a module more than once. Lots
of unittests and other tests were hard or impossible to write because
repeated CGSCC pass managers which didn't invalidate the LazyCallGraph
would conclude the module was empty after the first one. =[ Really,
really bad.

The interesting thing is that in many ways this simplifies the code. We
can now re-use the same code for handling reference edge insertion
updates of the RefSCC graph as we use for handling call edge insertion
updates of the SCC graph. Outside of adapting to the shared logic for
this (which isn't trivial, but is *much* simpler than the DFS it
replaces!), the new code involves putting newly created RefSCCs when
deleting a reference edge into the cached list in the correct way, and
to re-formulate the iterator to be stable and effective even in the face
of these kinds of updates.

I've updated the unittests for the LazyCallGraph to re-iterate the
postorder sequence and verify that this all works. We even check for
using alternating iterators to trigger the lazy formation of RefSCCs
after mutation has occured.

It's worth noting that there are a reasonable number of likely
simplifications we can make past this. It isn't clear that we need to
keep the "LeafRefSCCs" around any more. But I've not removed that mostly
because I want this to be a more isolated change.

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

llvm-svn: 281716

7 years ago[ARM] Promote small global constants to constant pools
James Molloy [Fri, 16 Sep 2016 10:17:04 +0000 (10:17 +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.

It also contains fixes for emitting .text relocations which made the sanitizer
bots unhappy.

llvm-svn: 281715

7 years agoImprove handling of floating point literals in OpenCL to only use double precision...
Neil Hickey [Fri, 16 Sep 2016 10:15:06 +0000 (10:15 +0000)]
Improve handling of floating point literals in OpenCL to only use double precision if the target supports fp64

https://reviews.llvm.org/D24235

llvm-svn: 281714

7 years ago[clang-tidy] Bugfix for readability-redundant-control-flow check
Kirill Bobyrev [Fri, 16 Sep 2016 10:12:08 +0000 (10:12 +0000)]
[clang-tidy] Bugfix for readability-redundant-control-flow check

This check did not create FixItHints when the statement before the redundant
control flow was not followed by a semicolon.

Patch by Malcolm Parsons!

Reviewers: alexfh

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

llvm-svn: 281713

7 years agoTouch up [[clang::require_constant_initialization]] docs
Eric Fiselier [Fri, 16 Sep 2016 10:04:38 +0000 (10:04 +0000)]
Touch up [[clang::require_constant_initialization]] docs

* Fix an egregious comma usage.
* Remove the `static` keyword in the example since the variables should have
  external linkage.
* Use C++11 attributes in the example.

llvm-svn: 281712

7 years agoTesting commit rights. Removing trailing white space from test file.
Neil Hickey [Fri, 16 Sep 2016 09:38:11 +0000 (09:38 +0000)]
Testing commit rights. Removing trailing white space from test file.

llvm-svn: 281711

7 years ago[clang-rename] Merge rename-{at|all} & optimise.
Kirill Bobyrev [Fri, 16 Sep 2016 08:45:19 +0000 (08:45 +0000)]
[clang-rename] Merge rename-{at|all} & optimise.

Having both rename-at and rename-all both seems confusing and introduces
unneeded difficulties. After merging rename-at and rename-all maintaining main
function wrappers and custom help becomes redundant while CLI becomes less
confusing.

D24224 (which was the original patch causing buildbot failures) wasn't aware of
bugs caused by passing both -offset and -qualified-name. After D24224 was landed
it caused buildbot failures and therefor I just reverted it.

Two things that make this patch different from D24224 are:

* unittests/clang-rename was deleted, because it is unmaintained and doesn't do
much.
* Passing both `-offset` and `-qualified-name` isn't allowed anymore for the
sake of preventing bugs.

This patch is a trivial enhancement of accepted D24224 revision.

Tested with `ninja check-all`.

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

llvm-svn: 281710

7 years agoFix side effect in assertion
Eric Fiselier [Fri, 16 Sep 2016 08:16:07 +0000 (08:16 +0000)]
Fix side effect in assertion

llvm-svn: 281709

7 years agoMove the Mangler from the AsmPrinter down to TLOF and clean up the
Eric Christopher [Fri, 16 Sep 2016 07:33:15 +0000 (07:33 +0000)]
Move the Mangler from the AsmPrinter down to TLOF and clean up the
TLOF API accordingly.

llvm-svn: 281708

7 years agoRemove unused function getMang().
Eric Christopher [Fri, 16 Sep 2016 07:32:58 +0000 (07:32 +0000)]
Remove unused function getMang().

llvm-svn: 281707

7 years agoFix unused result from sign extending an Offset.
Stephen Hines [Fri, 16 Sep 2016 07:21:24 +0000 (07:21 +0000)]
Fix unused result from sign extending an Offset.

Summary:
Offset was doubled in size, but the assignment was missing. We just need
to reassign to the original variable in this case to fix it.

Reviewers: cfe-commits, echristo

Subscribers: meikeb

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

llvm-svn: 281706

7 years agoUpdate CFGPrinter -> CFGPrinterLegacyPass
Tobias Grosser [Fri, 16 Sep 2016 05:48:09 +0000 (05:48 +0000)]
Update CFGPrinter -> CFGPrinterLegacyPass

.. to match recent changes in LLVM that broke the Polly compilation.

llvm-svn: 281705

7 years agoUse functions in DebugInfoPDB to create dummy PDB file.
Rui Ueyama [Fri, 16 Sep 2016 04:32:33 +0000 (04:32 +0000)]
Use functions in DebugInfoPDB to create dummy PDB file.

I don't think we are creating valid PDB file here,
but it is okay because we have never created valid PDBs before.

llvm-svn: 281704

7 years ago[CUDA] [doc] Note that you can use std::min/max from device code with C++14.
Justin Lebar [Fri, 16 Sep 2016 04:14:02 +0000 (04:14 +0000)]
[CUDA] [doc] Note that you can use std::min/max from device code with C++14.

llvm-svn: 281702

7 years agoDemangle symbols in "undefined symbol" error message.
Rui Ueyama [Fri, 16 Sep 2016 03:52:45 +0000 (03:52 +0000)]
Demangle symbols in "undefined symbol" error message.

llvm-svn: 281698

7 years agoAttempt to fix Sphinx build
Eric Fiselier [Fri, 16 Sep 2016 03:47:53 +0000 (03:47 +0000)]
Attempt to fix Sphinx build

llvm-svn: 281697

7 years agoadd availability check to DarwinLog event tests
Todd Fiala [Fri, 16 Sep 2016 03:07:14 +0000 (03:07 +0000)]
add availability check to DarwinLog event tests

The pexpect-based tests properly checked for the stub reporting
DarwinLog support.  The event-based ones did not.  This is fixed
here.  Swift CI bots are not currently building debugserver on
macOS, so they don't have the DarwinLog support even when they
pass the macOS 10.12 check.

llvm-svn: 281696

7 years agoUpdate _LIBCPP_EXCEPTION_ABI doc with @mclow's feedback
Eric Fiselier [Fri, 16 Sep 2016 02:51:26 +0000 (02:51 +0000)]
Update _LIBCPP_EXCEPTION_ABI doc with @mclow's feedback

llvm-svn: 281695

7 years agoAdd a test for r280191
David Majnemer [Fri, 16 Sep 2016 02:43:36 +0000 (02:43 +0000)]
Add a test for r280191

llvm-svn: 281694

7 years agoAlter the iOS/tvOS ARM64 C++ ABI to ignore the upper half of the
John McCall [Fri, 16 Sep 2016 02:40:45 +0000 (02:40 +0000)]
Alter the iOS/tvOS ARM64 C++ ABI to ignore the upper half of the
virtual table offset in a member function pointer.

We are reserving this space for future ABI use relating to alternative
v-table configurations.  In the meantime, continue to zero-initialize
this space when actually emitting a member pointer literal.

This will successfully interoperate with existing compilers.
Future versions of the compiler may place additional data in
this location, and at that point, code emitted by compilers
prior to this patch will fail if exposed to such a member pointer.
This is therefore a somewhat hard ABI break.  However, because
it is limited to an uncommon case of an uncommon language feature,
and especially because interoperation with the standard library
does not depend on member pointers, we believe that with a
sufficiently advance compiler change the impact of this break
will be minimal in practice.

llvm-svn: 281693

7 years agoMove _LIBCPP_INLINE_VISIBILITY to first declaration in <propagate_const>
Eric Fiselier [Fri, 16 Sep 2016 02:16:23 +0000 (02:16 +0000)]
Move _LIBCPP_INLINE_VISIBILITY to first declaration in <propagate_const>

llvm-svn: 281692

7 years agoMove _LIBCPP_INLINE_VISIBILITY to first declaration in sstream.
Eric Fiselier [Fri, 16 Sep 2016 02:09:26 +0000 (02:09 +0000)]
Move _LIBCPP_INLINE_VISIBILITY to first declaration in sstream.

llvm-svn: 281691

7 years agoFirst tests for serializing breakpoints.
Jim Ingham [Fri, 16 Sep 2016 01:41:27 +0000 (01:41 +0000)]
First tests for serializing breakpoints.

Plus a few bug fixes I found along the way.

llvm-svn: 281690

7 years agoRevert "[asan] Avoid lifetime analysis for allocas with can be in ambiguous state"
Vitaly Buka [Fri, 16 Sep 2016 01:38:46 +0000 (01:38 +0000)]
Revert "[asan] Avoid lifetime analysis for allocas with can be in ambiguous state"

This approach is not good enough. Working on the new solution.

This reverts commit r280907.

llvm-svn: 281689

7 years agoRevert "[asan] Add flag to allow lifetime analysis of problematic allocas"
Vitaly Buka [Fri, 16 Sep 2016 01:38:43 +0000 (01:38 +0000)]
Revert "[asan] Add flag to allow lifetime analysis of problematic allocas"

This approach is not good enough. Working on the new solution.

This reverts commit r281126.

llvm-svn: 281688

7 years ago[asan] Remove the test as the fix is going to be removed
Vitaly Buka [Fri, 16 Sep 2016 01:37:17 +0000 (01:37 +0000)]
[asan] Remove the test as the fix is going to be removed

Summary:
I need to redu solution, existing is not good enough.

PR28267

Reviewers: eugenis

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 281687

7 years agoDo not warn about format strings that are indexed string literals.
Stephen Hines [Fri, 16 Sep 2016 01:07:04 +0000 (01:07 +0000)]
Do not warn about format strings that are indexed string literals.

Summary:
The warning for a format string not being a string literal and therefore
being potentially insecure is overly strict for indices into string
literals. This fix checks if the index into the string literal is
precomputable. If that's the case it will check if the suffix of that
string literal is a valid format string string literal. It will still
issue the aforementioned warning for out of range indices into the
string literal.

Patch by Meike Baumgärtner (meikeb)

Reviewers: rsmith

Subscribers: srhines, cfe-commits

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

llvm-svn: 281686

7 years agoFix autoupgrade logic for Objective-C class properties module flag
Mehdi Amini [Fri, 16 Sep 2016 00:38:18 +0000 (00:38 +0000)]
Fix autoupgrade logic for Objective-C class properties module flag

Previous we were issuing an error when linking a module containing
the new Objective-C metadata structure for class properties with an
"old" one.
Now instead we downgrade the module flag so that the Objective-C
runtime does not expect the new metadata structure.

This is consistent with what ld64 is doing on binary files.

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

llvm-svn: 281685

7 years agoUse _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY in valarray to support attribute((inter...
Eric Fiselier [Fri, 16 Sep 2016 00:13:55 +0000 (00:13 +0000)]
Use _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY in valarray to support attribute((internal_linkage)).

The externally instantiated member functions must be declared using
_LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY, not _LIBCPP_INLINE_VISIBILITY, in
order to be properly exported when using __attribute__((internal_linkage)).

Otherwise the explicit instantiations will obviously have internal linkage and
will not be exported from the dylib.

llvm-svn: 281684

7 years agoMove inline attributes in filesystem to first declaration
Eric Fiselier [Fri, 16 Sep 2016 00:07:16 +0000 (00:07 +0000)]
Move inline attributes in filesystem to first declaration

llvm-svn: 281683

7 years ago[CodeGen][ObjC] Block captures should inherit the type of the captured
Akira Hatanaka [Fri, 16 Sep 2016 00:02:06 +0000 (00:02 +0000)]
[CodeGen][ObjC] Block captures should inherit the type of the captured
field in the enclosing lambda or block.

This patch fixes a bug in code-gen where it uses the type of the
declared variable rather than the type of the capture of the enclosing
lambda or block for the block capture. For example, in the following
function, code-gen currently uses i32* for the block capture "a" because
"a" is passed to foo1 as a reference, but it should use i32 since the
enclosing lambda captures "a" by value.

void foo1(int &a) {
  auto lambda = [a]{
    auto block1 = ^{
      i = a;
    };
    block1();
  };
  lambda();
}

rdar://problem/18586386

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

llvm-svn: 281682

7 years ago[libc++] Add _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY to support GCC ABI compatibility
Eric Fiselier [Fri, 16 Sep 2016 00:00:48 +0000 (00:00 +0000)]
[libc++] Add _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY to support GCC ABI compatibility

Summary:
GCC and Clang handle visibility attributes on the out-of-line definition of externally instantiated templates differently. For example in the reproducer below Clang will emit both 'foo' and 'bar' with default visibility while GCC only emits a non-hidden 'foo'.

```
// RUN: g++ -std=c++11 -shared -O3 test.cpp && sym_extract.py a.out
// RUN: clang++ -std=c++11 -shared -O3 test.cpp && sym_extract.py a.out
#define INLINE_VISIBILITY __attribute__((visibility("hidden"), always_inline))

template <class T>
struct Foo {
  void foo();
  void bar();
};

template <class T>
void Foo<T>::foo() {}

template <class T>
inline INLINE_VISIBILITY
void Foo<T>::bar() {}

template struct Foo<int>;
```

This difference creates ABI incompatibilities between Clang and GCC built dylibs. Specifically GCC built dylibs lack definitions for various member functions of `basic_string`, `basic_istream`, `basic_ostream`, `basic_iostream`, and `basic_streambuf` (All of these types are externally instantiated).

Surprisingly these missing symbols don't cause many problems because the functions are marked `always_inline`  therefore the dylib definition is rarely needed. However when an out-of-line definition is required then GCC built dylibs will fail to link. For example [GCC built dylibs cannot build Clang](http://stackoverflow.com/questions/39454262/clang-build-errors).

This patch works around this issue by adding `_LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY` which is used to mark externally instantiated member functions as always inline. When building the library `_LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY` sets the symbol's visibility to "default" instead of "hidden", otherwise it acts exactly the same as `_LIBCPP_INLINE_VISIBILITY`.

After applying this patch GCC dylibs now contain:
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7sungetcEv`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5gbumpEi`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7sungetcEv`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9sputbackcEc`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getERNS_15basic_streambufIwS2_EE`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPFRNS_9basic_iosIwS2_EES6_E`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4setpEPcS4_`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEEC1EPNS_15basic_streambufIwS2_EE`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6snextcEv`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE4swapERS3_`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE4swapERS3_`
  * `_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPFRNS_8ios_baseES5_E`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9pubsetbufEPcl`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekoffExNS_8ios_base7seekdirEj`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPFRNS_9basic_iosIwS2_EES6_E`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5pbumpEi`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpENS_4fposI11__mbstate_tEE`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE7getlineEPcl`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sgetcEv`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getERNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRNS_8ios_baseES5_E`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8in_availEv`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPFRNS_8ios_baseES5_E`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6sbumpcEv`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRNS_9basic_iosIcS2_EES6_E`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getERc`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6snextcEv`
  * `_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEmw`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE7getlineEPwl`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5tellpEv`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getERw`
  * `_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEmc`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7pubsyncEv`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE3getEPcl`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEEC2EPNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPFRNS_9basic_iosIcS2_EES6_E`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7pubsyncEv`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputcEc`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpExNS_8ios_base7seekdirE`
  * `_ZNKSt3__115basic_streambufIcNS_11char_traitsIcEEE6getlocEv`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5gbumpEi`
  * `_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEE4swapERS3_`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5seekpENS_4fposI11__mbstate_tEE`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5tellpEv`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPFRS3_S4_E`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEE3getEPwl`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEEC2EPNS_15basic_streambufIwS2_EE`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPFRS3_S4_E`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4setgEPcS4_S4_`
  * `_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwmm`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4setgEPwS4_S4_`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEEC1EPNS_15basic_streambufIwS2_EE`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8pubimbueERKNS_6localeE`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE4swapERS3_`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEEC2EPNS_15basic_streambufIwS2_EE`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekposENS_4fposI11__mbstate_tEEj`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5pbumpEi`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sgetcEv`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE4swapERS3_`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE10pubseekposENS_4fposI11__mbstate_tEEj`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKcl`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5seekpExNS_8ios_base7seekdirE`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sgetnEPwl`
  * `_ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEElsEPFRNS_8ios_baseES5_E`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4setpEPwS4_`
  * `_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sgetnEPcl`
  * `_ZNKSt3__115basic_streambufIwNS_11char_traitsIwEEE6getlocEv`
  * `_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEEC2EPNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8pubimbueERKNS_6localeE`
  * `_ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEEC1EPNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8in_availEv`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEEC1EPNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcmm`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6sbumpcEv`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE10pubseekoffExNS_8ios_base7seekdirEj`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEEC2EPNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__113basic_istreamIwNS_11char_traitsIwEEErsEPFRS3_S4_E`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9sputbackcEw`
  * `_ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwm`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sputnEPKwl`
  * `_ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsEPFRS3_S4_E`
  * `_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEEC1EPNS_15basic_streambufIcS2_EE`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pubsetbufEPwl`
  * `_ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5sputcEw`

This patch has no effect on Clang based builds.

Reviewers: mclow.lists, eugenis, danalbert, jroelofs, EricWF

Subscribers: beanz, cfe-commits, mgorny

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

llvm-svn: 281681

7 years ago[CUDA] Don't try to run sanitizers on NVPTX.
Justin Lebar [Thu, 15 Sep 2016 23:44:13 +0000 (23:44 +0000)]
[CUDA] Don't try to run sanitizers on NVPTX.

Summary:
Sanitizers aren't supported on NVPTX -- don't try to run them.

This lets you e.g. pass -fsanitize=address and get asan on your host
code.

Reviewers: kcc

Subscribers: cfe-commits, tra, jhen

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

llvm-svn: 281680

7 years ago[asan] fix window build
Kostya Serebryany [Thu, 15 Sep 2016 23:17:02 +0000 (23:17 +0000)]
[asan] fix window build

llvm-svn: 281679

7 years agoCheck /pdb output using llvm-pdbdump.
Rui Ueyama [Thu, 15 Sep 2016 23:14:40 +0000 (23:14 +0000)]
Check /pdb output using llvm-pdbdump.

test/COFF/rsds.test checks only RSDS directory in a DLL and
didn't check the validity of the PDF file produced.
(Technically the produced PDB is not valid because it is really
a stub, but this test is still good to have.)

llvm-svn: 281678

7 years ago[asan] provide dummy implementations for __sanitizer_cov_trace_pc_*
Kostya Serebryany [Thu, 15 Sep 2016 23:02:20 +0000 (23:02 +0000)]
[asan] provide dummy implementations for __sanitizer_cov_trace_pc_*

llvm-svn: 281677

7 years agobuild_llvm_package.bat: Update to VS2015 and include LLDB
Hans Wennborg [Thu, 15 Sep 2016 23:01:03 +0000 (23:01 +0000)]
build_llvm_package.bat: Update to VS2015 and include LLDB

llvm-svn: 281676

7 years ago[asan] Reenable 64-bit allocator on android/aarch64.
Evgeniy Stepanov [Thu, 15 Sep 2016 22:34:53 +0000 (22:34 +0000)]
[asan] Reenable 64-bit allocator on android/aarch64.

This is a re-commit of r281371, with updated tests.

llvm-svn: 281674

7 years ago[libc++] Fix and document visibility attributes for Clang, GCC and Windows.
Eric Fiselier [Thu, 15 Sep 2016 22:27:07 +0000 (22:27 +0000)]
[libc++] Fix and document visibility attributes for Clang, GCC and Windows.

Summary:
This patch fixes a number of problems with the visibility macros across GCC (on Unix) and Windows (DLL import/export semantics). All of the visibility macros are now documented under `DesignDocs/VisibilityMacros.rst`. Now I'll no longer forget the subtleties of each!

This patch adds two new visibility macros:

* `_LIBCPP_ENUM_VIS` for controlling the typeinfo of enum types. Only Clang supports this.
* `_LIBCPP_EXTERN_TEMPLATE_TYPE_VIS` for redefining visibility on explicit instantiation declarations. Clang and Windows require this.

After applying this patch GCC only emits one -Wattribute warning opposed to 30+.

Reviewers: mclow.lists, EricWF

Subscribers: beanz, mgorny, cfe-commits

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

llvm-svn: 281673

7 years ago[InstCombine] move folds for icmp (sh C2, Y), C1 in with other icmp+sh folds; NFCI
Sanjay Patel [Thu, 15 Sep 2016 22:26:31 +0000 (22:26 +0000)]
[InstCombine] move folds for icmp (sh C2, Y), C1 in with other icmp+sh folds; NFCI

llvm-svn: 281672

7 years agoFix old copy-n-paste errors.
Rui Ueyama [Thu, 15 Sep 2016 22:26:07 +0000 (22:26 +0000)]
Fix old copy-n-paste errors.

llvm-svn: 281671

7 years agoCreate PDB.h and move code to remove unnecessary #includes.
Rui Ueyama [Thu, 15 Sep 2016 22:24:51 +0000 (22:24 +0000)]
Create PDB.h and move code to remove unnecessary #includes.

llvm-svn: 281670

7 years ago[Sema] Allow shifting a scalar operand by a vector operand.
Akira Hatanaka [Thu, 15 Sep 2016 22:19:25 +0000 (22:19 +0000)]
[Sema] Allow shifting a scalar operand by a vector operand.

r278501 inadvertently introduced a bug in which it disallowed shifting
scalar operands by vector operands when not compiling for OpenCL. This
commit fixes it.

Patch by Vladimir Yakovlev.

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

llvm-svn: 281669

7 years ago[sanitizer] Fixup 2: Do not introduce __sanitizer namespace globally
Anna Zaks [Thu, 15 Sep 2016 22:18:36 +0000 (22:18 +0000)]
[sanitizer] Fixup 2: Do not introduce __sanitizer namespace globally

This got committed by mistake. Should fix some bots.

llvm-svn: 281668

7 years ago[libFuzzer] make caller-callee feedback work with trace-pc-guard
Kostya Serebryany [Thu, 15 Sep 2016 22:16:15 +0000 (22:16 +0000)]
[libFuzzer] make caller-callee feedback work with trace-pc-guard

llvm-svn: 281667

7 years agoSimplify Clang's version number configuration in CMake.
David L. Jones [Thu, 15 Sep 2016 22:12:26 +0000 (22:12 +0000)]
Simplify Clang's version number configuration in CMake.

Currently, the Clang version is computed as follows:

 1. LLVM defines major, minor, and patch versions, all statically set. Today,
    these are 4, 0, and 0, respectively.
 2. The static version numbers are combined into PACKAGE_VERSION along with a
    suffix, so the result today looks like "4.0.0svn".
 3. Clang extracts CLANG_VERSION from PACKAGE_VERSION using a regexp. The regexp
    allows the patch level to omitted, and drops any non-digit trailing values.
    Today, this result looks like "4.0.0".
 4. CLANG_VERSION is then split further into CLANG_VERSION_MAJOR and
    CLANG_VERSION_MINOR. Today, these resolve to 4 and 0, respectively.
 5. If CLANG_VERSION matches a regexp with three version components, then
    CLANG_VERSION_PATCHLEVEL is extracted and the CLANG_HAS_VERSION_PATCHLEVEL
    variable is set to 1. Today, these values are 0 and 1, respectively.
 6. The CLANG_VERSION_* variables (and CLANG_HAS_VERSION_PATCHLEVEL) are
    configured into [llvm/tools/clang/]include/clang/Basic/Version.inc
    verbatim by CMake.
 7. In [llvm/tools/clang/]include/clang/Basic/Version.h, macros are defined
    conditionally, based on CLANG_HAS_VERSION_PATCHLEVEL, to compute
    CLANG_VERSION_STRING as either a two- or three-level version number. Today,
    this value is "4.0.0", because despite the patchlevel being 0, it was
    matched by regexp and is thus "HAS"ed by the preprocessor. This string is
    then used wherever Clang's "version" is needed [*].

[*] Including, notably, by compiler-rt, for computing its installation path.

This change collapses steps 2-5 by defaulting Clang to use LLVM's (non-string)
version components for the Clang version (see [*] for why not PACKAGE_VERSION),
and collapses steps 6 and 7 by simply writing CLANG_VERSION_STRING into
Version.inc. The Clang version today always uses the patchlevel form, so the
collapsed Version.inc does not have logic for a version without a patch level.

Historically speaking, this technique began with the VER file in r82085 (which
survives in the form of the regexp in #3). The major, minor, and patchlevel
versions were introduced by r106863 (which remains in #4-6). The VER file itself
was deleted in favor of the LLVM version number in r106914. On the LLVM side,
the individual LLVM_VERSION_MAJOR, LLVM_VERSION_MINOR, and PACKAGE_VERSION
weren't introduced for nearly two more years, until r150405.

llvm-svn: 281666

7 years ago[sanitizer-coverage] make trace-pc-guard and indirect-call work together
Kostya Serebryany [Thu, 15 Sep 2016 22:11:08 +0000 (22:11 +0000)]
[sanitizer-coverage] make trace-pc-guard and indirect-call work together

llvm-svn: 281665

7 years ago[codeview] Optimize the size of defranges with gaps
Reid Kleckner [Thu, 15 Sep 2016 22:05:08 +0000 (22:05 +0000)]
[codeview] Optimize the size of defranges with gaps

For small, discontiguous local variable regions, CodeView can use a
single defrange record with a gap, rather than having two defrange
records. I expect that this optimization will only have a minor impact
on debug info size.

llvm-svn: 281664

7 years ago[InstCombine] allow icmp (shr/shl) folds for vectors
Sanjay Patel [Thu, 15 Sep 2016 21:35:30 +0000 (21:35 +0000)]
[InstCombine] allow icmp (shr/shl) folds for vectors

These 2 helper functions were already using APInt internally, so just
change the API and caller to allow folds for splats. The scalar
regression tests look quite thorough, so I just added a couple of
tests to prove that vectors are handled too.

These folds should be grouped with the other cmp+shift folds though.
That can be an NFC follow-up.

llvm-svn: 281663

7 years agoAllow ArchSpec to take a StringRef.
Zachary Turner [Thu, 15 Sep 2016 21:32:57 +0000 (21:32 +0000)]
Allow ArchSpec to take a StringRef.

llvm-svn: 281662

7 years ago[cmake] Don't depend on lldb-server unless it's built.
Zachary Turner [Thu, 15 Sep 2016 21:32:51 +0000 (21:32 +0000)]
[cmake] Don't depend on lldb-server unless it's built.

llvm-svn: 281661

7 years agoError out instead of producing a corrupt PT_LOAD.
Rafael Espindola [Thu, 15 Sep 2016 21:22:11 +0000 (21:22 +0000)]
Error out instead of producing a corrupt PT_LOAD.

What bfd and gold do is give up in putting the headers in the PT_LOAD
and just start the PT_LOAD in the second page.

llvm-svn: 281660

7 years ago[sanitizer] Fixup: Do not introduce __sanitizer namespace globally
Anna Zaks [Thu, 15 Sep 2016 21:15:06 +0000 (21:15 +0000)]
[sanitizer] Fixup: Do not introduce __sanitizer namespace globally

Use the namespace in asan_win_dll_thunk.cc to fix the Windows bot.

llvm-svn: 281659

7 years ago[compiler-rt] Remove the system includes from __sanitizer namespace
Anna Zaks [Thu, 15 Sep 2016 21:02:22 +0000 (21:02 +0000)]
[compiler-rt] Remove the system includes from __sanitizer namespace

llvm-svn: 281658

7 years ago[compiler-rt] Do not introduce __sanitizer namespace globally
Anna Zaks [Thu, 15 Sep 2016 21:02:18 +0000 (21:02 +0000)]
[compiler-rt] Do not introduce __sanitizer namespace globally

The definitions in sanitizer_common may conflict with definitions from system headers because:

The runtime includes the system headers after the project headers (as per LLVM coding guidelines).
lib/sanitizer_common/sanitizer_internal_defs.h pollutes the namespace of everything defined after it, which is all/most of the sanitizer .h and .cc files and the included system headers with: using namespace __sanitizer; // NOLINT
This patch solves the problem by introducing the namespace only within the sanitizer namespaces as proposed by Dmitry.

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

llvm-svn: 281657

7 years ago[sanitizers] DLAddr Symbolizer should fail if demangle fails
Anna Zaks [Thu, 15 Sep 2016 21:02:09 +0000 (21:02 +0000)]
[sanitizers] DLAddr Symbolizer should fail if demangle fails

This can case crashes in high verbosity mode when demangling fails.
Not including a test case since this is hard to reproduce.

llvm-svn: 281656

7 years agoregenerate checks
Sanjay Patel [Thu, 15 Sep 2016 20:39:01 +0000 (20:39 +0000)]
regenerate checks

llvm-svn: 281655

7 years ago[SE] Fix config bug with CUDA tests
Jason Henline [Thu, 15 Sep 2016 20:26:28 +0000 (20:26 +0000)]
[SE] Fix config bug with CUDA tests

Summary:
It turns out CMake errors out if a processed directory contains source
files that are not used. This was causing an error with the CUDATest.cpp
file when configuring StreamExecutor with the CUDA platform disabled.

Moving CUDATest.cpp to its own directory fixes this problem.

Reviewers: jlebar, jprice

Subscribers: beanz, mgorny, jlebar, parallel_libs-commits

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

llvm-svn: 281654

7 years ago[GlobalOpt] Dead Eliminate declarations
Mehdi Amini [Thu, 15 Sep 2016 20:26:27 +0000 (20:26 +0000)]
[GlobalOpt] Dead Eliminate declarations

GlobalOpt is already dead-code-eliminating global definitions. With
this change it also takes care of declarations.
Hopefully this should make it now a strict superset of GlobalDCE.
This is important for LTO/ThinLTO as we don't want the linker to see
"undefined reference" when it processes the input files: it could
prevent proper internalization (or even load an extra file from a
static archive, changing the behavior of the program!).

llvm-svn: 281653

7 years agoFixing bot failures
Chris Bieneman [Thu, 15 Sep 2016 20:23:31 +0000 (20:23 +0000)]
Fixing bot failures

Need to only add debugserver as a test dependency on Darwin.

llvm-svn: 281652

7 years ago[LIT] First pass of LLDB LIT support
Chris Bieneman [Thu, 15 Sep 2016 20:13:55 +0000 (20:13 +0000)]
[LIT] First pass of LLDB LIT support

Summary:
This patch supplies basic infrastructure for LLDB to use LIT, and ports a few basic test cases from the LLDB test suite into LIT.

With this patch the LLDB lit system is not capable or intended to fully replace the existing LLDB test suite, but this first patch enables people to write lit tests for LLDB.

The lit substitution for %cc and %cxx default to the host compiler unless the CMake option LLDB_TEST_CLANG is On, in which case the in-tree clang will be used.

The target check-lldb-lit will run all lit tests including the lit-based executor for the unit tests. Alternatively there is a target generated for each subdirectory under the lit directory, so check-lldb-unit and check-lldb-expr will run just the tests under their respective directories.

The ported tests are not removed from the existing suite, and should not be until such a time when the lit runner is mature and in use by bots and workflows.

Reviewers: zturner, labath, jingham, tfiala

Subscribers: beanz, mgorny, lldb-commits

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

llvm-svn: 281651

7 years ago[InstCombine] Do not RAUW a constant GEP
David Majnemer [Thu, 15 Sep 2016 20:10:09 +0000 (20:10 +0000)]
[InstCombine] Do not RAUW a constant GEP

canRewriteGEPAsOffset expects to process instructions, not constants.

This fixes PR30342.

llvm-svn: 281650

7 years ago[AArch64] Support for FP FMA when -ffp-contract=fast
Evandro Menezes [Thu, 15 Sep 2016 19:55:23 +0000 (19:55 +0000)]
[AArch64] Support for FP FMA when -ffp-contract=fast

Currently, the machine combiner can proceed matching when -ffast-math is on.
It should also match when only -ffp-contract=fast is specified as was the
case before when DAGCombiner was doing the job.

Patch by: Abderrazek Zaafrani <a.zaafrani@samsung.com>.

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

llvm-svn: 281649

7 years agoclang-format VS plugin: upgrade the project files to VS2015
Hans Wennborg [Thu, 15 Sep 2016 19:44:49 +0000 (19:44 +0000)]
clang-format VS plugin: upgrade the project files to VS2015

The plugin itself runs on previous VS versions, but this enables
it to be built with VS2015.

llvm-svn: 281648

7 years agoMake sure we create all necessary PT_LOADs.
Rafael Espindola [Thu, 15 Sep 2016 19:36:01 +0000 (19:36 +0000)]
Make sure we create all necessary PT_LOADs.

We were some times stopping early when using linker scripts.

llvm-svn: 281647

7 years ago[ELF] - Linkerscript: implemented SORT_BY_INIT_PRIORITY.
George Rimar [Thu, 15 Sep 2016 19:15:12 +0000 (19:15 +0000)]
[ELF] - Linkerscript: implemented SORT_BY_INIT_PRIORITY.

This is PR30386,

SORT_BY_INIT_PRIORITY is a keyword can be used to sort sections by numerical value of the
GCC init_priority attribute encoded in the section name.

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

llvm-svn: 281646

7 years agoRevert "[ARM] Promote small global constants to constant pools"
Evgeniy Stepanov [Thu, 15 Sep 2016 19:13:32 +0000 (19:13 +0000)]
Revert "[ARM] Promote small global constants to constant pools"

This reverts r281604, which adds text relocations to ARM binaries.

llvm-svn: 281645

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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

7 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