platform/upstream/llvm.git
11 years ago[PowerPC] Add predicted forms of branches
Ulrich Weigand [Mon, 24 Jun 2013 16:52:04 +0000 (16:52 +0000)]
[PowerPC] Add predicted forms of branches

This adds support for the predicted forms of branches (+/-).
There are three cases to consider:
- Branches using a PPC::Predicate code
  For these, I've added new PPC::Predicate codes corresponding
  to the BO values for predicted branch forms, and updated insn
  printing to print them correctly.  I've also added new aliases
  for the asm parser matching the new forms.
- bt/bf
  I've added new aliases matching to gBC etc.
- bd(n)z variants
  I've added new instruction patterns for the predicted forms.

In all cases, the new patterns are used for the asm parser only.
(The new infrastructure ought to be sufficient to allow use by
the compiler too at some point.)

llvm-svn: 184754

11 years agoConvert a use of PathV1.h
Rafael Espindola [Mon, 24 Jun 2013 16:46:15 +0000 (16:46 +0000)]
Convert a use of PathV1.h

llvm-svn: 184753

11 years agotsan: make the test more robust
Dmitry Vyukov [Mon, 24 Jun 2013 16:28:02 +0000 (16:28 +0000)]
tsan: make the test more robust
currently it episodically fails
the hypothesis it is due to racy race detection algorithm
the sleep should make it more robust

llvm-svn: 184752

11 years agoAdd some invalid-decl checks to clang_Type_getOffsetOf.
Matt Beaumont-Gay [Mon, 24 Jun 2013 16:12:35 +0000 (16:12 +0000)]
Add some invalid-decl checks to clang_Type_getOffsetOf.

print-size-type.cpp was checking for specific record layout output for invalid
decls; I've removed the checks but left the records as tests for not crashing.

llvm-svn: 184751

11 years agoMove llvm/test/DebugInfo/arguments.ll to X86, for now. It is still Windows' PECOFF...
NAKAMURA Takumi [Mon, 24 Jun 2013 16:05:21 +0000 (16:05 +0000)]
Move llvm/test/DebugInfo/arguments.ll to X86, for now. It is still Windows' PECOFF incompatible.

llvm-svn: 184750

11 years agoRename the variable to fix a warning. Thanks Andy Gibbs.
Nadav Rotem [Mon, 24 Jun 2013 15:59:47 +0000 (15:59 +0000)]
Rename the variable to fix a warning. Thanks Andy Gibbs.

llvm-svn: 184749

11 years agoTests require GNU make, called gmake on FreeBSD
Ed Maste [Mon, 24 Jun 2013 15:40:27 +0000 (15:40 +0000)]
Tests require GNU make, called gmake on FreeBSD

llvm-svn: 184748

11 years agotsan: update dynamic export syms file
Dmitry Vyukov [Mon, 24 Jun 2013 15:17:36 +0000 (15:17 +0000)]
tsan: update dynamic export syms file
now it includes proper functions (including interceptors)
and does not include local functions that lead to build failures

llvm-svn: 184747

11 years agoSync FreeBSD files to Linux equivalents, to reduce noise in diff
Ed Maste [Mon, 24 Jun 2013 15:09:18 +0000 (15:09 +0000)]
Sync FreeBSD files to Linux equivalents, to reduce noise in diff

- Sort functions in the same order
- Match whitespace
- Remove commetned out code
- Make filename in comments match filename

llvm-svn: 184746

11 years agoUpdate comment to match class name
Ed Maste [Mon, 24 Jun 2013 15:04:47 +0000 (15:04 +0000)]
Update comment to match class name

llvm-svn: 184745

11 years agoUse canonical termios.h location
Ed Maste [Mon, 24 Jun 2013 15:03:16 +0000 (15:03 +0000)]
Use canonical termios.h location

llvm-svn: 184744

11 years agoConvert a use of PathV1.h.
Rafael Espindola [Mon, 24 Jun 2013 15:00:11 +0000 (15:00 +0000)]
Convert a use of PathV1.h.

llvm-svn: 184743

11 years agoEliminate missing virtual destructor warning on FreeBSD
Ed Maste [Mon, 24 Jun 2013 14:55:03 +0000 (14:55 +0000)]
Eliminate missing virtual destructor warning on FreeBSD

Akin to r181712 (88e529b7) of Linux/ProcessMonitor.cpp

llvm-svn: 184742

11 years agoUpdate for Linux->POSIX rename
Ed Maste [Mon, 24 Jun 2013 14:51:39 +0000 (14:51 +0000)]
Update for Linux->POSIX rename

Revision r147613 (2341d35) renamed this file with s/Linux/POSIX/, but
header guards and comments were not updated to match.

llvm-svn: 184741

