platform/upstream/llvm.git
10 years ago[ARM] In thumb mode, emit directive ".code 16" before file level inline
Akira Hatanaka [Fri, 25 Jul 2014 05:12:49 +0000 (05:12 +0000)]
[ARM] In thumb mode, emit directive ".code 16" before file level inline
assembly instructions.

This is necessary to ensure ARM assembler switches to Thumb mode before it
starts assembling the file level inline assembly instructions at the beginning
of a .s file.

<rdar://problem/17757232>

llvm-svn: 213924

10 years ago[X86] Add comments to clarify some non-obvious lines in the stackmap-nops.ll
Lang Hames [Fri, 25 Jul 2014 04:50:08 +0000 (04:50 +0000)]
[X86] Add comments to clarify some non-obvious lines in the stackmap-nops.ll
testcases.

Based on code review from Philip Reames. Thanks Philip!

llvm-svn: 213923

10 years ago[modules] Substantially improve handling of #undef:
Richard Smith [Fri, 25 Jul 2014 04:40:03 +0000 (04:40 +0000)]
[modules] Substantially improve handling of #undef:

 * Track override set across module load and save
 * Track originating module to allow proper re-export of #undef
 * Make override set properly transitive when it picks up a #undef

This fixes nearly all of the remaining macro issues with self-host.

llvm-svn: 213922

10 years agollvm-vtabledump: use a std::map instead of a StringMap for VBTables
David Majnemer [Fri, 25 Jul 2014 04:30:11 +0000 (04:30 +0000)]
llvm-vtabledump: use a std::map instead of a StringMap for VBTables

StringMap doesn't guarantee any particular iteration order,
this is suboptimal when comparing llvm-vtabledump's output for two
object files.

llvm-svn: 213921

10 years agoFix a warning in CoverageMappingReader.cpp
Ehsan Akhgari [Fri, 25 Jul 2014 02:51:57 +0000 (02:51 +0000)]
Fix a warning in CoverageMappingReader.cpp

llvm-svn: 213920

10 years agoFix test/CodeGen/ms-inline-asm.c from r213916.
Ehsan Akhgari [Fri, 25 Jul 2014 02:39:33 +0000 (02:39 +0000)]
Fix test/CodeGen/ms-inline-asm.c from r213916.

llvm-svn: 213919

10 years agoFix test/CodeGen/ms-inline-asm.cpp from r213916.
Ehsan Akhgari [Fri, 25 Jul 2014 02:35:50 +0000 (02:35 +0000)]
Fix test/CodeGen/ms-inline-asm.cpp from r213916.

llvm-svn: 213918

10 years ago[X86] Clarify some stackmap shadow optimization code as based on review
Lang Hames [Fri, 25 Jul 2014 02:29:19 +0000 (02:29 +0000)]
[X86] Clarify some stackmap shadow optimization code as based on review
feedback from Eric Christopher.

No functional change.

llvm-svn: 213917

10 years agoclang-cl: Merge adjacent single-line __asm blocks
Ehsan Akhgari [Fri, 25 Jul 2014 02:27:14 +0000 (02:27 +0000)]
clang-cl: Merge adjacent single-line __asm blocks

Summary:
This patch extends the __asm parser to make it keep parsing input tokens
as inline assembly if a single-line __asm line is followed by another line
starting with __asm too.  It also makes sure that we correctly keep
matching braces in such situations by separating the notions of how many
braces we are matching and whether we are in single-line asm block mode.

Reviewers: rnk

Subscribers: cfe-commits

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

llvm-svn: 213916

10 years ago[PATCH][PPC64LE] Correct little-endian usage of vmrgh* and vmrgl*.
Bill Schmidt [Fri, 25 Jul 2014 01:55:55 +0000 (01:55 +0000)]
[PATCH][PPC64LE] Correct little-endian usage of vmrgh* and vmrgl*.

Because the PowerPC vmrgh* and vmrgl* instructions have a built-in
big-endian bias, it is necessary to swap their inputs in little-endian
mode when using them to implement a vector shuffle.  This was
previously missed in the vector LE implementation.

There was already logic to distinguish between unary and "normal"
vmrg* vector shuffles, so this patch extends that logic to use a third
option:  "swapped" vmrg* vector shuffles that are used for little
endian in place of the "normal" ones.

I've updated the vec-shuffle-le.ll test to check for the expected
register ordering on the generated instructions.

This bug was discovered when testing the LE and ELFv2 patches for
safety if they were backported to 3.4.  A different vectorization
decision was made in 3.4 than on mainline trunk, and that exposed the
problem.  I've verified this fix takes care of that issue.

llvm-svn: 213915

10 years agoFix an x86 assembler stack unwind calculation for non-volatile registers.
Todd Fiala [Fri, 25 Jul 2014 01:15:34 +0000 (01:15 +0000)]
Fix an x86 assembler stack unwind calculation for non-volatile registers.

This change has the practical effect of fixing some backtrace
scenarios that would fail with inferiors running on the Android Art
host-side JVM under Linux x86_64 on Ubuntu 14.04.

See this lldb-commits thread for more details:
http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20140721/011988.html

Change by Tong Shen.
Reviewed by Jason Molenda.

