platform/upstream/llvm.git
10 years agoAArch64: add test for NZCV cross-copy save.
Tim Northover [Tue, 27 May 2014 16:50:09 +0000 (16:50 +0000)]
AArch64: add test for NZCV cross-copy save.

llvm-svn: 209665

10 years agoAArch64: add AArch64-specific test for 'c' and 'n'.
Tim Northover [Tue, 27 May 2014 16:50:03 +0000 (16:50 +0000)]
AArch64: add AArch64-specific test for 'c' and 'n'.

llvm-svn: 209664

10 years agoRevert small change to EmitDeclRefLValue
Renato Golin [Tue, 27 May 2014 16:46:27 +0000 (16:46 +0000)]
Revert small change to EmitDeclRefLValue

That small change, although it looked harmless, it made emitting the LValue
on the PHI node without the proper cast. Reverting it fixes PR19841.

llvm-svn: 209663

10 years ago[PATCH] Correct type used for VADD_SPLAT optimization on PowerPC
Bill Schmidt [Tue, 27 May 2014 15:57:51 +0000 (15:57 +0000)]
[PATCH] Correct type used for VADD_SPLAT optimization on PowerPC

In PPCISelLowering.cpp: PPCTargetLowering::LowerBUILD_VECTOR(), there
is an optimization for certain patterns to generate one or two vector
splats followed by a vector add or subtract.  This operation is
represented by a VADD_SPLAT in the selection DAG.  Prior to this
patch, it was possible for the VADD_SPLAT to be assigned the wrong
data type, causing incorrect code generation.  This patch corrects the
problem.

Specifically, the code previously assigned the value type of the
BUILD_VECTOR node to the newly generated VADD_SPLAT node.  This is
correct much of the time, but not always.  The problem is that the
call to isConstantSplat() may return a SplatBitSize that is not the
same as the number of bits in the original element vector type.  The
correct type to assign is a vector type with the same element bit size
as SplatBitSize.

The included test case shows an example of this, where the
BUILD_VECTOR node has a type of v16i8.  The vector to be built is {0,
16, 0, 16, 0, 16, 0, 16, 0, 16, 0, 16, 0, 16, 0, 16}.  isConstantSplat
detects that we can generate a splat of 16 for type v8i16, which is
the type we must assign to the VADD_SPLAT node.  If we do not, we
generate a vspltisb of 8 and a vaddubm, which generates the incorrect
result {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16}.  The correct code generation is a vspltish of 8 and a vadduhm.

This patch also corrected code generation for
CodeGen/PowerPC/2008-07-10-SplatMiscompile.ll, which had been marked
as an XFAIL, so we can remove the XFAIL from the test case.

llvm-svn: 209662

10 years agoASTMatchers.h: Appease msc17.
NAKAMURA Takumi [Tue, 27 May 2014 15:13:51 +0000 (15:13 +0000)]
ASTMatchers.h: Appease msc17.

llvm-svn: 209661

10 years agoParsing/Sema for OMPCollapseClause.
Alexander Musman [Tue, 27 May 2014 15:12:19 +0000 (15:12 +0000)]
Parsing/Sema for OMPCollapseClause.
Actual usage in Sema for collapsing loops will in some future patch.

llvm-svn: 209660

10 years ago[mips][mips64r6] Add Relocations R_MIPS_PCHI16, R_MIPS_PCLO16
Zoran Jovanovic [Tue, 27 May 2014 14:58:51 +0000 (14:58 +0000)]
[mips][mips64r6] Add Relocations R_MIPS_PCHI16, R_MIPS_PCLO16
Differential Revision: http://reviews.llvm.org/D3860

llvm-svn: 209659

10 years ago[tsan] Fix tsango build.
Evgeniy Stepanov [Tue, 27 May 2014 14:18:43 +0000 (14:18 +0000)]
[tsan] Fix tsango build.

llvm-svn: 209658

10 years ago[asan] Disable dlopen interceptor on Android.
Evgeniy Stepanov [Tue, 27 May 2014 14:14:03 +0000 (14:14 +0000)]
[asan] Disable dlopen interceptor on Android.

It can not work, as libdl is always first in the lookup order,
even ahead of LD_PRELOAD-ed libraries.

llvm-svn: 209657

10 years ago[ARM] Emit correct build attributes for the relocation models.
Amara Emerson [Tue, 27 May 2014 13:30:21 +0000 (13:30 +0000)]
[ARM] Emit correct build attributes for the relocation models.

Patch by Asiri Rathnayake.

llvm-svn: 209656

10 years ago[mips][mips64r6] Add relocations R_MIPS_PC21_S2, R_MIPS_PC26_S2
Zoran Jovanovic [Tue, 27 May 2014 12:55:40 +0000 (12:55 +0000)]
[mips][mips64r6] Add relocations R_MIPS_PC21_S2, R_MIPS_PC26_S2
Differential Revision: http://reviews.llvm.org/D3824

