8 years agoAdd a clang-format file so that the tool can automatically detect the
Chandler Carruth [Mon, 2 Sep 2013 07:19:04 +0000 (07:19 +0000)]
Add a clang-format file so that the tool can automatically detect the
correct style for the LLVM tree as well as projects checked out under
projects and tools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189737 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAVX-512: gather-scatter tests; added foldable instructions;
Elena Demikhovsky [Mon, 2 Sep 2013 07:12:29 +0000 (07:12 +0000)]
AVX-512: gather-scatter tests; added foldable instructions;
Specify GATHER/SCATTER as heavy instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189736 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agollvm interpreter: select, shuffle and insertelement instructions.
Elena Demikhovsky [Mon, 2 Sep 2013 06:40:09 +0000 (06:40 +0000)]
llvm interpreter: select, shuffle and insertelement instructions.
This patch implements vector support for  select instruction and adds specific vector instructions : shuffle and insertelement. (tests are also included)
and functions lle_X_memset, lle_X_memcpy added.

Done by Veselov, Yuri (mailto:Yuri.Veselov@intel.com)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189735 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix some rather confusing indentation and control flow in the errno
Chandler Carruth [Mon, 2 Sep 2013 05:55:10 +0000 (05:55 +0000)]
Fix some rather confusing indentation and control flow in the errno
printing routine. This is made harder to see due to the surprising
formatting, inconsistent brace usage, and repeated conditions that all
test the same thing.

The only "consequence" of this bug is re-assigning 'str' to an empty
string when computing the error string for an error number of 0 in the
event of a non-GNU strerror_r routine. So, nothing to see here other
than cleanup. It did help me find PR17055 in clang-format though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189734 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdded std:: qualifier to find() invocation
Dmitri Gribenko [Mon, 2 Sep 2013 01:18:56 +0000 (01:18 +0000)]
Added std:: qualifier to find() invocation

Iterator of std::vector may be implemented as a raw pointer. In
this case ADL does not find the find() function in the std namespace.
For example, this is the case with STDCXX implementation of vector.

Patch by Konstantin Tokarev.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189733 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoNuke the hilariously out of date suggestion to unpack llvm-gcc 4.2 as
Chandler Carruth [Sun, 1 Sep 2013 23:42:27 +0000 (23:42 +0000)]
Nuke the hilariously out of date suggestion to unpack llvm-gcc 4.2 as
part of getting started with LLVM.

The LLVM getting started document is in woeful need of attention. I may
get to some of this, but some random notes for folks interested:

1) We need to separate the getting started steps for folks who are
   interested in the core LLVM libs and nothing else, folks interested
   in a nifty C++ toolchain and nothing else, and folks interested in
2) We should include documentation for both release archives, svn, and
   git in equal portion, and we should document all of the various
   repositories of interest: llvm, clang, clang-tools-extra,
   compiler-rt, lld, libcxx, test-suite.
3) We should document the CMake build. We should probably document the
   CMake build first, and give a fall-back set of docs for the Makefile
   build for the use cases where that is still the preferred solution.
   This would more closely match the use cases that folks in the open
   source community are likely to have, and would remove a point of
   discrepancy between Linux, Windows, and Mac instructions.
4) Probably a ton of other modernization stuff that I've not thought of

Anyways, if anyone at all is interested, please help clean up this
document. It is much needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189732 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert r189704, which removed the guidance about not duplicating doc comments.
Chris Lattner [Sun, 1 Sep 2013 15:48:08 +0000 (15:48 +0000)]
Revert r189704, which removed the guidance about not duplicating doc comments.
This is under active discussion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189730 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAVX-512: Added GATHER and SCATTER instructions.
Elena Demikhovsky [Sun, 1 Sep 2013 14:24:41 +0000 (14:24 +0000)]
AVX-512: Added GATHER and SCATTER instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189729 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMove everything depending on Object/MachOFormat.h over to Support/MachO.h.
Charles Davis [Sun, 1 Sep 2013 04:28:48 +0000 (04:28 +0000)]
Move everything depending on Object/MachOFormat.h over to Support/MachO.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189728 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMake sure we don't generate stubs for any of these functions because they
Reed Kotler [Sun, 1 Sep 2013 04:12:59 +0000 (04:12 +0000)]
Make sure we don't generate stubs for any of these functions because they
don't exist in libc. This is really not the right way to solve this problem;
but it's not clear to me at this time exactly what is the right way.
If we create stubs here, they will cause link errors because these functions
do not exist in libc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189727 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMark an unreachable code path with llvm_unreachable. Pacifies GCC.
Benjamin Kramer [Sat, 31 Aug 2013 21:20:04 +0000 (21:20 +0000)]
Mark an unreachable code path with llvm_unreachable. Pacifies GCC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189726 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFree PressureDiffs instead of leaking.
Benjamin Kramer [Sat, 31 Aug 2013 20:10:01 +0000 (20:10 +0000)]
Free PressureDiffs instead of leaking.

