platform/upstream/llvm.git
10 years agoUse an enum class.
Rafael Espindola [Tue, 3 Jun 2014 05:12:33 +0000 (05:12 +0000)]
Use an enum class.

Might also fix the windows build.

llvm-svn: 210077

10 years agoRemove the last unspecified_bool_type from llvm.
Rafael Espindola [Tue, 3 Jun 2014 05:05:15 +0000 (05:05 +0000)]
Remove the last unspecified_bool_type from llvm.

llvm-svn: 210076

10 years agoDon't assume an implicit IntrusiveRefCntPtr -> bool operator.
Rafael Espindola [Tue, 3 Jun 2014 05:04:52 +0000 (05:04 +0000)]
Don't assume an implicit IntrusiveRefCntPtr -> bool operator.

llvm-svn: 210075

10 years agoReference::target() doesn't and shouldn't return a nullptr.
Rui Ueyama [Tue, 3 Jun 2014 05:04:07 +0000 (05:04 +0000)]
Reference::target() doesn't and shouldn't return a nullptr.

llvm-svn: 210074

10 years agoMake this operator bool() explicit to match the standard library.
Rafael Espindola [Tue, 3 Jun 2014 04:54:15 +0000 (04:54 +0000)]
Make this operator bool() explicit to match the standard library.

llvm-svn: 210073

10 years agoMake this operator bool() explicit to match the standard library.
Rafael Espindola [Tue, 3 Jun 2014 04:42:24 +0000 (04:42 +0000)]
Make this operator bool() explicit to match the standard library.

llvm-svn: 210072

10 years agoThis lambda returns a boolean, update the return statements.
Rafael Espindola [Tue, 3 Jun 2014 04:41:30 +0000 (04:41 +0000)]
This lambda returns a boolean, update the return statements.

llvm-svn: 210071

10 years agoDon't assume an implicit error_code -> bool operator.
Rafael Espindola [Tue, 3 Jun 2014 04:40:55 +0000 (04:40 +0000)]
Don't assume an implicit error_code -> bool operator.

llvm-svn: 210070

10 years agoFix Android build after r210053
Greg Fitzgerald [Tue, 3 Jun 2014 04:29:46 +0000 (04:29 +0000)]
Fix Android build after r210053

llvm-svn: 210069

10 years agoIgnore line numbers on debug intrinsics. Add an assert to ensure that we aren't emitt...
Nick Lewycky [Tue, 3 Jun 2014 04:25:36 +0000 (04:25 +0000)]
Ignore line numbers on debug intrinsics. Add an assert to ensure that we aren't emitting line number zero, the .gcno format uses this to indicate that the next field is a filename.

llvm-svn: 210068

10 years ago[AArch64] Correctly deal with VPR stack parameter passing.
Jiangning Liu [Tue, 3 Jun 2014 03:25:09 +0000 (03:25 +0000)]
[AArch64] Correctly deal with VPR stack parameter passing.

llvm-svn: 210067

10 years agoRemove group-parent references.
Rui Ueyama [Tue, 3 Jun 2014 03:07:49 +0000 (03:07 +0000)]
Remove group-parent references.

Previously section groups are doubly linked to their children.
That is, an atom representing a group has group-child references
to its group contents, and content atoms also have group-parent
references to the group atom. That relationship was invariant;
if X has a group-child edge to Y, Y must have a group-parent
edge to X.

However we were not using group-parent references at all. The
resolver only needs group-child edges.

This patch simplifies the section group by removing the unused
reverse edge. No functionality change intended.

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

llvm-svn: 210066

10 years agoProcess::GetRandomNumber(): fix insecure RNG
Alp Toker [Tue, 3 Jun 2014 03:01:03 +0000 (03:01 +0000)]
Process::GetRandomNumber(): fix insecure RNG

This could have generated non-random output under error conditions in release
builds.

llvm-svn: 210065

10 years agoMove DR532 test where it belongs.
Nikola Smiljanic [Tue, 3 Jun 2014 02:56:59 +0000 (02:56 +0000)]
Move DR532 test where it belongs.

llvm-svn: 210064

10 years agoUpdate for llvm API change.
Rafael Espindola [Tue, 3 Jun 2014 02:42:01 +0000 (02:42 +0000)]
Update for llvm API change.

Aliases in llvm now hold an arbitrary expression.

llvm-svn: 210063

10 years agoAllow alias to point to an arbitrary ConstantExpr.
Rafael Espindola [Tue, 3 Jun 2014 02:41:57 +0000 (02:41 +0000)]
Allow alias to point to an arbitrary ConstantExpr.

This  patch changes GlobalAlias to point to an arbitrary ConstantExpr and it is
up to MC (or the system assembler) to decide if that expression is valid or not.

This reduces our ability to diagnose invalid uses and how early we can spot
them, but it also lets us do things like

@test5 = alias inttoptr(i32 sub (i32 ptrtoint (i32* @test2 to i32),
                                 i32 ptrtoint (i32* @bar to i32)) to i32*)