11 years ago[Sema] Call CheckParmForFunctionDef on ObjC method parameters
Reid Kleckner [Mon, 24 Jun 2013 14:38:26 +0000 (14:38 +0000)]
[Sema] Call CheckParmForFunctionDef on ObjC method parameters

CheckParmForFunctionDef performs standard checks for type completeness
and other things like a destructor check for the MSVC++ ABI.

llvm-svn: 184740

11 years ago[sanitizer] Intercept sysinfo.
Evgeniy Stepanov [Mon, 24 Jun 2013 14:25:33 +0000 (14:25 +0000)]
[sanitizer] Intercept sysinfo.

llvm-svn: 184739

11 years agoUsing offsetof to an item within an array is an extension so mark it as such to avoid...
Andy Gibbs [Mon, 24 Jun 2013 14:05:59 +0000 (14:05 +0000)]
Using offsetof to an item within an array is an extension so mark it as such to avoid compiler warnings.

llvm-svn: 184738

11 years agoFix some more mismatched integer types causing compiler warnings.
Andy Gibbs [Mon, 24 Jun 2013 14:04:57 +0000 (14:04 +0000)]
Fix some more mismatched integer types causing compiler warnings.

llvm-svn: 184737

11 years ago[sanitizer] Fix TSan build.
Evgeniy Stepanov [Mon, 24 Jun 2013 14:03:13 +0000 (14:03 +0000)]
[sanitizer] Fix TSan build.

llvm-svn: 184736

11 years ago[sanitizer] Intercept inet_aton.
Evgeniy Stepanov [Mon, 24 Jun 2013 13:56:14 +0000 (13:56 +0000)]
[sanitizer] Intercept inet_aton.

llvm-svn: 184735

11 years ago[msan] Unpoison param-tls in signal handler wrapper.
Evgeniy Stepanov [Mon, 24 Jun 2013 13:48:42 +0000 (13:48 +0000)]
[msan] Unpoison param-tls in signal handler wrapper.

This an entry point from uninstrumented code.

llvm-svn: 184734

11 years agoRemove comment that is no longer applicable
Ed Maste [Mon, 24 Jun 2013 13:29:34 +0000 (13:29 +0000)]
Remove comment that is no longer applicable

Since r181446 the m_private_run_lock has been used for all platforms.

llvm-svn: 184733

11 years agoLook for Python 2 before Python 3 in CMakeLists.txt
Reid Kleckner [Mon, 24 Jun 2013 13:21:16 +0000 (13:21 +0000)]
Look for Python 2 before Python 3 in CMakeLists.txt

All of LLVM's Python scripts only support Python 2 for widely understood
reasons.

Patch by Yonggang Luo.

llvm-svn: 184732

11 years agollvm/test/CodeGen/X86: Add explicit -mtriple=x86_64-unknown-unknown.
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:59 +0000 (13:19 +0000)]
llvm/test/CodeGen/X86: Add explicit -mtriple=x86_64-unknown-unknown.

llvm-svn: 184731

11 years agollvm/test/CodeGen/X86/legalize-shift-64.ll: Add explicit -mtriple=i686-unknown-unknown.
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:52 +0000 (13:19 +0000)]
llvm/test/CodeGen/X86/legalize-shift-64.ll: Add explicit -mtriple=i686-unknown-unknown.

llvm-svn: 184730

11 years agollvm/test/DebugInfo/arguments.ll: Add explicit -mtriple=x86_64-unknown-unknown.
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:47 +0000 (13:19 +0000)]
llvm/test/DebugInfo/arguments.ll: Add explicit -mtriple=x86_64-unknown-unknown.

llvm-svn: 184729

11 years agoNVPTXTargetObjectFile.h: Initialize some pointers as NULL in the constructor of NVPTX...
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:41 +0000 (13:19 +0000)]
NVPTXTargetObjectFile.h: Initialize some pointers as NULL in the constructor of NVPTXTargetObjectFile. ~NVPTXTargetObjectFile() tries to delete them.

It caused crash on some hosts since r184595.

llvm-svn: 184728

11 years agoclang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp: Suppress unexpected failures...
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:26 +0000 (13:19 +0000)]
clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp: Suppress unexpected failures on MS hosts.

FIXME: A couple of tests have been suppressed.
I know it'd be bad with _MSC_VER here, though.

llvm-svn: 184727

11 years agoclang/test/Driver/coverage-ld.c: Tweak expressions to match dosish pathsep on win32...
NAKAMURA Takumi [Mon, 24 Jun 2013 13:19:20 +0000 (13:19 +0000)]
clang/test/Driver/coverage-ld.c: Tweak expressions to match dosish pathsep on win32 hosts.

llvm-svn: 184726

11 years ago[PowerPC] Add t/f branch mnemonics to asm parser
Ulrich Weigand [Mon, 24 Jun 2013 12:49:20 +0000 (12:49 +0000)]
[PowerPC] Add t/f branch mnemonics to asm parser