Tested:
Ubuntu 14.04 x86_64, clang-3.5-built lldb.
MacOSX 10.10 Preview 4, Xcode 6 Beta 4-built lldb.

llvm-svn: 213914

10 years agoPR20445: Properly transform the initializer in a CXXNewExpr rather than running
Richard Smith [Fri, 25 Jul 2014 01:12:44 +0000 (01:12 +0000)]
PR20445: Properly transform the initializer in a CXXNewExpr rather than running
it through the normal TreeTransform logic for Exprs (which will strip off
implicit parts of the initialization and never re-create them).

llvm-svn: 213913

10 years agoPass the PrintingPolicy when converting types to strings in template type
Richard Trieu [Fri, 25 Jul 2014 00:24:02 +0000 (00:24 +0000)]
Pass the PrintingPolicy when converting types to strings in template type
diffing.  This removes extra "struct"/"class" in the type names and gives
"bool" instead of "_Bool" for booleans.

llvm-svn: 213912

10 years agoAdd code coverage mapping data, reader, and writer.
Alex Lorenz [Thu, 24 Jul 2014 23:57:54 +0000 (23:57 +0000)]
Add code coverage mapping data, reader, and writer.

This patch implements the data structures, the reader and
the writers for the new code coverage mapping system.
The new code coverage mapping system uses the instrumentation
based profiling to provide code coverage analysis.

llvm-svn: 213910

10 years agoAdd code coverage mapping data, reader, and writer.
Alex Lorenz [Thu, 24 Jul 2014 23:55:56 +0000 (23:55 +0000)]
Add code coverage mapping data, reader, and writer.

This patch implements the data structures, the reader and
the writers for the new code coverage mapping system.
The new code coverage mapping system uses the instrumentation
based profiling to provide code coverage analysis.

llvm-svn: 213909

10 years ago[Refactor] Expose the runtime debug builder
Johannes Doerfert [Thu, 24 Jul 2014 23:55:19 +0000 (23:55 +0000)]
[Refactor] Expose the runtime debug builder

llvm-svn: 213908

10 years agoMake getIslCompatibleName globaly available
Johannes Doerfert [Thu, 24 Jul 2014 23:48:02 +0000 (23:48 +0000)]
Make getIslCompatibleName globaly available

llvm-svn: 213907

10 years agoAdd an implementation for llvm-nm’s -print-file-name option (aka -o and -A).
Kevin Enderby [Thu, 24 Jul 2014 23:31:52 +0000 (23:31 +0000)]
Add an implementation for llvm-nm’s -print-file-name option (aka -o and -A).

The -print-file-name option in llvm-nm is to precede each symbol
with the object file it came from.  While code for the parsing of this
option and its aliases existed there was no code to implement it.

llvm-svn: 213906

10 years agoOpportunistically fix the builders
David Majnemer [Thu, 24 Jul 2014 23:26:54 +0000 (23:26 +0000)]
Opportunistically fix the builders

A builder complained that it couldn't find llvm-vtabledump, this is
probably because it wasn't a dependency of the 'test' target.

llvm-svn: 213905

10 years agoFix configure/make builds on MacOSX.
Todd Fiala [Thu, 24 Jul 2014 23:22:58 +0000 (23:22 +0000)]
Fix configure/make builds on MacOSX.

Change by Keno Fischer.

llvm-svn: 213904

10 years agollvm-vtabledump: A vtable dumper
David Majnemer [Thu, 24 Jul 2014 23:14:40 +0000 (23:14 +0000)]
llvm-vtabledump: A vtable dumper

This tool's job is to dump the vtables inside object files.  It is
currently limited to MS ABI vf- and vb-tables but it will eventually
support Itanium-style v-tables as well.

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

llvm-svn: 213903

10 years agoPrint "(default)" for default template template arguments to match the
Richard Trieu [Thu, 24 Jul 2014 23:14:16 +0000 (23:14 +0000)]
Print "(default)" for default template template arguments to match the
printing of other types.

llvm-svn: 213902

10 years ago[mach-o] Add support for LC_DATA_IN_CODE
Nick Kledzik [Thu, 24 Jul 2014 23:06:56 +0000 (23:06 +0000)]
[mach-o] Add support for LC_DATA_IN_CODE

Sometimes compilers emit data into code sections (e.g. constant pools or
jump tables). These runs of data can throw off disassemblers.  The solution
in mach-o is that ranges of data-in-code are encoded into a table pointed to
by the LC_DATA_IN_CODE load command.

The way the data-in-code information is encoded into lld's Atom model is that
that start and end of each data run is marked with a Reference whose offset
is the start/end of the data run.  For arm, the switch back to code also marks
whether it is thumb or arm code.

llvm-svn: 213901