An important implication of this patch is that the notion of aliased global
doesn't exist any more. The alias has to encode the information needed to
access it in its metadata (linkage, visibility, type, etc).

Another consequence to notice is that getSection has to return a "const char *".
It could return a NullTerminatedStringRef if there was such a thing, but when
that was proposed the decision was to just uses "const char*" for that.

llvm-svn: 210062

10 years ago[libc++] Don't return uninitialized data from random_device::operator()
David Majnemer [Tue, 3 Jun 2014 02:40:39 +0000 (02:40 +0000)]
[libc++] Don't return uninitialized data from random_device::operator()

Make sure we appropriately retry calls to read if the return result is
less than what we asked for.

Additionally, check and handle IO errors: EINTR results in the read
operation getting restarted; other errors turn into exceptions.

llvm-svn: 210061

10 years ago[libc++] random_device fails if open returns zero
David Majnemer [Tue, 3 Jun 2014 02:21:37 +0000 (02:21 +0000)]
[libc++] random_device fails if open returns zero

random_device::random_device(const string&) wrongly assumes that open
can only validly return a file descriptor greater than zero.

This results in random_device believing that it didn't successfully open
the device causing it to throw in it's constructor, this ends up leaking
a file descriptor.

The fix is simple, don't error on file descriptors which are zero.

llvm-svn: 210060

10 years agoFix -emit-codegen-only to not generate binaries
Alp Toker [Tue, 3 Jun 2014 02:14:20 +0000 (02:14 +0000)]
Fix -emit-codegen-only to not generate binaries

llvm-svn: 210059

10 years agoEliminate redundant MangleBuffer class
Alp Toker [Tue, 3 Jun 2014 02:13:57 +0000 (02:13 +0000)]
Eliminate redundant MangleBuffer class

The only remaining user didn't actually use the non-dynamic storage facility
this class provides.

The std::string is transitional and likely to be StringRefized shortly.

llvm-svn: 210058

10 years agoMake dead-striping to handle reverse edges.
Rui Ueyama [Tue, 3 Jun 2014 01:59:02 +0000 (01:59 +0000)]
Make dead-striping to handle reverse edges.

Layout-before edges are no longer used for layout, but they are
still there for dead-stripping. If we would just remove them
from code, LLD would wrongly remove live atoms that were
referenced by layout-befores.

This patch fixes the issue. Before dead-stripping, it scans all
atoms to construct a reverse map for layout-after edges. Dead-
stripping pass uses the map to traverse the graph.

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

llvm-svn: 210057

10 years agoFirst cut at a post c++14 status page
Marshall Clow [Mon, 2 Jun 2014 23:37:13 +0000 (23:37 +0000)]
First cut at a post c++14 status page

llvm-svn: 210056

10 years agoItanium ABI: Update getAddrOfVTable to set the DLL storage class for vtables
Hans Wennborg [Mon, 2 Jun 2014 23:13:03 +0000 (23:13 +0000)]
Itanium ABI: Update getAddrOfVTable to set the DLL storage class for vtables

This corresponds to the same change for the MS ABI in r209908.

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

llvm-svn: 210054

10 years agoCleanup Android build and provide better diagnostics
Greg Fitzgerald [Mon, 2 Jun 2014 23:11:24 +0000 (23:11 +0000)]
Cleanup Android build and provide better diagnostics

No longer need to set ANDROID if COMPILER_RT_TEST_TARGET_TRIPLE is
arm-linux-androideabi.

No need to set ANDROID_COMMON_FLAGS.  These flags are already in
CMAKE_CXX_FLAGS which are used in try_compile().

llvm-svn: 210053

10 years agoAdd back commit r210029.
Rafael Espindola [Mon, 2 Jun 2014 22:01:04 +0000 (22:01 +0000)]
Add back commit r210029.

The code was actually correct. Sorry for the confusion. I have expanded the
comment saying why the analysis is valid to avoid me misunderstaning it
again in the future.

llvm-svn: 210052

10 years agoSmall cleanups for the new enum fixes:
Greg Clayton [Mon, 2 Jun 2014 21:58:30 +0000 (21:58 +0000)]
Small cleanups for the new enum fixes:
- Fix Xcode project to have source files for SBTypeEnumMember.h/SBTypeEnumMember.cpp in the right place
- Rename a member variable to inluce "_sp" suffix since it is a shared pointer
- Cleanup initialization code for TypeEnumMemberImpl to not warn about out of order initialization

llvm-svn: 210051

10 years agoallow optional signext attribute
Will Schmidt [Mon, 2 Jun 2014 21:47:14 +0000 (21:47 +0000)]
allow optional signext attribute

Allow the tests to succeed with tne signext (or other) attribute is present.  The attributes
show up for Power, but not for x86*, so need to be appropriately wildcarded.

llvm-svn: 210050