This adds the bt/bf/bd(n)zt/bd(n)zf mnemonics as aliases for the
asm parser, resolving to the generic conditional patterns.

llvm-svn: 184725

11 years agoReapply 184685 after the SetVector iteration order fix.
Arnold Schwaighofer [Mon, 24 Jun 2013 12:09:15 +0000 (12:09 +0000)]
Reapply 184685 after the SetVector iteration order fix.

This should hopefully have fixed the stage2/stage3 miscompare on the dragonegg
testers.

"LoopVectorize: Use the dependence test utility class

We now no longer need alias analysis - the cases that alias analysis would
handle are now handled as accesses with a large dependence distance.

We can now vectorize loops with simple constant dependence distances.

  for (i = 8; i < 256; ++i) {
    a[i] = a[i+4] * a[i+8];
  }

  for (i = 8; i < 256; ++i) {
    a[i] = a[i-4] * a[i-8];
  }

We would be able to vectorize about 200 more loops (in many cases the cost model
instructs us no to) in the test suite now. Results on x86-64 are a wash.

I have seen one degradation in ammp. Interestingly, the function in which we
now vectorize a loop is never executed so we probably see some instruction
cache effects. There is a 2% improvement in h264ref. There is one or the other
TSCV loop kernel that speeds up.

radar://13681598"

llvm-svn: 184724

11 years agoLoopVectorize: Use SetVector for the access set
Arnold Schwaighofer [Mon, 24 Jun 2013 12:09:12 +0000 (12:09 +0000)]
LoopVectorize: Use SetVector for the access set

We are creating the runtime checks using this set so we need a deterministic
iteration order.

llvm-svn: 184723

11 years ago[PowerPC] Support generic conditional branches in asm parser
Ulrich Weigand [Mon, 24 Jun 2013 11:55:21 +0000 (11:55 +0000)]
[PowerPC] Support generic conditional branches in asm parser

This adds instruction patterns to cover the generic forms of
the conditional branch instructions.  This allows the assembler
to support the generic mnemonics.

The compiler will still generate the various specific forms
of the instruction that were already supported.

llvm-svn: 184722

11 years ago[PowerPC] Support absolute branches
Ulrich Weigand [Mon, 24 Jun 2013 11:03:33 +0000 (11:03 +0000)]
[PowerPC] Support absolute branches

There is currently only limited support for the "absolute" variants
of branch instructions.  This patch adds support for the absolute
variants of all branches that are currently otherwise supported.

This requires adding new fixup types so that the correct variant
of relocation type can be selected by the object writer.

While the compiler will continue to usually choose the relative
branch variants, this will allow the asm parser to fully support
the absolute branches, with either immediate (numerical) or
symbolic target addresses.

No change in code generation intended.

llvm-svn: 184721

11 years ago[PowerPC] Support bd(n)zl and bd(n)zlrl
Ulrich Weigand [Mon, 24 Jun 2013 11:02:38 +0000 (11:02 +0000)]
[PowerPC] Support bd(n)zl and bd(n)zlrl

This adds support for the bd(n)zl and bd(n)zlrl instructions.
The patterns are currently used for the asm parser only.

llvm-svn: 184720

11 years ago[PowerPC] Support b(cond)l in the asm parser
Ulrich Weigand [Mon, 24 Jun 2013 11:02:19 +0000 (11:02 +0000)]
[PowerPC] Support b(cond)l in the asm parser

This patch adds support for the conditional variants of bl.
The pattern is currently used by the asm parser only.

llvm-svn: 184719

11 years ago[PowerPC] Support blrl and variants in the asm parser
Ulrich Weigand [Mon, 24 Jun 2013 11:01:55 +0000 (11:01 +0000)]
[PowerPC] Support blrl and variants in the asm parser

This patch adds support for blrl and its conditional variants.
The patterns are (currently) used for the asm parser only.

llvm-svn: 184718

11 years ago[sanitizer] Intercept readv, preadv, writev, pwritev.
Evgeniy Stepanov [Mon, 24 Jun 2013 10:43:23 +0000 (10:43 +0000)]
[sanitizer] Intercept readv, preadv, writev, pwritev.

llvm-svn: 184717

11 years ago This patch introduces RegisterOperand class into Mips FPU instruction definitions...
Vladimir Medic [Mon, 24 Jun 2013 10:05:34 +0000 (10:05 +0000)]
 This patch introduces RegisterOperand class into Mips FPU instruction definitions and adds dedicated parser methods to MipsAsmParser. It is the first in a series of patches that should fix the problems with parsing Mips FPU instructions and optimize the code in MipsAsmParser.

llvm-svn: 184716