Found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189725 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSimplifyLibCalls: When emitting an overloaded fp function check that it's available.
Benjamin Kramer [Sat, 31 Aug 2013 18:19:35 +0000 (18:19 +0000)]
SimplifyLibCalls: When emitting an overloaded fp function check that it's available.

The existing code missed some edge cases when e.g. we're going to emit sqrtf but
only the availability of sqrt was checked. This happens on odd platforms like

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189724 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix my previous checkin to updatePressureDiffs.
Andrew Trick [Sat, 31 Aug 2013 05:17:58 +0000 (05:17 +0000)]
Fix my previous checkin to updatePressureDiffs.

There was one case that we could hit a DebugValue where I didn't think
to check. DebugValues are evil. No checkinable test case, sorry. It's
an obvious fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189717 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Fast-isel cleanup patch.
Bill Schmidt [Sat, 31 Aug 2013 02:33:40 +0000 (02:33 +0000)]
[PowerPC] Fast-isel cleanup patch.

Here are a few miscellaneous things to tidy up the PPC64 fast-isel
implementation.  I corrected a couple of commentary lapses, and added
documentation of future opportunities.  I also implemented
TargetMaterializeAlloca, which I somehow forgot when I split up the
original huge patch.

Finally, I decided to delete SelectCmp.  I hadn't previously hooked it
in to TargetSelectInstruction(), and when I did I realized it wasn't
serving any useful purpose.  This is only useful for compares that
don't feed a branch in the same block, and to handle that we would
have to have logic to interpret i1 as a condition register.  This
could probably be done, but would require Unseemly Hackery, and
honestly does not seem worth the hassle.

This ends the current patch series.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189715 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Add integer truncation support to fast-isel.
Bill Schmidt [Fri, 30 Aug 2013 23:31:33 +0000 (23:31 +0000)]
[PowerPC] Add integer truncation support to fast-isel.

This is the last substantive patch I'm planning for fast-isel in the
near future, adding fast selection of integer truncates.  There are
certainly more things that can be improved (many of which are called
out in FIXMEs), but for now we are catching most of the important

I'll document some of the remaining work in a cleanup patch shortly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189706 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCorrect partially defined variable
Bill Schmidt [Fri, 30 Aug 2013 23:25:30 +0000 (23:25 +0000)]
Correct partially defined variable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189705 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove the suggestion to not duplicate comments in header and
Chris Lattner [Fri, 30 Aug 2013 23:06:20 +0000 (23:06 +0000)]
Remove the suggestion to not duplicate comments in header and
implementation files.  While doc generation systems don't need this,
humans do benefit from it.  Not everyone reads all code through doxygen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189704 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Call support for fast-isel.
Bill Schmidt [Fri, 30 Aug 2013 22:18:55 +0000 (22:18 +0000)]
[PowerPC] Call support for fast-isel.

This patch adds fast-isel support for calls (but not intrinsic calls
or varargs calls).  It also removes a badly-formed assert.  There are
some new tests just for calls, and also for folding loads into
arguments on calls to avoid extra extends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189701 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBuild fix
Richard Mitton [Fri, 30 Aug 2013 21:32:42 +0000 (21:32 +0000)]
Build fix

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189699 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFixed a bug where diassembling an instruction that had a prefix would cause LLVM...
Richard Mitton [Fri, 30 Aug 2013 21:19:48 +0000 (21:19 +0000)]
Fixed a bug where diassembling an instruction that had a prefix would cause LLVM to identify a 1-byte instruction, but then upon querying it for that 1-byte instruction would cause an undefined opcode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189698 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoCompulsive reformatting.
Bill Wendling [Fri, 30 Aug 2013 21:07:33 +0000 (21:07 +0000)]
Compulsive reformatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189697 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[conf] Add config variable to disable crash related overrides.
Daniel Dunbar [Fri, 30 Aug 2013 20:39:21 +0000 (20:39 +0000)]
[conf] Add config variable to disable crash related overrides.

 - We do some nasty things w.r.t. installing or overriding signal handlers in
   order to improve our crash recovery support or interaction with crash
   reporting software, and those things are not necessarily appropriate when
   LLVM is being linked into a client application that has its own ideas about
   how to do things. This gives those clients a way to disable that handling at
   build time.

 - Currently, the code this guards is all Apple specific, but other platforms
   might have the same concerns so I went for a more generic configure
   name. Someone who is more familiar with library embedding on Windows can
   handle choosing which of the Windows/Signals.inc behaviors might make sense
   to go under this flag.

 - This also fixes the proper autoconf'ing of ENABLE_BACKTRACES. The code
   expects it to be undefined when disabled, but the autoconf check was just
   defining it to 0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189694 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix a problem with dual mips16/mips32 mode. When the underlying processor