10 years agoConvert test to FileCheck.
Rafael Espindola [Mon, 2 Jun 2014 21:23:54 +0000 (21:23 +0000)]
Convert test to FileCheck.

llvm-svn: 210049

10 years agoRevert "Add the nsw flag when we detect that an add will not signed overflow."
Rafael Espindola [Mon, 2 Jun 2014 21:12:19 +0000 (21:12 +0000)]
Revert "Add the nsw flag when we detect that an add will not signed overflow."

This reverts commit r210029.

It was not correctly handling cases where LHS and RHS had multiple but different
sign bits.

llvm-svn: 210048

10 years agoDelete apparently unused method
Alexey Samsonov [Mon, 2 Jun 2014 21:05:54 +0000 (21:05 +0000)]
Delete apparently unused method

llvm-svn: 210047

10 years agoAdd support for inspecting enum members.
Todd Fiala [Mon, 2 Jun 2014 20:55:29 +0000 (20:55 +0000)]
Add support for inspecting enum members.

Change by Russell Harmon.

Xcode project updates (and all errors therein)
by Todd Fiala.

llvm-svn: 210046

10 years agoInitLibcallNames can take a Triple instead of a TargetMachine.
Eric Christopher [Mon, 2 Jun 2014 20:51:49 +0000 (20:51 +0000)]
InitLibcallNames can take a Triple instead of a TargetMachine.

llvm-svn: 210045

10 years agoNever filter-out compile errors in clang-tidy, display them as errors.
Alexander Kornienko [Mon, 2 Jun 2014 20:44:32 +0000 (20:44 +0000)]
Never filter-out compile errors in clang-tidy, display them as errors.

Summary:
No filters should affect the display of errors. Fixed a few tests,
which had compile errors.

We need to think what we should do with mapped errors (-Werror).

Reviewers: klimek

Reviewed By: klimek

Subscribers: cfe-commits

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

llvm-svn: 210044

10 years agoExit with error when no checks enabled.
Alexander Kornienko [Mon, 2 Jun 2014 20:32:06 +0000 (20:32 +0000)]
Exit with error when no checks enabled.

Summary:
This seems like a more appropriate reaction to the user specifying a
single check with a wrong name, for example.

Reviewers: klimek

Reviewed By: klimek

Subscribers: cfe-commits

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

llvm-svn: 210043

10 years ago[CodeGen] Don't use SizeTy for EmitNeonSplat.
Michael J. Spencer [Mon, 2 Jun 2014 19:48:59 +0000 (19:48 +0000)]
[CodeGen] Don't use SizeTy for EmitNeonSplat.

llvm-svn: 210042

10 years agoRemove unused variable
Alexey Samsonov [Mon, 2 Jun 2014 19:45:14 +0000 (19:45 +0000)]
Remove unused variable

llvm-svn: 210041

10 years agoAdded support to optimize comparisons with "lshr exact" of a constant.
Rafael Espindola [Mon, 2 Jun 2014 19:19:04 +0000 (19:19 +0000)]
Added support to optimize comparisons with "lshr exact" of a constant.

Patch by Rahul Jain.

llvm-svn: 210040

10 years agoFix comment vs function name mismatch
Hans Wennborg [Mon, 2 Jun 2014 18:50:54 +0000 (18:50 +0000)]
Fix comment vs function name mismatch

llvm-svn: 210039

10 years agoRemove sanitizer blacklist from ASan/TSan/MSan function passes.
Alexey Samsonov [Mon, 2 Jun 2014 18:08:27 +0000 (18:08 +0000)]
Remove sanitizer blacklist from ASan/TSan/MSan function passes.

Instrumentation passes now use attributes
address_safety/thread_safety/memory_safety which are added by Clang frontend.
Clang parses the blacklist file and adds the attributes accordingly.

Currently blacklist is still used in ASan module pass to disable instrumentation
for certain global variables. We should fix this as well by collecting the
set of globals we're going to instrument in Clang and passing it to ASan
in metadata (as we already do for dynamically-initialized globals and init-order
checking).

This change also removes -tsan-blacklist and -msan-blacklist LLVM commandline
flags in favor of -fsanitize-blacklist= Clang flag.

llvm-svn: 210038

10 years agoRemove sanitizer blacklist from ASan/TSan/MSan function passes.
Alexey Samsonov [Mon, 2 Jun 2014 18:08:08 +0000 (18:08 +0000)]
Remove sanitizer blacklist from ASan/TSan/MSan function passes.

Instrumentation passes now use attributes
address_safety/thread_safety/memory_safety which are added by Clang frontend.
Clang parses the blacklist file and adds the attributes accordingly.

Currently blacklist is still used in ASan module pass to disable instrumentation
for certain global variables. We should fix this as well by collecting the
set of globals we're going to instrument in Clang and passing it to ASan
in metadata (as we already do for dynamically-initialized globals and init-order
checking).

This change also removes -tsan-blacklist and -msan-blacklist LLVM commandline
flags in favor of -fsanitize-blacklist= Clang flag.