11 years ago[APFloat] Removed trailing whitespace from unittests.
Michael Gottesman [Mon, 24 Jun 2013 09:58:09 +0000 (09:58 +0000)]
[APFloat] Removed trailing whitespace from unittests.

llvm-svn: 184715

11 years ago[APFloat] Added a large unittest for APFloat.add that checks that special values...
Michael Gottesman [Mon, 24 Jun 2013 09:58:07 +0000 (09:58 +0000)]
[APFloat] Added a large unittest for APFloat.add that checks that special values are computed correctly.

llvm-svn: 184714

11 years ago[APFloat] Added support for parsing float strings which contain {inf,-inf,NaN,-NaN}.
Michael Gottesman [Mon, 24 Jun 2013 09:58:05 +0000 (09:58 +0000)]
[APFloat] Added support for parsing float strings which contain {inf,-inf,NaN,-NaN}.

llvm-svn: 184713

11 years ago[APFloat] Added make{Zero,Inf} methods and implemented get{Zero,Inf} on top of them.
Michael Gottesman [Mon, 24 Jun 2013 09:58:02 +0000 (09:58 +0000)]
[APFloat] Added make{Zero,Inf} methods and implemented get{Zero,Inf} on top of them.

llvm-svn: 184712

11 years ago[APFloat] Removed a assert from significandParts() which says that one can only acces...
Michael Gottesman [Mon, 24 Jun 2013 09:57:59 +0000 (09:57 +0000)]
[APFloat] Removed a assert from significandParts() which says that one can only access the significand of FiniteNonZero/NaN floats.

The method significandParts() is a helper method meant to ease access to
APFloat's significand by allowing the user to not need to be aware of whether or
not the APFloat is using memory allocated in the instance itself or in an
external array.

This assert says that one can only access the significand of FiniteNonZero/NaN
floats. This makes it cumbersome and more importantly dangerous when one wishes
to zero out the significand of a zero/infinity value since one will have to deal
with the aforementioned quandary related to how the memory in APFloat is
allocated.

llvm-svn: 184711

11 years ago[APFloat] Rename macro convolve => PackCategoriesIntoKey so that it is clear what...
Michael Gottesman [Mon, 24 Jun 2013 09:57:57 +0000 (09:57 +0000)]
[APFloat] Rename macro convolve => PackCategoriesIntoKey so that it is clear what APFloat is actually using said macro for.

In the context of APFloat, seeing a macro called convolve suggests that APFloat
is using said value in some sort of convolution somewhere in the source code.
This is misleading.

I also added a documentation comment to the macro.

llvm-svn: 184710

11 years agoAdd -mcpu to some unit tests that only fail on certain hosts.
Andrew Trick [Mon, 24 Jun 2013 09:51:30 +0000 (09:51 +0000)]
Add -mcpu to some unit tests that only fail on certain hosts.

llvm-svn: 184709

11 years agoThe profile library must come before the C library so that it can use
Chandler Carruth [Mon, 24 Jun 2013 09:38:45 +0000 (09:38 +0000)]
The profile library must come before the C library so that it can use
atexit.

llvm-svn: 184708

11 years agoARM: check predicate bits for thumb instructions
Amaury de la Vieuville [Mon, 24 Jun 2013 09:15:01 +0000 (09:15 +0000)]
ARM: check predicate bits for thumb instructions

When encoded to thumb, VFP instruction and VMOV/VDUP between scalar and
core registers, must have their predicate bit to 0b1110.

llvm-svn: 184707

11 years agoARM: rGPR is meant to be unpredictable, not undefined
Amaury de la Vieuville [Mon, 24 Jun 2013 09:14:54 +0000 (09:14 +0000)]
ARM: rGPR is meant to be unpredictable, not undefined

llvm-svn: 184706

11 years agoTemporarily enable MI-Sched on X86.
Andrew Trick [Mon, 24 Jun 2013 09:13:20 +0000 (09:13 +0000)]
Temporarily enable MI-Sched on X86.

Sorry for the unit test churn. I'll try to make the change permanently
next time.

llvm-svn: 184705

11 years ago[lsan] Fix android build.
Sergey Matveev [Mon, 24 Jun 2013 09:12:11 +0000 (09:12 +0000)]
[lsan] Fix android build.

llvm-svn: 184704

11 years agoARM: fix thumb1 nop decoding
Amaury de la Vieuville [Mon, 24 Jun 2013 09:11:53 +0000 (09:11 +0000)]
ARM: fix thumb1 nop decoding

In thumb1, NOP is a pseudo-instruction equivalent to mov r8, r8.
However the disassembler should not use this alias.

llvm-svn: 184703

11 years agoARM: fix IT decoding
Amaury de la Vieuville [Mon, 24 Jun 2013 09:11:45 +0000 (09:11 +0000)]
ARM: fix IT decoding

mask == 0 -> UNPRED

llvm-svn: 184702