llvm-svn: 209655

10 years ago[asancov] Emit an initializer passing number of coverage code locations in each module.
Evgeniy Stepanov [Tue, 27 May 2014 12:39:31 +0000 (12:39 +0000)]
[asancov] Emit an initializer passing number of coverage code locations in each module.

llvm-svn: 209654

10 years ago[asancov] Write coverage directly to a memory-mapped file.
Evgeniy Stepanov [Tue, 27 May 2014 12:37:52 +0000 (12:37 +0000)]
[asancov] Write coverage directly to a memory-mapped file.

This way does not require a __sanitizer_cov_dump() call. That's
important on Android, where apps can be killed at arbitrary time.

We write raw PCs to disk instead of module offsets; we also write
memory layout to a separate file. This increases dump size by the
factor of 2 on 64-bit systems.

llvm-svn: 209653

10 years agoMake equalsNode work with pointers to subtypes.
Manuel Klimek [Tue, 27 May 2014 12:31:10 +0000 (12:31 +0000)]
Make equalsNode work with pointers to subtypes.

llvm-svn: 209652

10 years agoAArch64: implement copies to/from NZCV as a last ditch effort.
Tim Northover [Tue, 27 May 2014 12:16:02 +0000 (12:16 +0000)]
AArch64: implement copies to/from NZCV as a last ditch effort.

A test in test/Generic creates a DAG where the NZCV output of an ADCS is used
by multiple nodes. This makes LLVM want to save a copy of NZCV for later, which
it couldn't do before.

This should be the last fix required for the aarch64 buildbot.

llvm-svn: 209651

10 years agoARM: teach AAPCS-VFP to deal with Cortex-M4.
Tim Northover [Tue, 27 May 2014 10:43:38 +0000 (10:43 +0000)]
ARM: teach AAPCS-VFP to deal with Cortex-M4.

Cortex-M4 only has single-precision floating point support, so any LLVM
"double" type will have been split into 2 i32s by now. Fortunately, the
consecutive-register framework turns out to be precisely what's needed to
reconstruct the double and follow AAPCS-VFP correctly!

rdar://problem/17012966

llvm-svn: 209650

10 years agoAdds child traversal matchers for IfStmt's then and else branches.
Manuel Klimek [Tue, 27 May 2014 10:04:12 +0000 (10:04 +0000)]
Adds child traversal matchers for IfStmt's then and else branches.

llvm-svn: 209649

10 years agoFix bad assert.
Daniel Jasper [Tue, 27 May 2014 09:55:37 +0000 (09:55 +0000)]
Fix bad assert.

llvm-svn: 209648

10 years agoAllow hasBody on CXXForRangeStmt nodes and update the docs.
Manuel Klimek [Tue, 27 May 2014 07:45:18 +0000 (07:45 +0000)]
Allow hasBody on CXXForRangeStmt nodes and update the docs.

llvm-svn: 209647

10 years agoAArch64: support 'c' and 'n' inline asm modifiers.
Tim Northover [Tue, 27 May 2014 07:37:21 +0000 (07:37 +0000)]
AArch64: support 'c' and 'n' inline asm modifiers.

These are tested by test/CodeGen/Generic, so we should probably know
how to deal with them. Fortunately generic code does it if asked.

llvm-svn: 209646

10 years agoAdding testcase for PR18886.
Dinesh Dwivedi [Tue, 27 May 2014 06:44:25 +0000 (06:44 +0000)]
Adding testcase for PR18886.

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

llvm-svn: 209645

10 years ago[Mips] Handle relocations against __gnu_local_gp symbol.
Simon Atanasyan [Tue, 27 May 2014 05:23:16 +0000 (05:23 +0000)]
[Mips] Handle relocations against __gnu_local_gp symbol.

llvm-svn: 209644

10 years agoConvert some X86 blendv* intrinsics into IR.
Filipe Cabecinhas [Tue, 27 May 2014 03:42:20 +0000 (03:42 +0000)]
Convert some X86 blendv* intrinsics into IR.

Summary:
Implemented an InstCombine transformation that takes a blendv* intrinsic
call and translates it into an IR select, if the mask is constant.

This will eventually get lowered into blends with immediates if possible,
or pblendvb (with an option to further optimize if we can transform the
pblendvb into a blend+immediate instruction, depending on the selector).
It will also enable optimizations by the IR passes, which give up on
sight of the intrinsic.

Both the transformation and the lowering of its result to asm got shiny
new tests.

The transformation is a bit convoluted because of blendvp[sd]'s
definition:

Its mask is a floating point value! This forces us to convert it and get
the highest bit. I suppose this happened because the mask has type
__m128 in Intel's intrinsic and v4sf (for blendps) in gcc's builtin.

I will send an email to llvm-dev to discuss if we want to change this or
not.