llvm-svn: 210037

10 years agoAdd executable extension to debugger name, run dotest via binary.
Todd Fiala [Mon, 2 Jun 2014 17:49:35 +0000 (17:49 +0000)]
Add executable extension to debugger name, run dotest via binary.

See http://reviews.llvm.org/D3904 for details.

Change by Scott Graham.

llvm-svn: 210036

10 years agoFix most of the remaining Windows build warnings.
Todd Fiala [Mon, 2 Jun 2014 17:30:22 +0000 (17:30 +0000)]
Fix most of the remaining Windows build warnings.

See http://reviews.llvm.org/D3944 for more details.

Change by Zachary Turner.

llvm-svn: 210035

10 years agoOmit else branch after return.
Eric Christopher [Mon, 2 Jun 2014 17:29:07 +0000 (17:29 +0000)]
Omit else branch after return.

llvm-svn: 210034

10 years agoCGDebugInfo: Simplify/invert createLexicalBlock parameter construction.
David Blaikie [Mon, 2 Jun 2014 16:32:05 +0000 (16:32 +0000)]
CGDebugInfo: Simplify/invert createLexicalBlock parameter construction.

llvm-svn: 210033

10 years ago[X86] Fix checked arithmetic for i8 on X86.
Andrea Di Biagio [Mon, 2 Jun 2014 16:00:27 +0000 (16:00 +0000)]
[X86] Fix checked arithmetic for i8 on X86.

When lowering a ISD::BRCOND into a test+branch, make sure that we
always use the correct condition code to emit the test operation.

This fixes PR19858: "i8 checked mul is wrong on x86".

Patch by Keno Fisher!

llvm-svn: 210032

10 years agoclang-tidy: Extend the use-override check to understand 'final'.
Daniel Jasper [Mon, 2 Jun 2014 15:22:22 +0000 (15:22 +0000)]
clang-tidy: Extend the use-override check to understand 'final'.

llvm-svn: 210031

10 years ago[ASan Win] Manually call __asan_init early in the DLL initialization process to avoid...
Timur Iskhodzhanov [Mon, 2 Jun 2014 14:40:07 +0000 (14:40 +0000)]
[ASan Win] Manually call __asan_init early in the DLL initialization process to avoid a null function call in cout/cerr constructors

llvm-svn: 210030

10 years agoAdd the nsw flag when we detect that an add will not signed overflow.
Rafael Espindola [Mon, 2 Jun 2014 14:32:58 +0000 (14:32 +0000)]
Add the nsw flag when we detect that an add will not signed overflow.

We already had a function for checking this, we were just using it only in
specialized cases.

llvm-svn: 210029

10 years ago[Sanitizer/interception Win] Break into the debugger on unknown instructions
Timur Iskhodzhanov [Mon, 2 Jun 2014 13:40:41 +0000 (13:40 +0000)]
[Sanitizer/interception Win] Break into the debugger on unknown instructions

llvm-svn: 210028

10 years ago[ASan Win] Fix memset interception in DLLs
Timur Iskhodzhanov [Mon, 2 Jun 2014 13:23:42 +0000 (13:23 +0000)]
[ASan Win] Fix memset interception in DLLs

llvm-svn: 210027

10 years agoThe exception-declaration for a function-try-block cannot redeclare a
Aaron Ballman [Mon, 2 Jun 2014 13:10:07 +0000 (13:10 +0000)]
The exception-declaration for a function-try-block cannot redeclare a
function parameter. One of our existing test cases was XFAILed because
of this. This fixes the issue and un-XFAILs the test.

llvm-svn: 210026

10 years agoCMake: remove duplicated source file from list
Alp Toker [Mon, 2 Jun 2014 13:09:24 +0000 (13:09 +0000)]
CMake: remove duplicated source file from list

Patch by Jack Howarth!

llvm-svn: 210025

10 years ago[asan] Default to memory-mapped coverage on Android.
Evgeniy Stepanov [Mon, 2 Jun 2014 13:06:33 +0000 (13:06 +0000)]
[asan] Default to memory-mapped coverage on Android.

The alternative (writing coverage at process exit) is nearly useless there.

llvm-svn: 210024

10 years ago[msan] Remove an out-of-date comment.
Evgeniy Stepanov [Mon, 2 Jun 2014 12:58:08 +0000 (12:58 +0000)]
[msan] Remove an out-of-date comment.

MSan is no longer an "early prototype".

llvm-svn: 210023

10 years agoRemove path_tclsh.m4.
Rafael Espindola [Mon, 2 Jun 2014 12:54:32 +0000 (12:54 +0000)]
Remove path_tclsh.m4.

Looks like it was only used by dejagnu and is now dead.

llvm-svn: 210022

10 years ago[AArch64] Add some more regression tests for store pre-index update folding in the...
Tilmann Scheller [Mon, 2 Jun 2014 12:33:33 +0000 (12:33 +0000)]
[AArch64] Add some more regression tests for store pre-index update folding in the load/store optimizer.