11 years agoARM: enable decoding of pc-relative PLD/PLI
Amaury de la Vieuville [Mon, 24 Jun 2013 09:11:38 +0000 (09:11 +0000)]
ARM: enable decoding of pc-relative PLD/PLI

llvm-svn: 184701

11 years agoRevert to C-style callbacks for iteration over allocator chunks.
Sergey Matveev [Mon, 24 Jun 2013 08:34:50 +0000 (08:34 +0000)]
Revert to C-style callbacks for iteration over allocator chunks.

Also clean up LSan code, fix some comments and replace void* with uptr
to bring down the number of reinterpret_casts.

llvm-svn: 184700

11 years agoUpdate CLooG such that the isl test cases are really up to date
Tobias Grosser [Mon, 24 Jun 2013 07:38:29 +0000 (07:38 +0000)]
Update CLooG such that the isl test cases are really up to date

llvm-svn: 184699

11 years agoAdd a flag to defer vectorization into a phase after the inliner and its
Chandler Carruth [Mon, 24 Jun 2013 07:21:47 +0000 (07:21 +0000)]
Add a flag to defer vectorization into a phase after the inliner and its
CGSCC pass manager. This should insulate the inlining decisions from the
vectorization decisions, however it may have both compile time and code
size problems so it is just an experimental option right now.

Adding this based on a discussion with Arnold and it seems at least
worth having this flag for us to both run some experiments to see if
this strategy is workable. It may solve some of the regressions seen
with the loop vectorizer.

llvm-svn: 184698

11 years agoFilter out dragonegg when checked out into a projects subdirectory.
Chandler Carruth [Mon, 24 Jun 2013 07:21:35 +0000 (07:21 +0000)]
Filter out dragonegg when checked out into a projects subdirectory.
There is some hope of eventually supporting a unified build with it, but
until then this lets me (and others) check it out in this location
without things breaking.

llvm-svn: 184697

11 years agoAvoid adding entries to the DeclContext lookup table multiple times when lazily
Richard Smith [Mon, 24 Jun 2013 07:20:36 +0000 (07:20 +0000)]
Avoid adding entries to the DeclContext lookup table multiple times when lazily
constructing a lookup table.

Previously, buildLookup would add lookup table entries for each item lexically
within the DC, and adding the first entry with a given name would trigger the
external source to add all its entries with that name. Then buildLookup would
carry on and re-add those entries all over again.

Instead, follow a simple rule: a declaration from an external source is only
ever made visible by the external source. One exception to this: since we don't
usually build a lookup table for the TU in C, and we never serialize one, we
don't expect the external source to provide lookups in the TU in C, so we build
those ones ourselves.

llvm-svn: 184696

11 years agoDebugInfo: ensure negative enumerators are emitted as such
David Blaikie [Mon, 24 Jun 2013 07:13:13 +0000 (07:13 +0000)]
DebugInfo: ensure negative enumerators are emitted as such

There's still a problem here - since we're not appropriately using the
signedness/range of the enum to chooset the encoding and emission of
enumerators, but GCC has some bugs around this too so I assume that's
not /such/ a high priority though I may get to it soon out of
completeness.

llvm-svn: 184695

11 years agoDebugInfo: enumerator values returned as int64 as they are stored
David Blaikie [Mon, 24 Jun 2013 07:11:08 +0000 (07:11 +0000)]
DebugInfo: enumerator values returned as int64 as they are stored

llvm-svn: 184694

11 years agoDebugInfo: Merge a bad debug info enum test into a good one
David Blaikie [Mon, 24 Jun 2013 06:47:30 +0000 (06:47 +0000)]
DebugInfo: Merge a bad debug info enum test into a good one

The assembly generation testing has been moved to an LLVM test case.

llvm-svn: 184693

11 years agoDebugInfo: add some testing from an overly broad end-to-end test in Clang
David Blaikie [Mon, 24 Jun 2013 06:47:22 +0000 (06:47 +0000)]
DebugInfo: add some testing from an overly broad end-to-end test in Clang

llvm-svn: 184692

11 years agoFix typo in assertion message. Reported by Shriramana Sharma.
Dmitri Gribenko [Mon, 24 Jun 2013 06:15:57 +0000 (06:15 +0000)]
Fix typo in assertion message.  Reported by Shriramana Sharma.

llvm-svn: 184691

11 years agoRevert "LoopVectorize: Use the dependence test utility class"
Arnold Schwaighofer [Mon, 24 Jun 2013 06:10:41 +0000 (06:10 +0000)]
Revert "LoopVectorize: Use the dependence test utility class"

This reverts commit cbfa1ca993363ca5c4dbf6c913abc957c584cbac.

We are seeing a stage2 and stage3 miscompare on some dragonegg bots.

llvm-svn: 184690