Reviewers: grosbach, delena, nadav

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

llvm-svn: 209643

10 years ago[C++11] Use 'nullptr'. StaticAnalyzer edition.
Craig Topper [Tue, 27 May 2014 02:45:47 +0000 (02:45 +0000)]
[C++11] Use 'nullptr'. StaticAnalyzer edition.

llvm-svn: 209642

10 years agoOn AArch64, use clone() instead of fork()
Greg Fitzgerald [Mon, 26 May 2014 23:44:55 +0000 (23:44 +0000)]
On AArch64, use clone() instead of fork()

Patch by Gideon Billings.

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

llvm-svn: 209641

10 years agoFix link.
Rafael Espindola [Mon, 26 May 2014 21:30:40 +0000 (21:30 +0000)]
Fix link.

llvm-svn: 209640

10 years agoUse existing helper function.
Rafael Espindola [Mon, 26 May 2014 19:57:55 +0000 (19:57 +0000)]
Use existing helper function.

No functionality change.

llvm-svn: 209639

10 years ago[PPC] Use alias symbols in address computation.
Rafael Espindola [Mon, 26 May 2014 19:08:19 +0000 (19:08 +0000)]
[PPC] Use alias symbols in address computation.

This seems to match what gcc does for ppc and what every other llvm
backend does.

llvm-svn: 209638

10 years agoAArch64: force i1 to be zero-extended at an ABI boundary.
Tim Northover [Mon, 26 May 2014 17:22:07 +0000 (17:22 +0000)]
AArch64: force i1 to be zero-extended at an ABI boundary.

This commit is debatable. There are two possible approaches, neither
of which is really satisfactory:

1. Use "@foo(i1 zeroext)" to mean an extension to 32-bits on Darwin,
   and 8 bits otherwise.
2. Redefine "@foo(i1)" to mean that the i1 is extended by the caller
   to 8 bits. This goes against the spirit of "zeroext" I think, but
   it's a bit of a vague construct anyway (by definition you're going
   to extend to the amount required by the ABI, that's why it's the
   ABI!).

This implements option 2. The DAG machinery really isn't setup for the
first (there's a fairly strong assumption that "zeroext" goes to at
least the smallest register size), and even if it was the resulting
DAG looks like it would be inferior in many cases.

Theoretically we could add AssertZext nodes in the consumers of
ABI-passed values too now, but this actually seems to make the code
worse in practice by making truncation proceed in two steps. The code
produced is equally valid if we continue to assume only the low bit is
defined.

Should fix PR19850

llvm-svn: 209637

10 years agoAArch64: simplify calling conventions slightly.
Tim Northover [Mon, 26 May 2014 17:21:53 +0000 (17:21 +0000)]
AArch64: simplify calling conventions slightly.

We can eliminate the custom C++ code in favour of some TableGen to
check the same things. Functionality should be identical, except for a
buffer overrun that was present in the C++ code and meant webkit
failed if any small argument needed to be passed on the stack.

llvm-svn: 209636

10 years agoRejecting the mutable specifier on a freestanding type declaration, instead of suppor...
Aaron Ballman [Mon, 26 May 2014 17:03:54 +0000 (17:03 +0000)]
Rejecting the mutable specifier on a freestanding type declaration, instead of supporting it as a "extension" (which serves no purpose). Un-XFAILing the test for mutable specifiers.

llvm-svn: 209635

10 years agoSome cleanup for r209568.
Michael Zolotukhin [Mon, 26 May 2014 14:49:46 +0000 (14:49 +0000)]
Some cleanup for r209568.

llvm-svn: 209634

10 years agoAdd stdlib.h for malloc and friends
Ed Maste [Mon, 26 May 2014 14:07:26 +0000 (14:07 +0000)]
Add stdlib.h for malloc and friends

llvm-svn: 209633

10 years agoRemove include of obsolete stropts.h header
Ed Maste [Mon, 26 May 2014 14:04:29 +0000 (14:04 +0000)]
Remove include of obsolete stropts.h header

The header is for POSIX streams functionality, and does not exist on
FreeBSD, OS X, or contemporary Linux distributions.

llvm-svn: 209632

10 years agoUse MIUtilSystemLinux on FreeBSD as well
Ed Maste [Mon, 26 May 2014 13:57:15 +0000 (13:57 +0000)]
Use MIUtilSystemLinux on FreeBSD as well

We should later rename this file (probably MIUtilSystemPOSIX), but
more clean-up is still needed here, and we can wait until we better
understand how this code may be shared between FreeBSD, Linux, and OS X.

llvm-svn: 209631

10 years agoAdd missing header
Ed Maste [Mon, 26 May 2014 13:48:38 +0000 (13:48 +0000)]
Add missing header

Presumably included by header leakage on other platforms.

llvm-svn: 209630