Add tests for the following transform:

 add x8, x8, #16
  ...
 str X, [x8]
  ->
 str X, [x8, #16]!

with X being either w0, x0, s0, d0 or q0.

llvm-svn: 210021

10 years ago[msan] Handle x86 vector pack intrinsics.
Evgeniy Stepanov [Mon, 2 Jun 2014 12:31:44 +0000 (12:31 +0000)]
[msan] Handle x86 vector pack intrinsics.

llvm-svn: 210020

10 years agoRemove unused code in a libc++ test.
Nico Weber [Mon, 2 Jun 2014 12:00:08 +0000 (12:00 +0000)]
Remove unused code in a libc++ test.

Other tests in this directory use this type, so it's probably copypasta from
there.

(test_buf only forwards to the superclass in all tests where it's used though,
so I wonder if it can be replaced with just using filebuf / wfilebuf
everywhere?)

llvm-svn: 210019

10 years ago[AArch64] Add some more regression tests for load pre-index update folding in the...
Tilmann Scheller [Mon, 2 Jun 2014 11:57:09 +0000 (11:57 +0000)]
[AArch64] Add some more regression tests for load pre-index update folding in the load/store optimizer.

Add tests for the following transform:

 add x8, x8, #16
  ...
 ldr X, [x8]
  ->
 ldr X, [x8, #16]!

with X being either w0, x0, s0, d0 or q0.

llvm-svn: 210018

10 years agoclang-format: Fix special case of binary operator detection.
Daniel Jasper [Mon, 2 Jun 2014 11:54:20 +0000 (11:54 +0000)]
clang-format: Fix special case of binary operator detection.

There is a pattern where evaluation order is used as control flow.
This patch special-cases a commonly occuring version of this pattern.

Before:
  Aaaaa *aaa = nullptr;
  // ...
  aaa &&aaa->f();

After:
  Aaaaa *aaa = nullptr;
  // ...
  aaa && aaa->f();

llvm-svn: 210017

10 years agoRemove superfluous semicolon confusing clang-format.
Daniel Jasper [Mon, 2 Jun 2014 11:29:58 +0000 (11:29 +0000)]
Remove superfluous semicolon confusing clang-format.

llvm-svn: 210016

10 years agoRun clang-format.
Rui Ueyama [Mon, 2 Jun 2014 11:13:11 +0000 (11:13 +0000)]
Run clang-format.

llvm-svn: 210015

10 years agos/vector/std::vector/
Rui Ueyama [Mon, 2 Jun 2014 10:58:47 +0000 (10:58 +0000)]
s/vector/std::vector/

llvm-svn: 210014

10 years agoclang-format: No space between ")" and braced init list.
Daniel Jasper [Mon, 2 Jun 2014 10:57:55 +0000 (10:57 +0000)]
clang-format: No space between ")" and braced init list.

Before:
  auto j = decltype(i) {};

After:
  auto j = decltype(i){};

This fixes llvm.org/PR19892.

llvm-svn: 210013

10 years ago[asan] Improve vDSO check in AsanCheckDynamicRTPrereqs; patch by Yuri Gribov
Kostya Serebryany [Mon, 2 Jun 2014 10:39:40 +0000 (10:39 +0000)]
[asan] Improve vDSO check in AsanCheckDynamicRTPrereqs; patch by  Yuri Gribov

llvm-svn: 210012

10 years agoclang-format: Fix Allman brace breaking of enums.
Daniel Jasper [Mon, 2 Jun 2014 10:17:32 +0000 (10:17 +0000)]
clang-format: Fix Allman brace breaking of enums.

Before:
  enum Side
  { LEFT,
    RIGHT };

After:
  enum Side
  {
    LEFT,
    RIGHT
  };

This fixes llvm.org/PR19911.

llvm-svn: 210011

10 years agoclang-format: Fix trailing const (etc.) with Allman brace style.
Daniel Jasper [Mon, 2 Jun 2014 09:52:08 +0000 (09:52 +0000)]
clang-format: Fix trailing const (etc.) with Allman brace style.

Before:
  void someLongFunction(int someLongParameter)
      const
  {
  }

After:
  void someLongFunction(
      int someLongParameter) const
  {
  }

This fixes llvm.org/PR19912.

llvm-svn: 210010

10 years ago[sancov] Remove debug leftovers and update usage text.
Evgeniy Stepanov [Mon, 2 Jun 2014 09:04:45 +0000 (09:04 +0000)]
[sancov] Remove debug leftovers and update usage text.

llvm-svn: 210009

10 years agoSimplify markLive().
Rui Ueyama [Mon, 2 Jun 2014 08:06:57 +0000 (08:06 +0000)]
Simplify markLive().

Reference::target() never returns a nullptr, so NULL check
is not needed and is more harmful than doing nothing.
No functionality change.

llvm-svn: 210008

10 years agoAdded inst combine tarnsform for (1 << X) & C pattrens where C is (some PowerOf2...
Dinesh Dwivedi [Mon, 2 Jun 2014 07:57:24 +0000 (07:57 +0000)]
Added inst combine tarnsform for (1 << X) & C pattrens where C is (some PowerOf2 - 1)

This patch can handles following cases from http://nondot.org/sabre/LLVMNotes/InstCombine.txt
  "((1 << X) & 7) == 0" ==> "X > 2"
  "((1 << X) & 7) != 0" ==> "X < 3".

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

llvm-svn: 210007

10 years agoAdded inst combine transforms for single bit tests from Chris's note
Dinesh Dwivedi [Mon, 2 Jun 2014 07:24:36 +0000 (07:24 +0000)]
Added inst combine transforms for single bit tests from Chris's note

if ((x & C) == 0) x |= C becomes x |= C
if ((x & C) != 0) x ^= C becomes x &= ~C
if ((x & C) == 0) x ^= C becomes x |= C
if ((x & C) != 0) x &= ~C becomes x &= ~C
if ((x & C) == 0) x &= ~C becomes nothing

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

llvm-svn: 210006

10 years agoSilence -Wreturn-type warning
Alp Toker [Mon, 2 Jun 2014 04:34:10 +0000 (04:34 +0000)]
Silence -Wreturn-type warning

llvm-svn: 210005

10 years ago[Mips] Reduce number of input files used my Mips tests.
Simon Atanasyan [Mon, 2 Jun 2014 04:20:01 +0000 (04:20 +0000)]
[Mips] Reduce number of input files used my Mips tests.

No functional changes.

llvm-svn: 210004

10 years agoGraphWriter: tweak the program fallback order
Alp Toker [Mon, 2 Jun 2014 04:14:23 +0000 (04:14 +0000)]
GraphWriter: tweak the program fallback order

Amend r210001 to use the classic fallback order behaviour if the requested
graphing program isn't found.

llvm-svn: 210003

10 years agoPreparation for <string_view>. More helper functions that can be shared between ...
Marshall Clow [Mon, 2 Jun 2014 02:22:49 +0000 (02:22 +0000)]
Preparation for <string_view>. More helper functions that can be shared between <string> and <string_view>. No functionality change

llvm-svn: 210002

10 years agoGraphWriter: detect graph viewer programs at runtime
Alp Toker [Mon, 2 Jun 2014 01:40:04 +0000 (01:40 +0000)]
GraphWriter: detect graph viewer programs at runtime

Replace the crufty build-time configure checks for program paths with
equivalent runtime logic.

This lets users install graphing tools as needed without having to reconfigure
and rebuild LLVM, while eliminating a long chain of inappropriate compile
dependencies that included GUI programs and the windowing system.

Additional features:

 * Support the OS X 'open' command to view graphs generated by any of the
   Graphviz utilities. This is an alternative to the Graphviz OS X UI which is
   no longer available on Mountain Lion.

 * Produce informative log output upon failure to indicate which programs can
   be installed to view graphs.

Ping me if this doesn't work for your particular environment.

llvm-svn: 210001

10 years agoInstruction::isIdenticalToWhenDefined(): Check getNumOperands() in advance of std...
NAKAMURA Takumi [Mon, 2 Jun 2014 01:35:34 +0000 (01:35 +0000)]
Instruction::isIdenticalToWhenDefined(): Check getNumOperands() in advance of std::equal(op) to appease MSVC Debug build.

MSVC Debug build is confused with (possibly invalid) op_begin(), if op_begin() == op_end().

llvm-svn: 210000

10 years agoSupport: add 6-parameter format
Saleem Abdulrasool [Mon, 2 Jun 2014 01:17:54 +0000 (01:17 +0000)]
Support: add 6-parameter format

Since we cannot yet use variadic templates, add a specialisation for
6-parameters to format.  This is motivated by a need for the additional
parameter for formatting information for an unwind decoder for Windows on ARM.

llvm-svn: 209999

10 years agoSupport: add Windows ARM EH data structures
Saleem Abdulrasool [Mon, 2 Jun 2014 01:17:49 +0000 (01:17 +0000)]
Support: add Windows ARM EH data structures

Introduce the support structures necessary to deal with the Windows ARM EH data.
These definitions are extremely aggressive about assertions to aid future use
for generation of the entries and subsequent decoding.

The names for the various fields are meant to reflect the names used by the
Visual Studio toolchain to aid communication.

Due to the complexity in reading a few of the values, there are a couple of
additional utility functions to decode the information.

In general, there are two ways to encode the unwinding information:
- packed, which places the data inline into the
  _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY structure.
- unpacked, which places the data into auxiliary structures placed into the
  .xdata section.

The set of structures allow reading of data in either encoding, with the minor
caveat that epilogue scopes need to be decoded manually by constructing the
structure from the data returned by the RuntimeFunction structure.

These definitions are meant for read-only access at the current point as the
first use of them will be to decode the exception information.

llvm-svn: 209998

10 years agoRevert "Fix the undefined-but-used odr-use marker (DR48)"
Alp Toker [Sun, 1 Jun 2014 19:13:44 +0000 (19:13 +0000)]
Revert "Fix the undefined-but-used odr-use marker (DR48)"

Wrong patch got committed (this one isn't ready for prime time).

This reverts commit r209996.

llvm-svn: 209997

10 years agoFix the undefined-but-used odr-use marker (DR48)
Alp Toker [Sun, 1 Jun 2014 18:49:32 +0000 (18:49 +0000)]
Fix the undefined-but-used odr-use marker (DR48)

We should treat tentative definitions as undefined for the purpose of
ODR-use linkage checking.

This broke somewhere around r149731 when tests were disabled.

Note that test coverage for these diagnostics is generally lacking due to a
separate issue (PR19910: Don't suppress unused/undefined warnings when there
are errors).

llvm-svn: 209996

10 years agoFix typos
Alp Toker [Sun, 1 Jun 2014 18:28:36 +0000 (18:28 +0000)]
Fix typos

llvm-svn: 209995

10 years agoAdd initial CMake build system
Alp Toker [Sun, 1 Jun 2014 18:01:33 +0000 (18:01 +0000)]
Add initial CMake build system

This is not yet supported for production builds but can already produce working
binaries on OS X and Linux with clang and gcc.

The intention is to improve support to the point where it can integrate with
the LLVM runtime platform, cover all platforms, runtime/release build
configurations and run the tests.

Patch by Jack Howarth!

llvm-svn: 209994

10 years agoDon't compare an error_code with nullptr.
Rafael Espindola [Sun, 1 Jun 2014 16:16:02 +0000 (16:16 +0000)]
Don't compare an error_code with nullptr.

llvm-svn: 209993

10 years agoFix PR18498: Support explicit template arguments with variadic generic lambdas
Faisal Vali [Sun, 1 Jun 2014 16:11:54 +0000 (16:11 +0000)]
Fix PR18498: Support explicit template arguments with variadic generic lambdas

http://llvm.org/bugs/show_bug.cgi?id=18498

This code was resulting in a crash:

auto L = [](auto ... v) { };
L.operator()<int>(3);

The reason is that the partially-substituted-pack is incorrectly retained within the current-instantiation-scope during template-argument-finalization, and because lambda's are local, there parent instantiation scopes are merged, which leads to the expansion-pattern being retained in the finalized specialization.

This patch ensures that once we have finalized deduction of a parameter-pack, we remove the partially-substituted-pack so that it doesn't cause CheckParameterPacksForExpansion to incorrectly inform the caller that it needs to retain the expansion pattern.

Thanks to Richard Smith for the review!

http://reviews.llvm.org/D2135

llvm-svn: 209992

10 years agoTest fixes and improvements.
Rafael Espindola [Sun, 1 Jun 2014 13:45:09 +0000 (13:45 +0000)]
Test fixes and improvements.

Remove redundant -fno-stack-protector run with openbsd.
Add -target to the -fstack-protector tests so they pass on openbsd.

Patch by Brad Smith.

llvm-svn: 209991

10 years agoARMEB: Fix function return type f64
Christian Pirker [Sun, 1 Jun 2014 09:30:52 +0000 (09:30 +0000)]
ARMEB: Fix function return type f64

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

llvm-svn: 209990

10 years agoUpdates in IntelJITEventListener.cpp - by Arch Robison.
Elena Demikhovsky [Sun, 1 Jun 2014 08:45:11 +0000 (08:45 +0000)]
Updates in IntelJITEventListener.cpp - by Arch Robison.

This patch updates IntelJITEventListener.cpp to account for revision 206654, which removed some methods from DILineInfo.

llvm-svn: 209989

10 years agoR600: Set all float vector expands in the same place
Matt Arsenault [Sun, 1 Jun 2014 07:38:21 +0000 (07:38 +0000)]
R600: Set all float vector expands in the same place

llvm-svn: 209988

10 years ago[Mips] Implement .{ctors,dtors}.<priority> sections ordering.
Simon Atanasyan [Sun, 1 Jun 2014 06:28:42 +0000 (06:28 +0000)]
[Mips] Implement .{ctors,dtors}.<priority> sections ordering.

Arrange .ctors/.dtors sections in the following order:
  .ctors from crtbegin.o or crtbegin?.o
  .ctors from regular object files
  .ctors.* (sorted) from regular object files
  .ctors from crtend.o or crtend?.o

This order is specific for MIPS traget. For example, on X86
the .ctors.* sections are merged into the .init_array section.

llvm-svn: 209987

10 years agocompiler-rt: prefer .rodata for non MachO targets
Saleem Abdulrasool [Sun, 1 Jun 2014 04:07:07 +0000 (04:07 +0000)]
compiler-rt: prefer .rodata for non MachO targets

Place constants into .rdata if targeting ELF or COFF/PE.  This should be
functionally identical, however, the data would be placed into a different
section.  This is purely a cleanup change.

llvm-svn: 209986

10 years agocompiler-rt: whitespace and uniformity for arm
Saleem Abdulrasool [Sun, 1 Jun 2014 04:07:03 +0000 (04:07 +0000)]
compiler-rt: whitespace and uniformity for arm

Make the whitespace a bit more uniform in the various assembly routines.  This
also makes the assembly files a bit more uniform on the ARM side by explicitly
stating that it is using the unified syntax and that the contents of the code is
in the text section (or segment).  No functional change.

llvm-svn: 209985

10 years agoDebugInfo: Assert that DbgVariables have associated DIEs
David Blaikie [Sun, 1 Jun 2014 03:38:13 +0000 (03:38 +0000)]
DebugInfo: Assert that DbgVariables have associated DIEs

This was previously committed in r209680 and reverted in r209683 after
it caused sanitizer builds to crash.

The issue seems to be that the DebugLoc associated with dbg.value IR
intrinsics isn't necessarily accurate. Instead, we duplicate the
DIVariables and add an InlinedAt field to them to record their
location.

We were using this InlinedAt field to compute the LexicalScope for the
variable, but not using it in the abstract DbgVariable construction and
mapping. This resulted in a formal parameter to the current concrete
function, correctly having no InlinedAt information, but incorrectly
having a DebugLoc that described an inlined location within the
function... thus an abstract DbgVariable was created for the variable,
but its DIE was never constructed (since the LexicalScope had no such
variable). This DbgVariable was silently ignored (by testing for a
non-null DIE on the abstract DbgVariable).

So, fix this by using the right scoping information when constructing
abstract DbgVariables.

In the long run, I suspect we want to undo the work that added this
second kind of location tracking and fix the places where the DebugLoc
propagation on the dbg.value intrinsic fails. This will shrink debug
info (by not duplicating DIVariables), make it more efficient (by not
having to construct new DIVariable metadata nodes to try to map back to
a single variable), and benefit all instructions.

But perhaps there are insurmountable issues with DebugLoc quality that
I'm unaware of... I just don't know how we can't /just keep the DebugLoc
from the dbg.declare to the dbg.values and never get this wrong/.

Some history context:

http://llvm.org/viewvc/llvm-project?view=revision&revision=135629
http://llvm.org/viewvc/llvm-project?view=revision&revision=137253

llvm-svn: 209984

10 years agoDon't add examples to the check-clang dependencies unless requested
Alp Toker [Sun, 1 Jun 2014 02:02:23 +0000 (02:02 +0000)]
Don't add examples to the check-clang dependencies unless requested

The tests were correctly getting skipped but the targets still mistakenly got
built.

llvm-svn: 209983

10 years agoFix typos
Alp Toker [Sat, 31 May 2014 21:26:28 +0000 (21:26 +0000)]
Fix typos

llvm-svn: 209982

10 years agoExecutionEngine: avoid NDEBUG in headers
Alp Toker [Sat, 31 May 2014 21:26:17 +0000 (21:26 +0000)]
ExecutionEngine: avoid NDEBUG in headers

llvm-svn: 209981

10 years agoUpdate a couple of header inclusion guards
Alp Toker [Sat, 31 May 2014 21:26:09 +0000 (21:26 +0000)]
Update a couple of header inclusion guards

llvm-svn: 209980

10 years agoR600/SI: Remove redundant patterns
Matt Arsenault [Sat, 31 May 2014 19:25:17 +0000 (19:25 +0000)]
R600/SI: Remove redundant patterns

These patterns are already handled in the instruction definition.

llvm-svn: 209979

10 years agoPreprocessor: make C++ operator names as macro identifiers a compatible extension
Alp Toker [Sat, 31 May 2014 16:32:22 +0000 (16:32 +0000)]
Preprocessor: make C++ operator names as macro identifiers a compatible extension

With recent changes, this is now a compatible language extension and can be
safely enabled with -ms-extensions instead of requiring the full
-ms-compatibility MSVC drop-in mode. As such we can now also emit an extension
warning under -Wmicrosoft to help users port their code.

llvm-svn: 209978

10 years ago[SelectionDAG] Force cycle detection in AssignTopologicalOrder before aborting
Adam Nemet [Sat, 31 May 2014 16:23:20 +0000 (16:23 +0000)]
[SelectionDAG] Force cycle detection in AssignTopologicalOrder before aborting

DAG cycle detection is only enabled with ENABLE_EXPENSIVE_CHECKS.  However we
can run it just before we would crash in order to provide more informative
diagnostics.

Now in addition to the "Overran sorted position" message we also get the Node
printed if a cycle was detected.

Tested by building several configs: Debug+Assert, Debug+Assert+Check (this is
ENABLE_EXPENSIVE_CHECKS), Release+Assert and Release.  Also tried that the
AssignTopologicalOrder assert produces the expected results.

llvm-svn: 209977