11 years agoSlightly improve cross-module merging for function templates.
Richard Smith [Mon, 24 Jun 2013 04:45:28 +0000 (04:45 +0000)]
Slightly improve cross-module merging for function templates.

llvm-svn: 184689

11 years agoComment parsing: allow "\param ..." to describe variadic arguments
Dmitri Gribenko [Mon, 24 Jun 2013 04:41:32 +0000 (04:41 +0000)]
Comment parsing: allow "\param ..." to describe variadic arguments

Original patch by Fariborz Jahanian; extended by me.

Fixes rdar://14124644

llvm-svn: 184688

11 years ago[APFloat] Removed out of date comment from isNormal().
Michael Gottesman [Mon, 24 Jun 2013 04:19:37 +0000 (04:19 +0000)]
[APFloat] Removed out of date comment from isNormal().

I already finished the isIEEENormal => isNormal transition. So isNormal is now
IEEE-754R compliant.

llvm-svn: 184687

11 years ago[APFloat] Rename llvm::exponent_t => llvm::APFloat::ExponentType.
Michael Gottesman [Mon, 24 Jun 2013 04:06:23 +0000 (04:06 +0000)]
[APFloat] Rename llvm::exponent_t => llvm::APFloat::ExponentType.

exponent_t is only used internally in APFloat and no exponent_t values are
exposed via the APFloat API. In light of such conditions it does not make any
sense to gum up the llvm namespace with said type. Plus it makes it clearer that
exponent_t is associated with APFloat.

llvm-svn: 184686

11 years agoLoopVectorize: Use the dependence test utility class
Arnold Schwaighofer [Mon, 24 Jun 2013 03:55:48 +0000 (03:55 +0000)]
LoopVectorize: Use the dependence test utility class

We now no longer need alias analysis - the cases that alias analysis would
handle are now handled as accesses with a large dependence distance.

We can now vectorize loops with simple constant dependence distances.

  for (i = 8; i < 256; ++i) {
    a[i] = a[i+4] * a[i+8];
  }

  for (i = 8; i < 256; ++i) {
    a[i] = a[i-4] * a[i-8];
  }

We would be able to vectorize about 200 more loops (in many cases the cost model
instructs us no to) in the test suite now. Results on x86-64 are a wash.

I have seen one degradation in ammp. Interestingly, the function in which we
now vectorize a loop is never executed so we probably see some instruction
cache effects. There is a 2% improvement in h264ref. There is one or the other
TSCV loop kernel that speeds up.

radar://13681598

llvm-svn: 184685

11 years agoLoopVectorize: Add utility class for checking dependency among accesses
Arnold Schwaighofer [Mon, 24 Jun 2013 03:55:45 +0000 (03:55 +0000)]
LoopVectorize: Add utility class for checking dependency among accesses

This class checks dependences by subtracting two Scalar Evolution access
functions allowing us to catch very simple linear dependences.

The checker assumes source order in determining whether vectorization is safe.
We currently don't reorder accesses.
Positive true dependencies need to be a multiple of VF otherwise we impede
store-load forwarding.

llvm-svn: 184684

11 years agoLoopVectorize: Add utility class for building sets of dependent accesses
Arnold Schwaighofer [Mon, 24 Jun 2013 03:55:44 +0000 (03:55 +0000)]
LoopVectorize: Add utility class for building sets of dependent accesses

Sets of dependent accesses are built by unioning sets based on underlying
objects. This class will be used by the upcoming dependence checker.

llvm-svn: 184683

11 years ago[lld] rename member variable name.
Shankar Easwaran [Mon, 24 Jun 2013 03:22:51 +0000 (03:22 +0000)]
[lld] rename member variable name.

This renames variable name to reflect initial undefined symbols that are
defined by the linker -u option.

This doesnot change any functionality in lld, and updates code to reflect
Nick's comment.

llvm-svn: 184682

11 years agoSLP Vectorizer: Add support for vectorizing parts of the tree.
Nadav Rotem [Mon, 24 Jun 2013 02:52:43 +0000 (02:52 +0000)]
SLP Vectorizer: Add support for vectorizing parts of the tree.

Untill now we detected the vectorizable tree and evaluated the cost of the
entire tree.  With this patch we can decide to trim-out branches of the tree
that are not profitable to vectorizer.

Also, increase the max depth from 6 to 12. In the worse possible case where all
of the code is made of diamond-shaped graph this can bring the cost to 2**10,
but diamonds are not very common.

llvm-svn: 184681

11 years agoFix tail merging to assign the (more) correct BasicBlock when splitting.
Andrew Trick [Mon, 24 Jun 2013 01:55:01 +0000 (01:55 +0000)]
Fix tail merging to assign the (more) correct BasicBlock when splitting.