10 years agoAfter unrolling a loop with llvm.loop.unroll.count metadata (unroll factor
Mark Heffernan [Thu, 24 Jul 2014 22:36:40 +0000 (22:36 +0000)]
After unrolling a loop with llvm.loop.unroll.count metadata (unroll factor
hint) the loop unroller replaces the llvm.loop.unroll.count metadata with
llvm.loop.unroll.disable metadata to prevent any subsequent unrolling
passes from unrolling more than the hint indicates.  This patch fixes
an issue where loop unrolling could be disabled for other loops as well which
share the same llvm.loop metadata.

llvm-svn: 213900

10 years agoDon't use 128bit functions on PPC32.
Joerg Sonnenberger [Thu, 24 Jul 2014 22:20:10 +0000 (22:20 +0000)]
Don't use 128bit functions on PPC32.

llvm-svn: 213899

10 years ago[SDAG] Introduce a combined set to the DAG combiner which tracks nodes
Chandler Carruth [Thu, 24 Jul 2014 22:15:28 +0000 (22:15 +0000)]
[SDAG] Introduce a combined set to the DAG combiner which tracks nodes
which have successfully round-tripped through the combine phase, and use
this to ensure all operands to DAG nodes are visited by the combiner,
even if they are only added during the combine phase.

This is critical to have the combiner reach nodes that are *introduced*
during combining. Previously these would sometimes be visited and
sometimes not be visited based on whether they happened to end up on the
worklist or not. Now we always run them through the combiner.

This fixes quite a few bad codegen test cases lurking in the suite while
also being more principled. Among these, the TLS codegeneration is
particularly exciting for programs that have this in the critical path
like TSan-instrumented binaries (although I think they engineer to use
a different TLS that is faster anyways).

I've tried to check for compile-time regressions here by running llc
over a merged (but not LTO-ed) clang bitcode file and observed at most
a 3% slowdown in llc. Given that this is essentially a worst case (none
of opt or clang are running at this phase) I think this is tolerable.
The actual LTO case should be even less costly, and the cost in normal
compilation should be negligible.

With this combining logic, it is possible to re-legalize as we combine
which is necessary to implement PSHUFB formation on x86 as
a post-legalize DAG combine (my ultimate goal).

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

llvm-svn: 213898

10 years ago[x86] Make vector legalization of extloads work more like the "normal"
Chandler Carruth [Thu, 24 Jul 2014 22:09:56 +0000 (22:09 +0000)]
[x86] Make vector legalization of extloads work more like the "normal"
vector operation legalization with support for custom target lowering
and fallback to expand when it fails, and use this to implement sext and
anyext load lowering for x86 in a more principled way.

Previously, the x86 backend relied on a target DAG combine to "combine
away" sextload and extload nodes prior to legalization, or would expand
them during legalization with terrible code. This is particularly
problematic because the DAG combine relies on running over non-canonical
DAG nodes at just the right time to match several common and important
patterns. It used a combine rather than lowering because we didn't have
good lowering support, and to expose some tricks being employed to more
combine phases.

With this change it becomes a proper lowering operation, the backend
marks that it can lower these nodes, and I've added support for handling
the canonical forms that don't have direct legal representations such as
sextload of a v4i8 -> v4i64 on AVX1. With this change, our test cases
for this behavior continue to pass even after the DAG combiner beigns
running more systematically over every node.

There is some noise caused by this in the test suite where we actually
use vector extends instead of subregister extraction. This doesn't
really seem like the right thing to do, but is unlikely to be a critical
regression. We do regress in one case where by lowering to the
target-specific patterns early we were able to combine away extraneous
legal math nodes. However, this regression is completely addressed by
switching to a widening based legalization which is what I'm working
toward anyways, so I've just switched the test to that mode.

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

llvm-svn: 213897

10 years agoTarget: invert condition for Windows
Saleem Abdulrasool [Thu, 24 Jul 2014 22:09:06 +0000 (22:09 +0000)]
Target: invert condition for Windows

The Microsoft ABI and MSVCRT are considered the canonical C runtime and ABI.
The long double routines are not part of this environment.  However, cygwin and
MinGW both provide supplementary implementations.  Change the condition to
reflect this reality.

llvm-svn: 213896

10 years agoFeedback from Hans on r213815. No functionaility change.
Manman Ren [Thu, 24 Jul 2014 21:13:20 +0000 (21:13 +0000)]
Feedback from Hans on r213815. No functionaility change.

llvm-svn: 213895

10 years agoWindows: Don't wildcard expand /? or -?
Hans Wennborg [Thu, 24 Jul 2014 21:09:45 +0000 (21:09 +0000)]
Windows: Don't wildcard expand /? or -?

Even if there's a file called c:\a, we want /? to be preserved as
an option, not expanded to a filename.

llvm-svn: 213894

10 years agoUse ELF in the clang-interpreter on windows.
Rafael Espindola [Thu, 24 Jul 2014 20:47:42 +0000 (20:47 +0000)]
Use ELF in the clang-interpreter on windows.

We don't support loading COFF files yet.

llvm-svn: 213893

10 years ago[X86] Optimize stackmap shadows on X86.
Lang Hames [Thu, 24 Jul 2014 20:40:55 +0000 (20:40 +0000)]
[X86] Optimize stackmap shadows on X86.

This patch minimizes the number of nops that must be emitted on X86 to satisfy
stackmap shadow constraints.

To minimize the number of nops inserted, the X86AsmPrinter now records the
size of the most recent stackmap's shadow in the StackMapShadowTracker class,
and tracks the number of instruction bytes emitted since the that stackmap
instruction was encountered. Padding is emitted (if it is required at all)
immediately before the next stackmap/patchpoint instruction, or at the end of
the basic block.

This optimization should reduce code-size and improve performance for people
using the llvm stackmap intrinsic on X86.

<rdar://problem/14959522>

llvm-svn: 213892

10 years agoReplace an assertion with a fatal error
Reid Kleckner [Thu, 24 Jul 2014 19:53:33 +0000 (19:53 +0000)]
Replace an assertion with a fatal error

Frontends are responsible for putting inalloca on parameters that would
be passed in memory and not registers.

llvm-svn: 213891

10 years agoUse the same .eh_frame encoding for 32bit PPC as on i386.
Joerg Sonnenberger [Thu, 24 Jul 2014 19:25:16 +0000 (19:25 +0000)]
Use the same .eh_frame encoding for 32bit PPC as on i386.

llvm-svn: 213890

10 years ago[libcxx] expose experimental::erased_type for all standard versions.
Eric Fiselier [Thu, 24 Jul 2014 19:17:38 +0000 (19:17 +0000)]
[libcxx] expose experimental::erased_type for all standard versions.

Summary: The polymorphic allocator implementation would greatly benefit by defining virtual functions in the dynlib instead of inline. In order to do that some types are going to have to be available outside of c++1y. This is the first step.

Reviewers: mclow.lists, EricWF

Reviewed By: EricWF

Subscribers: cfe-commits

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

llvm-svn: 213889

10 years agoD4451: Fix copy/move issues casude by __tuple_leafs's converting constructor
Eric Fiselier [Thu, 24 Jul 2014 18:48:34 +0000 (18:48 +0000)]
D4451: Fix copy/move issues casude by __tuple_leafs's converting constructor

llvm-svn: 213888

10 years agotest commit
Eric Fiselier [Thu, 24 Jul 2014 18:41:56 +0000 (18:41 +0000)]
test commit

llvm-svn: 213887

10 years agoPreserve libclang ABI compatibility with the 3.5 release
Reid Kleckner [Thu, 24 Jul 2014 18:22:15 +0000 (18:22 +0000)]
Preserve libclang ABI compatibility with  the 3.5 release

llvm-svn: 213886

10 years agoAdd support for #pragma nounroll.
Mark Heffernan [Thu, 24 Jul 2014 18:09:38 +0000 (18:09 +0000)]
Add support for #pragma nounroll.

llvm-svn: 213885

10 years agoTry to fix the bots again by moving test to X86 directory.
Manman Ren [Thu, 24 Jul 2014 17:57:09 +0000 (17:57 +0000)]
Try to fix the bots again by moving test to X86 directory.

llvm-svn: 213884

10 years agoX86: correct library call setup for Windows itanium
Saleem Abdulrasool [Thu, 24 Jul 2014 17:46:36 +0000 (17:46 +0000)]
X86: correct library call setup for Windows itanium

This target is identical to the Windows MSVC (and follows Microsoft ABI for C).
Correct the library call setup for this target.  The same set of library calls
are missing on this environment.

llvm-svn: 213883

10 years agoR600: Add FMA instructions for Evergreen
Matt Arsenault [Thu, 24 Jul 2014 17:41:01 +0000 (17:41 +0000)]
R600: Add FMA instructions for Evergreen

llvm-svn: 213882

10 years agoAttempt at fixing the windows shared build.
Rafael Espindola [Thu, 24 Jul 2014 17:38:18 +0000 (17:38 +0000)]
Attempt at fixing the windows shared build.

llvm-svn: 213881

10 years agoTry to fix the bots. If this does not work, I am going to move it to X86 directory.
Manman Ren [Thu, 24 Jul 2014 17:18:33 +0000 (17:18 +0000)]
Try to fix the bots. If this does not work, I am going to move it to X86 directory.

llvm-svn: 213880

10 years agoUse MCJIT.
Rafael Espindola [Thu, 24 Jul 2014 17:13:09 +0000 (17:13 +0000)]
Use MCJIT.

llvm-svn: 213879

10 years agoX86: silence sign comparison warning
Saleem Abdulrasool [Thu, 24 Jul 2014 17:12:06 +0000 (17:12 +0000)]
X86: silence sign comparison warning

GCC 4.8 detected a signed compare [-Wsign-compare].  Add a cast for the
destination index.  Add an assert to catch a potential overflow however unlikely
it may be.

llvm-svn: 213878

10 years agoR600: Add new functions for splitting vector loads and stores.
Matt Arsenault [Thu, 24 Jul 2014 17:10:35 +0000 (17:10 +0000)]
R600: Add new functions for splitting vector loads and stores.

These will be used in future patches and shouldn't change anything yet.

llvm-svn: 213877

10 years agoLet the integrated assembler understand .exitm, PR20426.
Nico Weber [Thu, 24 Jul 2014 17:08:39 +0000 (17:08 +0000)]
Let the integrated assembler understand .exitm, PR20426.

llvm-svn: 213876

10 years agoWe were turning off all these tests on OSX and FreeBSD because of a known (and fairly...
Jim Ingham [Thu, 24 Jul 2014 16:56:19 +0000 (16:56 +0000)]
We were turning off all these tests on OSX and FreeBSD because of a known (and fairly unimportant) bug.
Keep a test for that bug, but let the useful parts of the test run anyway.

llvm-svn: 213875

10 years agoRemove unused field MacroInstantiation::TheMacro. No behavior change.
Nico Weber [Thu, 24 Jul 2014 16:29:04 +0000 (16:29 +0000)]
Remove unused field MacroInstantiation::TheMacro. No behavior change.

llvm-svn: 213874

10 years agoLet the integrated assembler understand .warning, PR20428.
Nico Weber [Thu, 24 Jul 2014 16:26:06 +0000 (16:26 +0000)]
Let the integrated assembler understand .warning, PR20428.

llvm-svn: 213873

10 years agoInclude relative path for header outside the current directory.
Joerg Sonnenberger [Thu, 24 Jul 2014 16:04:46 +0000 (16:04 +0000)]
Include relative path for header outside the current directory.

llvm-svn: 213872

10 years agoRemove dead code.
Rafael Espindola [Thu, 24 Jul 2014 16:02:28 +0000 (16:02 +0000)]
Remove dead code.

Every user has been switched to using EngineBuilder.

llvm-svn: 213871

10 years ago[Refactor] Remove containsLoop to find innermost loops
Johannes Doerfert [Thu, 24 Jul 2014 15:59:06 +0000 (15:59 +0000)]
[Refactor] Remove containsLoop to find innermost loops

  Use the fact that if we visit a for node first in pre and next in post order
  we know we did not visit any children, thus we found an innermost loop.

  + Test case for an innermost loop with a conditional inside

llvm-svn: 213870

10 years agoRemove the last use of llvm::ExecutionEngine::create.
Rafael Espindola [Thu, 24 Jul 2014 15:54:23 +0000 (15:54 +0000)]
Remove the last use of llvm::ExecutionEngine::create.

llvm-svn: 213869

10 years ago[Mips] Replace assembler code by YAML to make the 'exe-dynsym.test' test
Simon Atanasyan [Thu, 24 Jul 2014 15:42:11 +0000 (15:42 +0000)]
[Mips] Replace assembler code by YAML to make the 'exe-dynsym.test' test
target independent.

llvm-svn: 213868

10 years agoAArch64: refactor ReconstructShuffle function
Tim Northover [Thu, 24 Jul 2014 15:39:55 +0000 (15:39 +0000)]
AArch64: refactor ReconstructShuffle function

Quite a bit of cruft had accumulated as we realised the various different cases
it had to handle and squeezed them in where possible. This refactoring mostly
flattens the logic and special-cases. The result is slightly longer, but I
think clearer.

Should be no functionality change.

llvm-svn: 213867

10 years agoFix r213824 on windows
Duncan P. N. Exon Smith [Thu, 24 Jul 2014 15:16:23 +0000 (15:16 +0000)]
Fix r213824 on windows

llvm-svn: 213866

10 years agoImproving the "integer constant too large" diagnostics based on post-commit feedback...
Aaron Ballman [Thu, 24 Jul 2014 14:51:23 +0000 (14:51 +0000)]
Improving the "integer constant too large" diagnostics based on post-commit feedback from Richard Smith. Amends r213657.

llvm-svn: 213865

10 years agoAdd scoped-noalias metadata
Hal Finkel [Thu, 24 Jul 2014 14:25:39 +0000 (14:25 +0000)]
Add scoped-noalias metadata

This commit adds scoped noalias metadata. The primary motivations for this
feature are:
  1. To preserve noalias function attribute information when inlining
  2. To provide the ability to model block-scope C99 restrict pointers

Neither of these two abilities are added here, only the necessary
infrastructure. In fact, there should be no change to existing functionality,
only the addition of new features. The logic that converts noalias function
parameters into this metadata during inlining will come in a follow-up commit.

What is added here is the ability to generally specify noalias memory-access
sets. Regarding the metadata, alias-analysis scopes are defined similar to TBAA
nodes:

!scope0 = metadata !{ metadata !"scope of foo()" }
!scope1 = metadata !{ metadata !"scope 1", metadata !scope0 }
!scope2 = metadata !{ metadata !"scope 2", metadata !scope0 }
!scope3 = metadata !{ metadata !"scope 2.1", metadata !scope2 }
!scope4 = metadata !{ metadata !"scope 2.2", metadata !scope2 }

Loads and stores can be tagged with an alias-analysis scope, and also, with a
noalias tag for a specific scope:

... = load %ptr1, !alias.scope !{ !scope1 }
... = load %ptr2, !alias.scope !{ !scope1, !scope2 }, !noalias !{ !scope1 }

When evaluating an aliasing query, if one of the instructions is associated
with an alias.scope id that is identical to the noalias scope associated with
the other instruction, or is a descendant (in the scope hierarchy) of the
noalias scope associated with the other instruction, then the two memory
accesses are assumed not to alias.

Note that is the first element of the scope metadata is a string, then it can
be combined accross functions and translation units. The string can be replaced
by a self-reference to create globally unqiue scope identifiers.

[Note: This overview is slightly stylized, since the metadata nodes really need
to just be numbers (!0 instead of !scope0), and the scope lists are also global
unnamed metadata.]

Existing noalias metadata in a callee is "cloned" for use by the inlined code.
This is necessary because the aliasing scopes are unique to each call site
(because of possible control dependencies on the aliasing properties). For
example, consider a function: foo(noalias a, noalias b) { *a = *b; } that gets
inlined into bar() { ... if (...) foo(a1, b1); ... if (...) foo(a2, b2); } --
now just because we know that a1 does not alias with b1 at the first call site,
and a2 does not alias with b2 at the second call site, we cannot let inlining
these functons have the metadata imply that a1 does not alias with b2.

llvm-svn: 213864

10 years agoFixing an MSVC conversion warning about implicitly converting the shift results to...
Aaron Ballman [Thu, 24 Jul 2014 14:24:59 +0000 (14:24 +0000)]
Fixing an MSVC conversion warning about implicitly converting the shift results to 64-bits. No functional change intended.

llvm-svn: 213863

10 years agoSetting the documentation heading for #pragma unroll, which should not be with the...
Aaron Ballman [Thu, 24 Jul 2014 14:13:59 +0000 (14:13 +0000)]
Setting the documentation heading for #pragma unroll, which should not be with the heading for #pragma clang loop.

llvm-svn: 213862

10 years agoFix endian test for big-endian hosts
Ed Maste [Thu, 24 Jul 2014 13:28:16 +0000 (13:28 +0000)]
Fix endian test for big-endian hosts

The uint16_t cast truncated the magic value to 0x00000304, making the
first byte 0 (eByteOrderInvalid) on big endian hosts.

Reported by Justin Hibbits.

llvm-svn: 213861

10 years ago[Target] Teach the query interfaces for lowering of extloads and
Chandler Carruth [Thu, 24 Jul 2014 12:20:53 +0000 (12:20 +0000)]
[Target] Teach the query interfaces for lowering of extloads and
truncstores to support EVTs and return expand for non-simple ones.

This makes them more consistent with the isLegal... query style methods
and makes using them simpler in many scenarios.

No functionality actually changed.

llvm-svn: 213860

10 years agoAA metadata refactoring (introduce AAMDNodes)
Hal Finkel [Thu, 24 Jul 2014 12:16:19 +0000 (12:16 +0000)]
AA metadata refactoring (introduce AAMDNodes)

In order to enable the preservation of noalias function parameter information
after inlining, and the representation of block-level __restrict__ pointer
information (etc.), additional kinds of aliasing metadata will be introduced.
This metadata needs to be carried around in AliasAnalysis::Location objects
(and MMOs at the SDAG level), and so we need to generalize the current scheme
(which is hard-coded to just one TBAA MDNode*).

This commit introduces only the necessary refactoring to allow for the
introduction of other aliasing metadata types, but does not actually introduce
any (that will come in a follow-up commit). What it does introduce is a new
AAMDNodes structure to hold all of the aliasing metadata nodes associated with
a particular memory-accessing instruction, and uses that structure instead of
the raw MDNode* in AliasAnalysis::Location, etc.

No functionality change intended.

llvm-svn: 213859

10 years agoAdd FreeBSD support to Asan test cases that use mmap() with MAP_ANON
Viktor Kutuzov [Thu, 24 Jul 2014 12:05:13 +0000 (12:05 +0000)]
Add FreeBSD support to Asan test cases that use mmap() with MAP_ANON
Differential Revision: http://reviews.llvm.org/D4561

llvm-svn: 213858

10 years agoPrune redundant libdeps.
NAKAMURA Takumi [Thu, 24 Jul 2014 11:45:27 +0000 (11:45 +0000)]
Prune redundant libdeps.

llvm-svn: 213857

10 years agoPrune dependency to MC from each target disassembler.
NAKAMURA Takumi [Thu, 24 Jul 2014 11:45:11 +0000 (11:45 +0000)]
Prune dependency to MC from each target disassembler.

llvm-svn: 213856

10 years ago[CMake] tools/lto: Prune redundant libdep(s).
NAKAMURA Takumi [Thu, 24 Jul 2014 11:44:44 +0000 (11:44 +0000)]
[CMake] tools/lto: Prune redundant libdep(s).

llvm-svn: 213855

10 years ago[CMake] LineEditorTests: Add Support to link_components.
NAKAMURA Takumi [Thu, 24 Jul 2014 11:44:33 +0000 (11:44 +0000)]
[CMake] LineEditorTests: Add Support to link_components.

Even if LLVMSupport is added in add_unittests, LLVMSupport may be here as consistency.

llvm-svn: 213854

10 years ago[CMake] LexTests: Prune redundant libdep(s).
NAKAMURA Takumi [Thu, 24 Jul 2014 11:44:03 +0000 (11:44 +0000)]
[CMake] LexTests: Prune redundant libdep(s).

llvm-svn: 213853

10 years agoMachO: use "arm64" as the triple name in modules.
Tim Northover [Thu, 24 Jul 2014 10:25:34 +0000 (10:25 +0000)]
MachO: use "arm64" as the triple name in modules.

Current versions of ld64 can't cope with "aarch64" being stored. I'm fixing
that, but in the transitionary period we'll need to still emit "arm64".

rdar://problem/17783765

llvm-svn: 213852

10 years agoPlug memory leaks.
Benjamin Kramer [Thu, 24 Jul 2014 10:23:33 +0000 (10:23 +0000)]
Plug memory leaks.

Most of the changes are mechanic std::unique_ptr insertions. All leaks were
detected by LeakSanitizer.

llvm-svn: 213851

10 years ago[ARM] Make the assembler reject unpredictable pre/post-indexed ARM STRH instructions.
Tilmann Scheller [Thu, 24 Jul 2014 09:55:46 +0000 (09:55 +0000)]
[ARM] Make the assembler reject unpredictable pre/post-indexed ARM STRH instructions.

The ARM ARM prohibits STRH instructions with writeback into the source register. With this commit this constraint is now enforced and we stop assembling STRH instructions with unpredictable behavior.

llvm-svn: 213850

10 years ago[mips] Fix ll and sc instructions
Daniel Sanders [Thu, 24 Jul 2014 09:47:14 +0000 (09:47 +0000)]
[mips] Fix ll and sc instructions

Summary: The ll and sc instructions for r6 and non-r6 are misplaced. This patch fixes that.

Patch by Jyun-Yan You

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

llvm-svn: 213847

10 years ago[OPENMP] Initial parsing and sema analysis for clause 'seq_cst' of 'atomic' directive.
Alexey Bataev [Thu, 24 Jul 2014 08:55:34 +0000 (08:55 +0000)]
[OPENMP] Initial parsing and sema analysis for clause 'seq_cst' of 'atomic' directive.

llvm-svn: 213846

10 years ago[clang-tidy] Fix a heap use-after-free bug detected by asan.
Benjamin Kramer [Thu, 24 Jul 2014 08:34:42 +0000 (08:34 +0000)]
[clang-tidy] Fix a heap use-after-free bug detected by asan.

llvm-svn: 213845

10 years agoR600: Match rcp node on pre-SI
Matt Arsenault [Thu, 24 Jul 2014 06:59:24 +0000 (06:59 +0000)]
R600: Match rcp node on pre-SI

llvm-svn: 213844

10 years agoR600: Fix LowerSDIV24
Matt Arsenault [Thu, 24 Jul 2014 06:59:20 +0000 (06:59 +0000)]
R600: Fix LowerSDIV24

Use ComputeNumSignBits instead of checking for i8 / i16 which only
worked when AMDIL was lying about having legal i8 / i16.

If an integer is known to fit in 24-bits, we can
do division faster with float ops.

llvm-svn: 213843

10 years ago[OPENMP] Initial parsing and sema analysis for clause 'capture' in 'atomic' directive.
Alexey Bataev [Thu, 24 Jul 2014 06:46:57 +0000 (06:46 +0000)]
[OPENMP] Initial parsing and sema analysis for clause 'capture' in 'atomic' directive.

llvm-svn: 213842

10 years agoMS ABI: -fno-rtti-data wasn't data-free enough
David Majnemer [Thu, 24 Jul 2014 06:09:19 +0000 (06:09 +0000)]
MS ABI: -fno-rtti-data wasn't data-free enough

While -fno-rtti-data would correctly avoid referencing the RTTI complete
object locator in the VFTable itself, it would emit them anyway.

llvm-svn: 213841

10 years agoAdd support for nullptr template arguments to template type diffing.
Richard Trieu [Thu, 24 Jul 2014 04:24:50 +0000 (04:24 +0000)]
Add support for nullptr template arguments to template type diffing.

llvm-svn: 213840

10 years agoRemove unused substitution.
Rafael Espindola [Thu, 24 Jul 2014 04:09:04 +0000 (04:09 +0000)]
Remove unused substitution.

llvm-svn: 213839

10 years ago[modules] Slightly expand module semantics documentation.
Richard Smith [Thu, 24 Jul 2014 03:42:38 +0000 (03:42 +0000)]
[modules] Slightly expand module semantics documentation.

llvm-svn: 213838

10 years agoSimplify MacroInfo lifetime management. We don't need three different functions
Richard Smith [Thu, 24 Jul 2014 03:25:00 +0000 (03:25 +0000)]
Simplify MacroInfo lifetime management. We don't need three different functions
to destroy one of these.

llvm-svn: 213837

10 years agoIR: Fix comment from r213824
Duncan P. N. Exon Smith [Thu, 24 Jul 2014 02:56:59 +0000 (02:56 +0000)]
IR: Fix comment from r213824

llvm-svn: 213836

10 years ago[OPENMP] Fixed DSA detecting for function parameters: by default they must be private.
Alexey Bataev [Thu, 24 Jul 2014 02:33:58 +0000 (02:33 +0000)]
[OPENMP] Fixed DSA detecting for function parameters: by default they must be private.

llvm-svn: 213835

10 years agoTake the canonical type when forming a canonical template argument with
Richard Smith [Thu, 24 Jul 2014 02:27:39 +0000 (02:27 +0000)]
Take the canonical type when forming a canonical template argument with
'nullptr' value. Fixes profiling of such template arguments to always give the
same value.

llvm-svn: 213834

10 years agoRemove a stray semicolon. [-Wpedantic]
NAKAMURA Takumi [Thu, 24 Jul 2014 02:11:24 +0000 (02:11 +0000)]
Remove a stray semicolon. [-Wpedantic]

llvm-svn: 213833

10 years agoUpdate library dependencies.
NAKAMURA Takumi [Thu, 24 Jul 2014 02:10:42 +0000 (02:10 +0000)]
Update library dependencies.

llvm-svn: 213832

10 years agoR600: Implement enableClusterLoads()
Matt Arsenault [Thu, 24 Jul 2014 02:10:17 +0000 (02:10 +0000)]
R600: Implement enableClusterLoads()

llvm-svn: 213831

10 years ago[AArch64] Fix a bug generating incorrect instruction when building small vector.
Kevin Qin [Thu, 24 Jul 2014 02:05:42 +0000 (02:05 +0000)]
[AArch64] Fix a bug generating incorrect instruction when building small vector.

This bug is introduced by r211144. The element of operand may be
smaller than the element of result, but previous commit can
only handle the contrary condition. This commit is to handle this
scenario and generate optimized codes like ZIP1.

llvm-svn: 213830

10 years agoAdd debug asserts / sanity checks to
Jason Molenda [Thu, 24 Jul 2014 01:53:11 +0000 (01:53 +0000)]
Add debug asserts / sanity checks to
GDBRemoteRegisterContext::ReadRegisterBytes and
GDBRemoteRegisterContext::WriteRegisterBytes to ensure we don't try
to read/write off the end of the register buffer.  This should never
happen but we've had some target confusion in the past where it
did; adding the checks is prudent to avoid crashing here if it happens
again.

<rdar://problem/16450971>
<rdar://problem/16458182>

llvm-svn: 213829

10 years agoIncrease the gdb-remote packet timeout for the first packet we send
Jason Molenda [Thu, 24 Jul 2014 01:36:24 +0000 (01:36 +0000)]
Increase the gdb-remote packet timeout for the first packet we send
to the remote side (QStartNoAckMode) - it may take a little longer
than normal to get a reply.

In debugserver, hardcode the priority for several threads so they
aren't de-prioritized when a user app is using system resources.
Also, set the names of the threads.

<rdar://problem/17509866>

llvm-svn: 213828

10 years ago[AArch64] Disable some optimization cases for type conversion from sint to fp, becaus...
Jiangning Liu [Thu, 24 Jul 2014 01:29:59 +0000 (01:29 +0000)]
[AArch64] Disable some optimization cases for type conversion from sint to fp, because those optimization cases are micro-architecture dependent and only make sense for Cyclone. A new predicate Cyclone is introduced in .td file.

llvm-svn: 213827

10 years agoFixed PR20411 - bug in getINSERTPS()
Filipe Cabecinhas [Thu, 24 Jul 2014 01:28:21 +0000 (01:28 +0000)]
Fixed PR20411 - bug in getINSERTPS()

When we had a vector_shuffle where we had an input from each vector, we
could miscompile it because we were assuming the input from V2 wouldn't
be moved from where it was on the vector.

Added a test case.

llvm-svn: 213826

10 years agoRemove unused Prev pointer from MacroInfo chain.
Richard Smith [Thu, 24 Jul 2014 01:13:23 +0000 (01:13 +0000)]
Remove unused Prev pointer from MacroInfo chain.

Remove pointless MICache: it only ever contained up to 1 object, and was only
non-empty when recovering from an error. There's no performance or memory win
from maintaining this cache.

llvm-svn: 213825

10 years agoIR: Add Value::sortUseList()
Duncan P. N. Exon Smith [Thu, 24 Jul 2014 00:53:19 +0000 (00:53 +0000)]
IR: Add Value::sortUseList()

Add `Value::sortUseList()`, templated on the comparison function to use.

The sort is an iterative merge sort that uses a binomial vector of
already-merged lists to limit the size overhead to `O(1)`.

This is part of PR5680.

llvm-svn: 213824

10 years agoAdd a .clang-format file to enhance formatting experience with clang-format
David Majnemer [Thu, 24 Jul 2014 00:26:04 +0000 (00:26 +0000)]
Add a .clang-format file to enhance formatting experience with clang-format

clang-format is a handy tool that formats code very intelligently.  I'd
like to use it with LLDB but it requires a .clang-format file to inform
it about LLDB-specific formatting rules.

More information on these rules are here:
http://clang.llvm.org/docs/ClangFormatStyleOptions.html

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

llvm-svn: 213823

10 years agoObjectFileMachO: Silence signed/unsigned comparison warning
David Majnemer [Thu, 24 Jul 2014 00:24:12 +0000 (00:24 +0000)]
ObjectFileMachO: Silence signed/unsigned comparison warning

File::SeekFromStart returns an off_t representing the position of the
file after seeking.  This return value is always going to be one of two
values: the input or -1 in the case of failure.

ObjectFileMachO compares an expression of type off_t from the return of
File::SeekFromStart(segment.fileoff) and compares it for equality with
segment.fileoff.

The type of segment_command_64::fileoff is unsigned while off_t is
signed, comparing them emits a diagnostic under GCC.

Instead, we can just compare SeekFromSTart with -1 to see if we
successfully seeked.

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

llvm-svn: 213822