Reed Kotler [Fri, 30 Aug 2013 19:40:56 +0000 (19:40 +0000)]
Fix a problem with dual mips16/mips32 mode. When the underlying processor
has hard float, when you compile the mips32 code you have to make sure
that it knows to compile any mips32 routines as hard float. I need to clean
up the way mips16 hard float is specified but I need to first think through
all the details. Mips16 always has a form of soft float, the difference being
whether the underlying hardware has floating point. So it's not really
necessary to pass the -soft-float to llvm since soft-float is always true
for mips16 by virtue of the fact that it will not register floating point
registers. By using this fact, I can simplify the way this is all handled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189690 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse LiveRangeQuery for instruction-level liveness queries.
Andrew Trick [Fri, 30 Aug 2013 17:58:49 +0000 (17:58 +0000)]
Use LiveRangeQuery for instruction-level liveness queries.

Remove redundant or bug-prone LiveInterval APIs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189685 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Add handling for conversions to fast-isel.
Bill Schmidt [Fri, 30 Aug 2013 15:18:11 +0000 (15:18 +0000)]
[PowerPC] Add handling for conversions to fast-isel.

Yet another chunk of fast-isel code.  This one handles various
conversions involving floating-point.  (It also includes some
miscellaneous handling throughout the back end for LWA_32 and LWAX_32
that should have been part of the load-store patch.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189677 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoChecking commit access; removed one space added in previous test checkin by Jim
Andrey Churbanov [Fri, 30 Aug 2013 14:40:24 +0000 (14:40 +0000)]
Checking commit access; removed one space added in previous test checkin by Jim

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189673 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoInstCombine: Check for zero shift amounts before subtracting one causing integer...
Benjamin Kramer [Fri, 30 Aug 2013 14:35:35 +0000 (14:35 +0000)]
InstCombine: Check for zero shift amounts before subtracting one causing integer overflow.

PR17026. Also avoid undefined shifts and shift amounts larger than 64 bits
(those are always undef because we can't represent integer types that large).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189672 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoX86: Add a description of the Intel Atom Silvermont CPU.
Benjamin Kramer [Fri, 30 Aug 2013 14:05:32 +0000 (14:05 +0000)]
X86: Add a description of the Intel Atom Silvermont CPU.

Currently this is just the atom model with SSE4.2 enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189669 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRestore llvm-ranlib expansion in RUN-lines removed in r184019
Alexey Samsonov [Fri, 30 Aug 2013 12:53:22 +0000 (12:53 +0000)]
Restore llvm-ranlib expansion in RUN-lines removed in r184019

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189665 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFixup BZHI selection to remove an unneeded zero extension.
Craig Topper [Fri, 30 Aug 2013 07:16:16 +0000 (07:16 +0000)]
Fixup BZHI selection to remove an unneeded zero extension.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189656 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove unused X86andn_flag node.
Craig Topper [Fri, 30 Aug 2013 07:06:26 +0000 (07:06 +0000)]
Remove unused X86andn_flag node.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189654 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTeach X86 backend to create BMI2 BZHI instructions from (and X, (add (shl 1, Y),...
Craig Topper [Fri, 30 Aug 2013 06:52:21 +0000 (06:52 +0000)]
Teach X86 backend to create BMI2 BZHI instructions from (and X, (add (shl 1, Y), -1)). Fixes PR17038.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189653 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "ARM: Improve pattern for isel mul of vector by scalar."
Michael Gottesman [Fri, 30 Aug 2013 05:36:14 +0000 (05:36 +0000)]
Revert "ARM: Improve pattern for isel mul of vector by scalar."

This reverts commit r189619.

The commit was breaking the arm_neon_intrinsic test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189648 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agomi-sched: update PressureDiffs on-the-fly for liveness.
Andrew Trick [Fri, 30 Aug 2013 04:36:57 +0000 (04:36 +0000)]
mi-sched: update PressureDiffs on-the-fly for liveness.

This removes all expensive pressure tracking logic from the scheduling
critical path of node comparison.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189643 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReplace LiveInterval::killedAt with isKilledAtInstr.
Andrew Trick [Fri, 30 Aug 2013 04:31:01 +0000 (04:31 +0000)]
Replace LiveInterval::killedAt with isKilledAtInstr.

Return true for LRGs that end at EarlyClobber or Register slots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189642 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago mi-sched: improve the generic register pressure comparison.
Andrew Trick [Fri, 30 Aug 2013 04:27:29 +0000 (04:27 +0000)]
 mi-sched: improve the generic register pressure comparison.

Only compare pressure within the same set. When multiple sets are
affected, we prioritize the most constrained set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189641 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agomi-sched: Precompute a PressureDiff for each instruction, adjust for liveness later.
Andrew Trick [Fri, 30 Aug 2013 03:49:48 +0000 (03:49 +0000)]
mi-sched: Precompute a PressureDiff for each instruction, adjust for liveness later.

Created SUPressureDiffs array to hold the per node PDiff computed during DAG building.

Added a getUpwardPressureDelta API that will soon replace the old
one. Compute PressureDelta here from the precomputed PressureDiffs.

Updating for liveness will come next.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189640 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Handle selection of compare instructions in fast-isel.
Bill Schmidt [Fri, 30 Aug 2013 03:16:48 +0000 (03:16 +0000)]
[PowerPC] Handle selection of compare instructions in fast-isel.

Mostly trivial patch adding support for compares.  The meat of the
work was added with the branch support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189639 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove bogus debug statement. Sheesh.
Bill Schmidt [Fri, 30 Aug 2013 03:07:11 +0000 (03:07 +0000)]
Remove bogus debug statement.  Sheesh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189638 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Miscellaneous fast-isel test cases.
Bill Schmidt [Fri, 30 Aug 2013 02:43:08 +0000 (02:43 +0000)]
[PowerPC] Miscellaneous fast-isel test cases.

Here are a few more tests that now pass after the recent fast-isel

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189637 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] Add loads, stores, and related things to fast-isel.
Bill Schmidt [Fri, 30 Aug 2013 02:29:45 +0000 (02:29 +0000)]
[PowerPC] Add loads, stores, and related things to fast-isel.

This is the next big chunk of fast-isel code.  The primary purpose is
to implement selection of loads and stores, but there is a lot of
drag-along to support this.  The common code to analyze addresses for
both loads and stores is substantial.  It's also necessary to add the
materialization code for global values.

Related to load-store processing is the code to fold loads into
integer extends, since otherwise we generate lots of redundant
instructions.  We also need to add some overrides to some FastEmit
routines to ensure we don't assign GPR 0 to a virtual register when
this would change the meaning of an instruction.

I added handling selection of a few binary arithmetic instructions, to
enable committing some test cases I wrote a while back.

Finally, ap couple of miscellaneous changes:
 * I cleaned up some poor style from a previous patch in
   PPCISelLowering.cpp, pointed out by David Blaikie.
 * I enlarged the Addr.Offset field to avoid sign problems with 32-bit

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189636 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agocomment typo
Andrew Trick [Fri, 30 Aug 2013 02:02:12 +0000 (02:02 +0000)]
comment typo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189635 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRandom cleanup: No need to use a std::vector here, since createInternalizePass uses...
Bill Wendling [Fri, 30 Aug 2013 00:48:37 +0000 (00:48 +0000)]
Random cleanup: No need to use a std::vector here, since createInternalizePass uses an ArrayRef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189632 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't bother emitting the pubtypes section on darwin since there aren't
Eric Christopher [Fri, 30 Aug 2013 00:40:17 +0000 (00:40 +0000)]
Don't bother emitting the pubtypes section on darwin since there aren't
any maintained consumers of it on that platform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189631 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReformat slightly.
Eric Christopher [Fri, 30 Aug 2013 00:39:57 +0000 (00:39 +0000)]
Reformat slightly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189630 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoChange default # of digits for APFloat::toString
Eli Friedman [Thu, 29 Aug 2013 23:44:34 +0000 (23:44 +0000)]
Change default # of digits for APFloat::toString

This is a re-commit of r189442; I'll follow up with clang changes.

The previous default was almost, but not quite enough digits to
represent a floating-point value in a manner which preserves the
representation when it's read back in.  The larger default is much
less confusing.

I spent some time looking into printing exactly the right number of
digits if a precision isn't specified, but it's kind of complicated,
and I'm not really sure I understand what APFloat::toString is supposed
to output for FormatPrecision != 0 (or maybe the current API specification
is just silly, not sure which).  I have a WIP patch if anyone is interested.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189624 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDIBuilder: retain a type when created with a unique identifier.
Manman Ren [Thu, 29 Aug 2013 23:17:54 +0000 (23:17 +0000)]
DIBuilder: retain a type when created with a unique identifier.

createClassType, createStructType, createUnionType, createEnumerationType,
and createForwardDecl will retain a type when created with a unique identifier,
to make sure they are treated as used even when all uses are replaced with
the identifiers.

Use TrackingVH<MDNode> instead of MDNode in AllRetainTypes, since the created
node can later be updated.

The change will be tested when clients of DIBuilder start to pass in non-empty
unique identifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189621 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoARM: Improve pattern for isel mul of vector by scalar.
Jim Grosbach [Thu, 29 Aug 2013 22:41:46 +0000 (22:41 +0000)]
ARM: Improve pattern for isel mul of vector by scalar.

In addition to recognizing when the multiply's second argument is
coming from an explicit VDUPLANE, also look for a plain scalar
f32 reference and reference it via the corresponding vector


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189619 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTidy up. Comment grammar.
Jim Grosbach [Thu, 29 Aug 2013 22:41:43 +0000 (22:41 +0000)]
Tidy up. Comment grammar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189618 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTidy up. Trailing whitespace.
Jim Grosbach [Thu, 29 Aug 2013 22:41:39 +0000 (22:41 +0000)]
Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189617 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSubstitute LLVM's version into the msbuild property file at config time
Reid Kleckner [Thu, 29 Aug 2013 22:09:43 +0000 (22:09 +0000)]
Substitute LLVM's version into the msbuild property file at config time

Requires shuffling the CPack code up before add_subdirectory(tools), but
that's where the version settings are anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189615 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoModified ms-build configuration file to be version locked to the VS2010 toolchain...
Warren Hunt [Thu, 29 Aug 2013 21:23:53 +0000 (21:23 +0000)]
Modified ms-build configuration file to be version locked to the VS2010 toolchain, this avoids conflicts with having VS2012 and
Win7SDK used at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189613 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoClean up some usage of Triple. The base class has methods for determining if the...
Cameron Esfahani [Thu, 29 Aug 2013 20:23:14 +0000 (20:23 +0000)]
Clean up some usage of Triple.  The base class has methods for determining if the target is iOS and Linux.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189604 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix the following error when NDEBUG is defined:
Kaelyn Uhrain [Thu, 29 Aug 2013 18:49:35 +0000 (18:49 +0000)]
Fix the following error when NDEBUG is defined:

include/llvm/Support/UnicodeCharRanges.h:56:5: error:
use of this statement in a constexpr constructor is a C++1y extension

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189599 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoComment and revise the cyclic critical path code.
Andrew Trick [Thu, 29 Aug 2013 18:04:49 +0000 (18:04 +0000)]
Comment and revise the cyclic critical path code.

This should be much more clear now. It's still disabled pending testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189597 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd unique identifier field to Composite Types and Format.
Manman Ren [Thu, 29 Aug 2013 17:07:49 +0000 (17:07 +0000)]
Add unique identifier field to Composite Types and Format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189593 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoisCharInSet refactoring.
Alexander Kornienko [Thu, 29 Aug 2013 12:12:13 +0000 (12:12 +0000)]
isCharInSet refactoring.

Made UnicodeCharSet a class, perform validity checking inside its
constructor instead of each isCharInSet call, use std::binary_search instead of
own implementation.
This patch comes with a necessary change in clang (sent separately).

Reviewers: jordan_rose, klimek

Reviewed By: klimek

CC: cfe-commits, rsmith
Differential Revision: http://llvm-reviews.chandlerc.com/D1534

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189582 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAVX-512: added extend and truncate instructions.
Elena Demikhovsky [Thu, 29 Aug 2013 11:56:53 +0000 (11:56 +0000)]
AVX-512: added extend and truncate instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189580 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMove StringToOffsetTable into the TableGen include directory so I can use it in clang.
Craig Topper [Thu, 29 Aug 2013 05:09:55 +0000 (05:09 +0000)]
Move StringToOffsetTable into the TableGen include directory so I can use it in clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189567 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert: r189565 - Add getUnrollingPreferences to TTI
Hal Finkel [Thu, 29 Aug 2013 03:33:15 +0000 (03:33 +0000)]
Revert: r189565 - Add getUnrollingPreferences to TTI

Revert unintentional commit (of an unreviewed change).

Original commit message:

Add getUnrollingPreferences to TTI

Allow targets to customize the default behavior of the generic loop unrolling
transformation. This will be used by the PowerPC backend when targeting the A2
core (which is in-order with a deep pipeline), and using more aggressive
defaults is important.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189566 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd getUnrollingPreferences to TTI
Hal Finkel [Thu, 29 Aug 2013 03:29:57 +0000 (03:29 +0000)]
Add getUnrollingPreferences to TTI

Allow targets to customize the default behavior of the generic loop unrolling
transformation. This will be used by the PowerPC backend when targeting the A2
core (which is in-order with a deep pipeline), and using more aggressive
defaults is important.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189565 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUse TargetSubtargetInfo::useAA() in DAGCombine
Hal Finkel [Thu, 29 Aug 2013 03:29:55 +0000 (03:29 +0000)]
Use TargetSubtargetInfo::useAA() in DAGCombine

This uses the TargetSubtargetInfo::useAA() function to control the defaults of
the -combiner-alias-analysis and -combiner-global-alias-analysis options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189564 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd useAA() to TargetSubtargetInfo
Hal Finkel [Thu, 29 Aug 2013 03:25:05 +0000 (03:25 +0000)]
Add useAA() to TargetSubtargetInfo

There are several optional (off-by-default) features in CodeGen that can make
use of alias analysis. These features are important for generating code for
some kinds of cores (for example the (in-order) PPC A2 core). This adds a
useAA() function to TargetSubtargetInfo to allow these features to be enabled
by default on a per-subtarget basis.

Here is the first use of this function: To control the default of the
-enable-aa-sched-mi feature.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189563 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] [tests] Add missing test input file.
Daniel Dunbar [Thu, 29 Aug 2013 03:02:34 +0000 (03:02 +0000)]
[lit] [tests] Add missing test input file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189561 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[tests] Use multiple statements instead of 'echo -e', which is not part of BSD echo.
Daniel Dunbar [Thu, 29 Aug 2013 03:02:30 +0000 (03:02 +0000)]
[tests] Use multiple statements instead of 'echo -e', which is not part of BSD echo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189560 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Fix internal shell's argv[0] handling.
Daniel Dunbar [Thu, 29 Aug 2013 02:52:10 +0000 (02:52 +0000)]
[lit] Fix internal shell's argv[0] handling.

 - At least on OS X, it is important for correct behavior of /bin/[ that argv[0]
   is passed as written, and not as the full executable path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189559 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Add support for multiprocessing, under --use-processes for now.
Daniel Dunbar [Thu, 29 Aug 2013 00:54:23 +0000 (00:54 +0000)]
[lit] Add support for multiprocessing, under --use-processes for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189556 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Implement --max-time support by using provider cancel method.
Daniel Dunbar [Thu, 29 Aug 2013 00:54:19 +0000 (00:54 +0000)]
[lit] Implement --max-time support by using provider cancel method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189555 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Refactor test execution logic into lit.run.Run.
Daniel Dunbar [Thu, 29 Aug 2013 00:54:15 +0000 (00:54 +0000)]
[lit] Refactor test execution logic into lit.run.Run.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189554 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Put display lock inside the ThreadResultsConsumer.
Daniel Dunbar [Thu, 29 Aug 2013 00:54:09 +0000 (00:54 +0000)]
[lit] Put display lock inside the ThreadResultsConsumer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189553 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Factor out a results consumer interface for test execution.
Daniel Dunbar [Thu, 29 Aug 2013 00:54:02 +0000 (00:54 +0000)]
[lit] Factor out a results consumer interface for test execution.
 - Also, change TestProvider interface to operate on test indices.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189552 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Move top-level execute code into Run object.
Daniel Dunbar [Thu, 29 Aug 2013 00:48:55 +0000 (00:48 +0000)]
[lit] Move top-level execute code into Run object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189551 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Factor out Run class to capture configuration + discovered tests.
Daniel Dunbar [Thu, 29 Aug 2013 00:48:45 +0000 (00:48 +0000)]
[lit] Factor out Run class to capture configuration + discovered tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189550 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Change lit.Test.ResultCode to be unique across pickling.
Daniel Dunbar [Thu, 29 Aug 2013 00:48:39 +0000 (00:48 +0000)]
[lit] Change lit.Test.ResultCode to be unique across pickling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189549 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix a test to not fail for users with my name. :)
Daniel Dunbar [Thu, 29 Aug 2013 00:41:22 +0000 (00:41 +0000)]
Fix a test to not fail for users with my name. :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189547 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Add a TODO.
Daniel Dunbar [Thu, 29 Aug 2013 00:41:15 +0000 (00:41 +0000)]
[lit] Add a TODO.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189546 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Update shtest format to return lit.Test.Result objects.
Daniel Dunbar [Thu, 29 Aug 2013 00:41:09 +0000 (00:41 +0000)]
[lit] Update shtest format to return lit.Test.Result objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189545 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[lit] Update LitTestCase to support lit.Test.Result.
Daniel Dunbar [Thu, 29 Aug 2013 00:40:59 +0000 (00:40 +0000)]
[lit] Update LitTestCase to support lit.Test.Result.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189544 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThe darwin integrated assembler for X86 in 64-bit mode is not rejecting
Kevin Enderby [Thu, 29 Aug 2013 00:19:03 +0000 (00:19 +0000)]
The darwin integrated assembler for X86 in 64-bit mode is not rejecting
32-bit absolute addressing in instructions likei this:

mov $_f, %rsi

which is not supported in 64-bit mode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189543 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Object/COFF] Add coff_aux_weak_external.
Rui Ueyama [Wed, 28 Aug 2013 23:49:30 +0000 (23:49 +0000)]
[Object/COFF] Add coff_aux_weak_external.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189541 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoVectorizer/PassManager: I am working on moving the vectorizer out of the SCC passes...
Nadav Rotem [Wed, 28 Aug 2013 23:40:29 +0000 (23:40 +0000)]
Vectorizer/PassManager:  I am working on moving the vectorizer out of the SCC passes. This patch moves the SLP-vectorizer and BB-vectorizer back into SCC passes for two reasons:
1. They are a kind of cannonicalization.
2. The performance measurements show that it is better to keep them in.

There should be no functional change if you are not enabling the LateVectorization mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189539 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoConvert tests to FileCheck
Matt Arsenault [Wed, 28 Aug 2013 23:04:41 +0000 (23:04 +0000)]
Convert tests to FileCheck

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189529 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdding VCIncludeDir and WindowsSDKDir to the msbuild configuration file. This allows...
Warren Hunt [Wed, 28 Aug 2013 22:54:13 +0000 (22:54 +0000)]
Adding VCIncludeDir and WindowsSDKDir to the msbuild configuration file.  This allows clang to find windows.h and other files in the
sdk and visutal studio includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189528 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoHandle address spaces in TargetTransformInfo
Matt Arsenault [Wed, 28 Aug 2013 22:41:57 +0000 (22:41 +0000)]
Handle address spaces in TargetTransformInfo

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189527 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix a typo and coding style of a previous commit. No functional change.
Juergen Ributzka [Wed, 28 Aug 2013 22:33:58 +0000 (22:33 +0000)]
Fix a typo and coding style of a previous commit. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189526 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix typo.
Matt Arsenault [Wed, 28 Aug 2013 22:17:26 +0000 (22:17 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189524 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[doxygen] Use correct variable names for external variable configuration and make...
Michael Gottesman [Wed, 28 Aug 2013 21:55:26 +0000 (21:55 +0000)]
[doxygen] Use correct variable names for external variable configuration and make EXTRA_SEARCH_MAPPINGS a "dumb" variable.

I do not think the massaging that I was doing for EXTRA_SEARCH_MAPPINGS was
truly necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189522 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix name matching to work on windows.
Rafael Espindola [Wed, 28 Aug 2013 21:00:03 +0000 (21:00 +0000)]
Fix name matching to work on windows.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189517 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoPeriod.
David Blaikie [Wed, 28 Aug 2013 20:45:45 +0000 (20:45 +0000)]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189513 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agor189495: Pull out some debug logic into a function for legibility
David Blaikie [Wed, 28 Aug 2013 20:42:43 +0000 (20:42 +0000)]
r189495: Pull out some debug logic into a function for legibility

Code review feedback from Eric Christopher.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189512 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[doxygen] Added support for doxygen external search.
Michael Gottesman [Wed, 28 Aug 2013 20:28:35 +0000 (20:28 +0000)]
[doxygen] Added support for doxygen external search.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189507 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[cmake] Created an aggregate doxygen target for generating doxygen documentation...
Michael Gottesman [Wed, 28 Aug 2013 20:28:32 +0000 (20:28 +0000)]
[cmake] Created an aggregate doxygen target for generating doxygen documentation for llvm/all subprojects. Renamed llvm's doxygen generation command to doxygen-llvm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189506 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoOption parsing: support case-insensitive option matching.
Rui Ueyama [Wed, 28 Aug 2013 20:04:31 +0000 (20:04 +0000)]
Option parsing: support case-insensitive option matching.

Re-submitting r189416 with fix for Windows build on where strcasecmp is not defined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189501 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDisable unrolling in the loop vectorizer when disabled in the pass manager
Hal Finkel [Wed, 28 Aug 2013 18:33:10 +0000 (18:33 +0000)]
Disable unrolling in the loop vectorizer when disabled in the pass manager

When unrolling is disabled in the pass manager, the loop vectorizer should also
not unroll loops. This will allow the -fno-unroll-loops option in Clang to
behave as expected (even for vectorizable loops). The loop vectorizer's
-force-vector-unroll option will (continue to) override the pass-manager
setting (including -force-vector-unroll=0 to force use of the internal
auto-selection logic).

In order to test this, I added a flag to opt (-disable-loop-unrolling) to force
disable unrolling through opt (the analog of -fno-unroll-loops in Clang). Also,
this fixes a small bug in opt where the loop vectorizer was enabled only after
the pass manager populated the queue of passes (the global_alias.ll test needed
a slight update to the RUN line as a result of this fix).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189499 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThe integrated darwin assembler can hang in an infinite loop (or get an assert
Kevin Enderby [Wed, 28 Aug 2013 17:50:59 +0000 (17:50 +0000)]
The integrated darwin assembler can hang in an infinite loop (or get an assert
with a debug build) with this buggy .indirect_symbol directive usage:

% cat test.s
x: .indirect_symbol _y

The assertion is because it is trying to get the symbol index for the
symbol _y when it is writing out the indirect symbol table. This line of
code in MachObjectWriter::WriteObject() :


And while there is a symbol _y it does not have any getSymbolData set which
is only done in MachObjectWriter::BindIndirectSymbols() for pointer sections
or stub sections.  I added a check and an error in there to catch this in case
something slips through.

But to get a better error the parser should detect when a .indirect_symbol
directive is used and it is not in a pointer section or stub section.  To make
that work I moved the handling of the indirect symbol out of the target
independent AsmParser code into the DarwinAsmParser code that can check
for the proper Mach-O section types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189497 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoPR16995: DebugInfo: Don't overwrite existing member lists when adding template arguments
David Blaikie [Wed, 28 Aug 2013 17:28:16 +0000 (17:28 +0000)]
PR16995: DebugInfo: Don't overwrite existing member lists when adding template arguments

With the added debug assertions this fix is covered by existing Clang
tests. (& found some other issues, also fixed)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189495 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agocmake: Prevent semicolon separated lists in llvm-config (PR17020)
Hans Wennborg [Wed, 28 Aug 2013 17:04:06 +0000 (17:04 +0000)]
cmake: Prevent semicolon separated lists in llvm-config (PR17020)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189491 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ARMv8]
Joey Gouly [Wed, 28 Aug 2013 16:39:20 +0000 (16:39 +0000)]
Fix a few things in one swoop.

# Add some negative tests.
# Fix some formatting issues.
# Add some missing IsThumb / ARMv8
# Fix some outs / ins mistakes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189490 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd a minimal implementation of ranlib.
Rafael Espindola [Wed, 28 Aug 2013 16:22:16 +0000 (16:22 +0000)]
Add a minimal implementation of ranlib.

This is just enough to get "llvm-ranlib foo.a" working and tested. Making
llvm-ranlib a symbolic link to llvm-ar doesn't work so well with llvm's option
parsing, but ar's option parsing is mostly custom anyway.

This patch also removes the -X32_64 option. Looks like it was just added in
r10297 as part of implementing the current command line parsing. I can add it
back (with a test) if someone really has AIX portability problems without it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189489 91177308-0d34-0410-b5e6-96231b3b80d8