This makes it possible to write unit tests that are less susceptible
to minor code motion, particularly copy placement. block-placement.ll
covers this case with -pre-RA-sched=source which will soon be
default. One incorrectly named block is already fixed, but without
this fix, enabling new coalescing and scheduling would cause more
failures.

llvm-svn: 184680

11 years agoWhen setting the external visible declarations for a decl context, check
Richard Smith [Mon, 24 Jun 2013 01:46:41 +0000 (01:46 +0000)]
When setting the external visible declarations for a decl context, check
whether they replace any existing lookups in the context, rather than
accumulating a bunch of lookup results referring to the same entity.

llvm-svn: 184679

11 years agoAdd -ast-dump-lookups switch to -cc1 to dump DeclContext lookup maps. Test to
Richard Smith [Mon, 24 Jun 2013 01:45:33 +0000 (01:45 +0000)]
Add -ast-dump-lookups switch to -cc1 to dump DeclContext lookup maps. Test to
follow.

llvm-svn: 184678

11 years agoMove comment on Sema::isFunctionPointerVarDecl() to the header file
Dmitri Gribenko [Mon, 24 Jun 2013 01:33:34 +0000 (01:33 +0000)]
Move comment on Sema::isFunctionPointerVarDecl() to the header file

llvm-svn: 184677

11 years agoDocumentation parsing: recognize \relates, \related, \relatesonly, \relatedonly
Dmitri Gribenko [Sun, 23 Jun 2013 23:33:14 +0000 (23:33 +0000)]
Documentation parsing: recognize \relates, \related, \relatesonly, \relatedonly
so that -Wdocumentation-unknown-command does not warn on these commands.
Fixes PR16092.

llvm-svn: 184676

11 years agoArrayRef'ize Sema::CodeCompleteConstructorInitializer
Dmitri Gribenko [Sun, 23 Jun 2013 22:58:02 +0000 (22:58 +0000)]
ArrayRef'ize Sema::CodeCompleteConstructorInitializer

Patch by Robert Wilhelm.

llvm-svn: 184675

11 years agoSLP Vectorizer: Fix a bug in the code that does CSE on the generated gather sequences.
Nadav Rotem [Sun, 23 Jun 2013 21:57:27 +0000 (21:57 +0000)]
SLP Vectorizer: Fix a bug in the code that does CSE on the generated gather sequences.
Make sure that we don't replace and RAUW two sequences if one does not dominate the other.

llvm-svn: 184674

11 years agoImplement full support for non-pointer pointers in custom allocators for deque.
Howard Hinnant [Sun, 23 Jun 2013 21:17:24 +0000 (21:17 +0000)]
Implement full support for non-pointer pointers in custom allocators for deque.

llvm-svn: 184673

11 years agoI'd no sooner made the last commit when Matthew Dempsky sent me another test case...
Howard Hinnant [Sun, 23 Jun 2013 19:52:45 +0000 (19:52 +0000)]
I'd no sooner made the last commit when Matthew Dempsky sent me another test case that led me to yet another closely related test case that the current design could not handle.  I've now changed the way forward references are handled completely.  It wasn't that much code to change.  The demangler, when confronted with a forward reference to a template parameter, now parses things twice.  During the second parse, all forward references are remembered from the first parse.  Test suite updated with new case.

llvm-svn: 184672

11 years agoSLP Vectorizer: Erase instructions outside the vectorizeTree method.
Nadav Rotem [Sun, 23 Jun 2013 19:38:56 +0000 (19:38 +0000)]
SLP Vectorizer: Erase instructions outside the vectorizeTree method.
The RAII builder location guard is saving a reference to instructions, so we can't erase instructions during vectorization.

llvm-svn: 184671

11 years agoDebugInfo: PR14404: Avoid truncating 64 bit values into 32 bits for ULEB128/SLEB128...
David Blaikie [Sun, 23 Jun 2013 18:31:11 +0000 (18:31 +0000)]
DebugInfo: PR14404: Avoid truncating 64 bit values into 32 bits for ULEB128/SLEB128 generation

llvm-svn: 184669