10 years ago[ASan tests] Use ASAN_OPTIONS in a portable way
Timur Iskhodzhanov [Mon, 26 May 2014 13:44:57 +0000 (13:44 +0000)]
[ASan tests] Use ASAN_OPTIONS in a portable way

llvm-svn: 209629

10 years agoConvert a few loops to use ranges.
Rafael Espindola [Mon, 26 May 2014 13:38:51 +0000 (13:38 +0000)]
Convert a few loops to use ranges.

llvm-svn: 209628

10 years ago[AArch64] Add store + add folding regression tests for the load/store optimization...
Tilmann Scheller [Mon, 26 May 2014 13:36:47 +0000 (13:36 +0000)]
[AArch64] Add store + add folding regression tests for the load/store optimization pass.

Add tests for the following transform:

 str X, [x0, #32]
  ...
 add x0, x0, #32
  ->
 str X, [x0, #32]!

with X being either w1, x1, s0, d0 or q0.

llvm-svn: 209627

10 years agoclang-format: Split up moveStateToNextToken.
Daniel Jasper [Mon, 26 May 2014 13:10:39 +0000 (13:10 +0000)]
clang-format: Split up moveStateToNextToken.

No functional changes intended.

llvm-svn: 209626

10 years ago[MSan] Implement __sanitizer_print_stack_trace().
Sergey Matveev [Mon, 26 May 2014 13:08:08 +0000 (13:08 +0000)]
[MSan] Implement __sanitizer_print_stack_trace().

llvm-svn: 209625

10 years ago[AArch64] Add more regression tests for the load/store optimization pass.
Tilmann Scheller [Mon, 26 May 2014 12:15:51 +0000 (12:15 +0000)]
[AArch64] Add more regression tests for the load/store optimization pass.

Cover the following cases:

  ldr X, [x0, #32]
   ...
  add x0, x0, #32
   ->
  ldr X, [x0, #32]!

with X being either w1, x1, s0, d0 or q0.

llvm-svn: 209624

10 years ago[asan] decrease asan-instrumentation-with-call-threshold from 10000 to 7000, see...
Kostya Serebryany [Mon, 26 May 2014 11:57:16 +0000 (11:57 +0000)]
[asan] decrease asan-instrumentation-with-call-threshold from 10000 to 7000, see PR17409

llvm-svn: 209623

10 years ago[ASan/Win tests] Remove the extra 'cat' in front of FileCheck now that it's clear...
Timur Iskhodzhanov [Mon, 26 May 2014 11:54:20 +0000 (11:54 +0000)]
[ASan/Win tests] Remove the extra 'cat' in front of FileCheck now that it's clear we should use GnuWin32 rather than Cygwin on the PATH on Windows (see PR19744)

llvm-svn: 209622

10 years agoAArch64: remove empty ARM64 directories from svn.
Tim Northover [Mon, 26 May 2014 11:25:33 +0000 (11:25 +0000)]
AArch64: remove empty ARM64 directories from svn.

llvm-svn: 209621

10 years ago[ASan/Win tests] Use the env keyword in the SUAR tests to work with gnuwin/lit correctly
Timur Iskhodzhanov [Mon, 26 May 2014 11:25:32 +0000 (11:25 +0000)]
[ASan/Win tests] Use the env keyword in the SUAR tests to work with gnuwin/lit correctly

llvm-svn: 209620

10 years agoRemove accidentally committed whitespace.
Tilmann Scheller [Mon, 26 May 2014 09:40:40 +0000 (09:40 +0000)]
Remove accidentally committed whitespace.

llvm-svn: 209619

10 years ago[AArch64] Add a regression test for the load store optimizer.
Tilmann Scheller [Mon, 26 May 2014 09:37:19 +0000 (09:37 +0000)]
[AArch64] Add a regression test for the load store optimizer.

We have a couple of regression tests for load/store pairing, but (to my knowledge) there are no regression tests for the load/store + add/sub folding.

As a first step towards increased test coverage of this area, this commit adds a test for one instance of a load + add to pre-indexed load transformation.

llvm-svn: 209618

10 years agoMake the LoopRotate pass's maximum header size configurable both programmatically
Owen Anderson [Mon, 26 May 2014 08:58:51 +0000 (08:58 +0000)]
Make the LoopRotate pass's maximum header size configurable both programmatically
and via the command line, mirroring similar functionality in LoopUnroll.  In
situations where clients used custom unrolling thresholds, their intent could
previously be foiled by LoopRotate having a hardcoded threshold.

llvm-svn: 209617

10 years ago[Mips] Do not count global GOT entries using the separate variable. Use
Simon Atanasyan [Mon, 26 May 2014 08:32:38 +0000 (08:32 +0000)]
[Mips] Do not count global GOT entries using the separate variable. Use
size of global GOT entries map for that.

llvm-svn: 209616

10 years agoclang-format: Keep '{' of dict literals on the same line in Allman style
Daniel Jasper [Mon, 26 May 2014 07:24:34 +0000 (07:24 +0000)]
clang-format: Keep '{' of dict literals on the same line in Allman style

Before:
  void f()
  {
    [object
        someMethod:@
        { @"a" : @"b" }];
  }

After:
  void f()
  {
    [object someMethod:@{ @"a" : @"b" }];
  }

This fixes llvm.org/PR19854.

llvm-svn: 209615

10 years agoDebugInfo: Test linkonce-odr functions under LTO.
David Blaikie [Mon, 26 May 2014 06:44:52 +0000 (06:44 +0000)]
DebugInfo: Test linkonce-odr functions under LTO.

This was previously regressed/broken by r192749 (reverted due to this
issue in r192938) and I was about to break it again by accident with
some more invasive changes that deal with the subprogram lists. So to
avoid that and further issues - here's a test.

It's a pretty basic test - in both r192749 and my impending case, this
test would crash, but checking the basics (that we put a subprogram in
just one of the two CUs) seems like a good start.

We still get this wrong in weird ways if the linkonce-odr function
happens to not be identical in the metadata (because it's defined in two
different files (hence the # line directives in this test), etc) even
though it meets the language requirements (identical token stream) for
such a thing. That results in two subprogram DIEs, but only one of them
gets the parameter and high/low pc information, etc. We probably need to
use the DIRef infrastructure to deduplicate functions as we do types to
address this issue - or perhaps teach the BC linker to remove the
duplicate entries in subprogram lists?

llvm-svn: 209614

10 years ago[C++11] Use 'nullptr'. Sema edition.
Craig Topper [Mon, 26 May 2014 06:22:03 +0000 (06:22 +0000)]
[C++11] Use 'nullptr'. Sema edition.

llvm-svn: 209613

10 years ago[C++11] Use 'nullptr'.
Craig Topper [Mon, 26 May 2014 06:21:51 +0000 (06:21 +0000)]
[C++11] Use 'nullptr'.

llvm-svn: 209612

10 years agoDwarfUnit: Remove some misleading no-op code introduced in r204162.
David Blaikie [Mon, 26 May 2014 05:32:21 +0000 (05:32 +0000)]
DwarfUnit: Remove some misleading no-op code introduced in r204162.

Post commit review feedback from Manman called this out, but it looks
like it slipped through the cracks.

llvm-svn: 209611

10 years agoJust check the entire string.
Rafael Espindola [Mon, 26 May 2014 04:08:51 +0000 (04:08 +0000)]
Just check the entire string.

Thanks to David Blaikie for the suggestion.

llvm-svn: 209610

10 years agoReformat linefeeds.
NAKAMURA Takumi [Mon, 26 May 2014 00:25:26 +0000 (00:25 +0000)]
Reformat linefeeds.

llvm-svn: 209609

10 years agoTrailing whitespace.
NAKAMURA Takumi [Mon, 26 May 2014 00:25:09 +0000 (00:25 +0000)]
Trailing whitespace.

llvm-svn: 209608

10 years agotools: avoid use of std::function
Saleem Abdulrasool [Sun, 25 May 2014 21:37:59 +0000 (21:37 +0000)]
tools: avoid use of std::function

Remove the use of the std::function and replace the capturing lambda with a
non-capturing one, opting to pass the user data down to the context.  This is
needed as std::function is not yet available on all hosted platforms (it
requires RTTI, which breaks on Windows).

Thanks to Nico Rieck for pointing this out!

llvm-svn: 209607

10 years agotools: split out Win64EHDumper from COFFDumper
Saleem Abdulrasool [Sun, 25 May 2014 20:26:45 +0000 (20:26 +0000)]
tools: split out Win64EHDumper from COFFDumper

Move the implementation of the Win64 EH printer from the COFFDumper into its own
class.  This is in preparation for adding support to print ARM EH information.
The only real change here is in printUnwindInfo where we now lambda lift the
implicit this parameter for the resolveFunction.  Also setup the printing to
handle ARM.  This now has set the stage to introduce ARM EH printing.

llvm-svn: 209606

10 years agotools: inline simple single-use function
Saleem Abdulrasool [Sun, 25 May 2014 20:26:40 +0000 (20:26 +0000)]
tools: inline simple single-use function

This inlines the single use function in preparation for splitting the Win64EH
printing out of the COFFDumper into its own entity.

llvm-svn: 209605

10 years agotools: refactor COFFDumper symbol resolution logic
Saleem Abdulrasool [Sun, 25 May 2014 20:26:37 +0000 (20:26 +0000)]
tools: refactor COFFDumper symbol resolution logic

Make the use of the cache more transparent to the users.  There is no reason
that the cached entries really need to be passed along.  The overhead for doing
so is minimal: a single extra parameter.  This requires that some standalone
functions be brought into the COFFDumper class so that they may access the
cache.

llvm-svn: 209604

10 years agotools: use references rather than out pointers in COFFDumper
Saleem Abdulrasool [Sun, 25 May 2014 20:26:33 +0000 (20:26 +0000)]
tools: use references rather than out pointers in COFFDumper

Switch to use references for parameters that are guaranteed to be non-null.
Simplifies the code a slight bit in preparation for another change.

llvm-svn: 209603

10 years agoDebugInfo: Fix inlining with #file directives a little harder
David Blaikie [Sun, 25 May 2014 18:11:35 +0000 (18:11 +0000)]
DebugInfo: Fix inlining with #file directives a little harder

Seems my previous fix was insufficient - we were still not adding the
inlined function to the abstract scope list. Which meant it wasn't
flagged as inline, didn't have nested lexical scopes in the abstract
definition, and didn't have abstract variables - so the inlined variable
didn't reference an abstract variable, instead being described
completely inline.

llvm-svn: 209602

10 years agoStreamline test case by avoiding a temporary file and piping llc output straight...
David Blaikie [Sun, 25 May 2014 15:38:52 +0000 (15:38 +0000)]
Streamline test case by avoiding a temporary file and piping llc output straight to llvm-dwarfdump

We still do temporary files in many cases, just updating this particular
one because I was debugging it and made this change while doing so.

llvm-svn: 209601

10 years agoEmit data or code export directives based on the type.
Rafael Espindola [Sun, 25 May 2014 12:49:07 +0000 (12:49 +0000)]
Emit data or code export directives based on the type.

Currently we look at the Aliasee to decide what type of export
directive to use. It seems better to use the type of the alias
directly. This is similar to how we handle the alias having the
same address but other attributes (linkage, visibility) from the
aliasee.

With this patch it is now possible to do things like

target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
@foo = global [6 x i8] c"\B8*\00\00\00\C3", section ".text", align 16
@f = dllexport alias i32 (), [6 x i8]* @foo
!llvm.module.flags = !{!0}
!0 = metadata !{i32 6, metadata !"Linker Options", metadata !1}
!1 = metadata !{metadata !2, metadata !3}
!2 = metadata !{metadata !"/DEFAULTLIB:libcmt.lib"}
!3 = metadata !{metadata !"/DEFAULTLIB:oldnames.lib"}

llvm-svn: 209600

10 years agoMake these CHECKs a bit more strict.
Rafael Espindola [Sun, 25 May 2014 12:43:13 +0000 (12:43 +0000)]
Make these CHECKs a bit more strict.

The " at the end of the line makes sure we matched the entire directive.

llvm-svn: 209599

10 years agoSema: Add dll attribute tests for member functions
Nico Rieck [Sun, 25 May 2014 10:35:03 +0000 (10:35 +0000)]
Sema: Add dll attribute tests for member functions

llvm-svn: 209598

10 years agoSema: Add dll attribute tests for variable templates
Nico Rieck [Sun, 25 May 2014 10:34:36 +0000 (10:34 +0000)]
Sema: Add dll attribute tests for variable templates

llvm-svn: 209597

10 years agoIRGen: Add more tests for dll attributes
Nico Rieck [Sun, 25 May 2014 10:34:16 +0000 (10:34 +0000)]
IRGen: Add more tests for dll attributes

llvm-svn: 209596

10 years agoAdd an extension point for peephole optimizers.
Peter Collingbourne [Sun, 25 May 2014 10:27:02 +0000 (10:27 +0000)]
Add an extension point for peephole optimizers.

This extension point allows adding passes that perform peephole optimizations
similar to the instruction combiner. These passes will be inserted after
each instance of the instruction combiner pass.

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

llvm-svn: 209595

10 years ago[Mips] Reduce code duplication. Join relocation handling functions which
Simon Atanasyan [Sun, 25 May 2014 10:07:04 +0000 (10:07 +0000)]
[Mips] Reduce code duplication. Join relocation handling functions which
perform calculations for R_MIPS_GOT16 and R_MIPS_CALL16 relocations.

llvm-svn: 209594

10 years ago[Mips] Factor out the code assign a value to the absolute atom into the
Simon Atanasyan [Sun, 25 May 2014 09:05:06 +0000 (09:05 +0000)]
[Mips] Factor out the code assign a value to the absolute atom into the
separate function.

llvm-svn: 209593

10 years ago[Mips] Factor out the code create Mips specific runtime file into
Simon Atanasyan [Sun, 25 May 2014 09:04:57 +0000 (09:04 +0000)]
[Mips] Factor out the code create Mips specific runtime file into
the MipsELFWriters member function.

llvm-svn: 209592

10 years ago[Mips] Remove unused class member declaration.
Simon Atanasyan [Sun, 25 May 2014 09:04:45 +0000 (09:04 +0000)]
[Mips] Remove unused class member declaration.

llvm-svn: 209591

10 years ago[Mips] Reduce code duplication. Join relocation handling functions which
Simon Atanasyan [Sun, 25 May 2014 09:04:15 +0000 (09:04 +0000)]
[Mips] Reduce code duplication. Join relocation handling functions which
perform similar calculations.

llvm-svn: 209590

10 years agoFix some misplaced spaces around 'override'
Hans Wennborg [Sat, 24 May 2014 20:19:40 +0000 (20:19 +0000)]
Fix some misplaced spaces around 'override'

llvm-svn: 209589

10 years agoFix some misplaced spaces around 'override'
Hans Wennborg [Sat, 24 May 2014 20:18:32 +0000 (20:18 +0000)]
Fix some misplaced spaces around 'override'

llvm-svn: 209588

10 years agobuild: sort llvm-readobj sources
Saleem Abdulrasool [Sat, 24 May 2014 20:04:21 +0000 (20:04 +0000)]
build: sort llvm-readobj sources

Sort the source files.  NFC.

llvm-svn: 209587

10 years agollvm-readobj: remove some dead code
Saleem Abdulrasool [Sat, 24 May 2014 19:54:28 +0000 (19:54 +0000)]
llvm-readobj: remove some dead code

llvm-svn: 209586

10 years agoAArch64: disable FastISel for large code model.
Tim Northover [Sat, 24 May 2014 19:45:41 +0000 (19:45 +0000)]
AArch64: disable FastISel for large code model.

The code emitted is what would be expected for the small model, so it
shouldn't be used when objects can be the full 64-bits away.

This fixes MCJIT tests on Linux.

llvm-svn: 209585

10 years agoScopDetectionDiagnostic: Update Makefile
Andreas Simbuerger [Sat, 24 May 2014 18:51:14 +0000 (18:51 +0000)]
ScopDetectionDiagnostic: Update Makefile

llvm-svn: 209584

10 years agoClangTidyOptionsTest.cpp: Rewrite literals. Raw string literals are unavailable on...
NAKAMURA Takumi [Sat, 24 May 2014 17:22:01 +0000 (17:22 +0000)]
ClangTidyOptionsTest.cpp: Rewrite literals. Raw string literals are unavailable on msc17.

llvm-svn: 209583

10 years ago[Mips] Handle R_MIPS_TLS_TPREL_HI16 / R_MIPS_TLS_TPREL_LO16 relocations.
Simon Atanasyan [Sat, 24 May 2014 16:45:31 +0000 (16:45 +0000)]
[Mips] Handle R_MIPS_TLS_TPREL_HI16 / R_MIPS_TLS_TPREL_LO16 relocations.

llvm-svn: 209582

10 years agoMachineVerifier: Clean up some syntactic weirdness left behind by find&replace.
Benjamin Kramer [Sat, 24 May 2014 13:31:10 +0000 (13:31 +0000)]
MachineVerifier: Clean up some syntactic weirdness left behind by find&replace.

No functionality change.

llvm-svn: 209581

10 years agoCodeGen: Make MachineBasicBlock::back skip to the beginning of the last bundle.
Benjamin Kramer [Sat, 24 May 2014 13:13:17 +0000 (13:13 +0000)]
CodeGen: Make MachineBasicBlock::back skip to the beginning of the last bundle.

This makes front/back symmetric with begin/end, avoiding some confusion.
Added instr_front/instr_back for the old behavior, corresponding to
instr_begin/instr_end. Audited all three in-tree users of back(), all
of them look like they don't want to look inside bundles.

Fixes an assertion (PR19815) when generating debug info on mips, where a
delay slot was bundled at the end of a branch.

llvm-svn: 209580

10 years agoAArch64/ARM64: rename ARM64 components to AArch64
Tim Northover [Sat, 24 May 2014 12:52:07 +0000 (12:52 +0000)]
AArch64/ARM64: rename ARM64 components to AArch64

This keeps Clang consistent with backend naming conventions.

llvm-svn: 209579

10 years agoAArch64/ARM64: update Clang after AArch64 removal.
Tim Northover [Sat, 24 May 2014 12:51:25 +0000 (12:51 +0000)]
AArch64/ARM64: update Clang after AArch64 removal.

A few (mostly CodeGen) parts of Clang were tightly coupled to the
AArch64 backend. Now that it's gone, they will not even compile.

I've also deduplicated RUN lines in many of the AArch64 tests. This
might improve "make check-all" time noticably: some of those NEON
tests were monsters.

llvm-svn: 209578

10 years agoAArch64/ARM64: move ARM64 into AArch64's place
Tim Northover [Sat, 24 May 2014 12:50:23 +0000 (12:50 +0000)]
AArch64/ARM64: move ARM64 into AArch64's place

This commit starts with a "git mv ARM64 AArch64" and continues out
from there, renaming the C++ classes, intrinsics, and other
target-local objects for consistency.

"ARM64" test directories are also moved, and tests that began their
life in ARM64 use an arm64 triple, those from AArch64 use an aarch64
triple. Both should be equivalent though.

This finishes the AArch64 merge, and everyone should feel free to
continue committing as normal now.

llvm-svn: 209577

10 years agoAArch64/ARM64: remove AArch64 from tree prior to renaming ARM64.
Tim Northover [Sat, 24 May 2014 12:42:26 +0000 (12:42 +0000)]
AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64.

I'm doing this in two phases for a better "git blame" record. This
commit removes the previous AArch64 backend and redirects all
functionality to ARM64. It also deduplicates test-lines and removes
orphaned AArch64 tests.

The next step will be "git mv ARM64 AArch64" and rewire most of the
tests.

Hopefully LLVM is still functional, though it would be even better if
no-one ever had to care because the rename happens straight
afterwards.

llvm-svn: 209576

10 years agoExpose diagnostic info to users
Andreas Simbuerger [Sat, 24 May 2014 09:25:14 +0000 (09:25 +0000)]
Expose diagnostic info to users

llvm-svn: 209575

10 years agoScopDetection: Support keep-going
Andreas Simbuerger [Sat, 24 May 2014 09:25:10 +0000 (09:25 +0000)]
ScopDetection: Support keep-going

Support a 'keep-going' mode for the ScopDetection. In this mode, we just keep
on detecting, even if we encounter an error.

This is useful for diagnosing SCoP candidates. Sometimes you want all the
errors. Invalid SCoPs will still be refused in the end, we just refuse to
abort on the first error.

llvm-svn: 209574

10 years agoSubstitue LastError & InvalidRegions with RejectLogs
Andreas Simbuerger [Sat, 24 May 2014 09:25:06 +0000 (09:25 +0000)]
Substitue LastError & InvalidRegions with RejectLogs

Use the new ScopDetectionDiagnostics to implement
the same functionality.

llvm-svn: 209573

10 years agoStore all RejectReasons that occurred in a log.
Andreas Simbuerger [Sat, 24 May 2014 09:25:01 +0000 (09:25 +0000)]
Store all RejectReasons that occurred in a log.

This stores all RejectReasons created for one region
in a RejectLog inside the DetectionContext. For now
this only keeps track of the last error.

A separate patch will enable the tracking of all errors.
This patch itself does no harm (yet).

llvm-svn: 209572

10 years agoSplit implementation from ScopDetectionDiagnostic.h
Andreas Simbuerger [Sat, 24 May 2014 09:24:53 +0000 (09:24 +0000)]
Split implementation from ScopDetectionDiagnostic.h

We don't want the Statistic variables in every module that
includes the diagnostics.

llvm-svn: 209571

10 years agollvm/test/Object/ar-error.test: Don't check the message "No such file or directory".
NAKAMURA Takumi [Sat, 24 May 2014 08:47:11 +0000 (08:47 +0000)]
llvm/test/Object/ar-error.test: Don't check the message "No such file or directory".

It didn't match on non-English version of Windows.

llvm-svn: 209570

10 years agoclang-tools-extra/test/clang-tidy/line-filter.cpp: Tweak line-filter.
NAKAMURA Takumi [Sat, 24 May 2014 08:42:12 +0000 (08:42 +0000)]
clang-tools-extra/test/clang-tidy/line-filter.cpp: Tweak line-filter.

On win32, %s is expanded to X:\path\to\test\line-filter.cpp. It was incompatible to yaml.
Although "%/s" could be available in Lit, ClangTidyDiagnosticConsumer::passesLineFilter() is unaware of comparision between '/' and '\\'.

llvm-svn: 209569

10 years agoImplement sext(C1 + C2*X) --> sext(C1) + sext(C2*X) and
Michael Zolotukhin [Sat, 24 May 2014 08:09:57 +0000 (08:09 +0000)]
Implement sext(C1 + C2*X) --> sext(C1) + sext(C2*X) and
sext{C1,+,C2} --> sext(C1) + sext{0,+,C2} transformation in Scalar
Evolution.

That helps SLP-vectorizer to recognize consecutive loads/stores.

<rdar://problem/14860614>

llvm-svn: 209568

10 years agoCXXInfo memory should be released after calling the destructor
Yaron Keren [Sat, 24 May 2014 07:19:25 +0000 (07:19 +0000)]
CXXInfo memory should be released after calling the destructor
instead of before. The wrong order had no effect since Deallocate()
does nothing right now, but we may replace allocator in the future.

llvm-svn: 209567

10 years agoARM64: extract a 32-bit subreg when selecting an inreg extend
Tim Northover [Sat, 24 May 2014 07:05:42 +0000 (07:05 +0000)]
ARM64: extract a 32-bit subreg when selecting an inreg extend

After the load/store refactoring, we were sometimes trying to feed a
GPR64 into a 32-bit register offset operand. This failed in
copyPhysReg.

llvm-svn: 209566