11 years agoAfter a private conversation with Arthur O'Dwyer, and a good night's sleep, I believe...
Howard Hinnant [Sun, 23 Jun 2013 17:14:35 +0000 (17:14 +0000)]
After a private conversation with Arthur O'Dwyer, and a good night's sleep, I believe this fix is a better fix than what I committed in r184656 yesterday.  I've basically moved the checking for '`' from the start of the demangling process to the end of it.  In the process I discovered that one of the test cases no longer demangled to the expected string.  After further investigation I believe this case to not be a valid mangled string, and so I moved the test case to the 'invalid cases'.  The reason I believe it is invalid is that it should use T_ instead of T0_ to index the template parameter.

llvm-svn: 184668

11 years agoAArch64: fix overzealous NEXTing for Windows testing.
Tim Northover [Sun, 23 Jun 2013 15:32:01 +0000 (15:32 +0000)]
AArch64: fix overzealous NEXTing for Windows testing.

llvm-svn: 184667

11 years agoFix the addition of Clang's profile runtime library to the link step
Chandler Carruth [Sun, 23 Jun 2013 11:28:48 +0000 (11:28 +0000)]
Fix the addition of Clang's profile runtime library to the link step
when specifying --coverage (or related) flags.

The system for doing this was based on the old LLVM-hosted profile_rt
library, and hadn't been updated for Linux to use the new compiler-rt
library. Also, it couldn't possibly work on multiarch or biarch systems
in many cases. The whole thing now works much the same as the sanitizer
libraries that are built and used out of the compiler-rt repo.

Note that other target OSes haven't been updated because I don't know if
they're doing anything special with the installation path of profile_rt.
I suspect however that *all* of these are wrong and would encourage
maintainers of each target to take a hard look at how compiler-rt
runtime libraries are linked on their platforms.

llvm-svn: 184666

11 years agoThe makefile build system had two lists of the 32-bit runtime libraries
Chandler Carruth [Sun, 23 Jun 2013 10:10:25 +0000 (10:10 +0000)]
The makefile build system had two lists of the 32-bit runtime libraries
to build and one had grown out of sync. Put this list in a variable so
this doesn't happen again.

The whole thing here is somewhat suspicious as we don't support 32-bit
environments with a 64-bit bi-arch capable compiler, but none have
complained yet about this so I'm just leaving it alone.

llvm-svn: 184665

11 years agoAdd MI-Sched support for x86 macro fusion.
Andrew Trick [Sun, 23 Jun 2013 09:00:28 +0000 (09:00 +0000)]
Add MI-Sched support for x86 macro fusion.

This is an awful implementation of the target hook. But we don't have
abstractions yet for common machine ops, and I don't see any quick way
to make it table-driven.

llvm-svn: 184664

11 years agoSlightly loosen the test as there are other linker invocation patterns.
Chandler Carruth [Sun, 23 Jun 2013 08:39:08 +0000 (08:39 +0000)]
Slightly loosen the test as there are other linker invocation patterns.

llvm-svn: 184663

11 years agoAdd and tighten up tests for cross compiling tool selection. This now
Chandler Carruth [Sun, 23 Jun 2013 08:24:15 +0000 (08:24 +0000)]
Add and tighten up tests for cross compiling tool selection. This now
verifies that we run the assembler and linker in the correct mode, and
that we can successfully use a bi-arch variant of a GCC installation in
a generic cross compilation invocation of Clang.

llvm-svn: 184662

11 years agoAdd null check (resolves PR16423)
Stephen Lin [Sun, 23 Jun 2013 07:37:13 +0000 (07:37 +0000)]
Add null check (resolves PR16423)

llvm-svn: 184661

11 years agoSLP Vectorizer: Implement a simple CSE optimization for the gather sequences.
Nadav Rotem [Sun, 23 Jun 2013 06:15:46 +0000 (06:15 +0000)]
SLP Vectorizer: Implement a simple CSE optimization for the gather sequences.

llvm-svn: 184660

11 years agoFix my own formatting mistakes
Tobias Grosser [Sun, 23 Jun 2013 06:04:54 +0000 (06:04 +0000)]
Fix my own formatting mistakes

llvm-svn: 184659

11 years agoScopInfo: Clarify may-write and must-write accesses
Tobias Grosser [Sun, 23 Jun 2013 05:21:18 +0000 (05:21 +0000)]
ScopInfo: Clarify may-write and must-write accesses

llvm-svn: 184658

11 years agoAST: Clean up FriendObjectKind related decls
David Majnemer [Sun, 23 Jun 2013 03:38:10 +0000 (03:38 +0000)]
AST: Clean up FriendObjectKind related decls

Allow the comments in the FriendObjectKind enumerator-list show up in
doxygen. Also, some small readability improvements in related functions.

llvm-svn: 184657

11 years agoFilter out '`' in mangled strings and reject them as invalid if found.
Howard Hinnant [Sun, 23 Jun 2013 03:36:38 +0000 (03:36 +0000)]
Filter out '`' in mangled strings and reject them as invalid if found.

llvm-svn: 184656

11 years agoIntegrate latest clang-format changes
Tobias Grosser [Sun, 23 Jun 2013 01:29:29 +0000 (01:29 +0000)]
Integrate latest clang-format changes

llvm-svn: 184655

11 years ago[PECOFF] Moves a utility function to Atoms.cpp to remove duplicate code.
Rui Ueyama [Sat, 22 Jun 2013 23:14:51 +0000 (23:14 +0000)]
[PECOFF] Moves a utility function to Atoms.cpp to remove duplicate code.

llvm-svn: 184653