platform/upstream/llvm.git
9 years agoAdd translationUnitDecl matcher.
Samuel Benzaquen [Tue, 10 Feb 2015 14:46:45 +0000 (14:46 +0000)]
Add translationUnitDecl matcher.

Summary: Add translationUnitDecl matcher.

Reviewers: alexfh

Subscribers: klimek, cfe-commits

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

llvm-svn: 228694

9 years agoRenamed module.map to module.modulemap (modularize).
John Thompson [Tue, 10 Feb 2015 14:45:30 +0000 (14:45 +0000)]
Renamed module.map to module.modulemap (modularize).

llvm-svn: 228693

9 years agoRenamed module.map to module.modulemap.
John Thompson [Tue, 10 Feb 2015 14:29:16 +0000 (14:29 +0000)]
Renamed module.map to module.modulemap.

llvm-svn: 228692

9 years agoRe-committing r228628 with a fix for 64-bit builds.
Aaron Ballman [Tue, 10 Feb 2015 14:28:11 +0000 (14:28 +0000)]
Re-committing r228628 with a fix for 64-bit builds.

On Windows, we now use RaiseException to generate the kind of trap we require (one which calls our vectored exception handler), and fall back to using a volatile write to simulate a trap elsewhere.

llvm-svn: 228691

9 years agoFix typo in cmake example docs
Renato Golin [Tue, 10 Feb 2015 14:15:58 +0000 (14:15 +0000)]
Fix typo in cmake example docs

Patch by Vinicius Tinti.

llvm-svn: 228690

9 years agoThe -I option needs a space, apparently, from the actual implementation.
John Thompson [Tue, 10 Feb 2015 13:51:17 +0000 (13:51 +0000)]
The -I option needs a space, apparently, from the actual implementation.

llvm-svn: 228689

9 years ago[X86][AVX2] Missing AVX2 memory folding instructions
Simon Pilgrim [Tue, 10 Feb 2015 13:22:57 +0000 (13:22 +0000)]
[X86][AVX2] Missing AVX2 memory folding instructions

Added most of the missing vector folding patterns for AVX2 (as well as fixing the vpermpd and verpmq patterns)

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

llvm-svn: 228688

9 years ago[mips][microMIPS] Add disassembler tests for 16-bit instructions BREAK16 and SDBBP16
Jozef Kolek [Tue, 10 Feb 2015 13:20:51 +0000 (13:20 +0000)]
[mips][microMIPS] Add disassembler tests for 16-bit instructions BREAK16 and SDBBP16

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

llvm-svn: 228687

9 years agoBugfix for missed dependency from store to load in buildSchedGraph().
Jonas Paulsson [Tue, 10 Feb 2015 13:03:32 +0000 (13:03 +0000)]
Bugfix for missed dependency from store to load in buildSchedGraph().

Background: When handling underlying objects for a store, the vector
of previous mem uses, mapped to the same Value, is afterwards cleared
(regardless of ThisMayAlias). This means that during handling of the
next store using the same Value, adjustChainDeps() must be called,
otherwise a dependency might be missed.

For example, three spill/reload (NonAliasing) memory accesses using
the same Value 'a', with different offsets:

    SU(2): store  @a
    SU(1): store  @a, Offset:1
    SU(0): load   @a

In this case we have:

* SU(1) does not need a dep against SU(0). Therefore,SU(0) ends up in
  RejectMemNodes and is removed from the mem-uses list (AliasMemUses
  or NonAliasMemUses), as this list is cleared.

* SU(2) needs a dep against SU(0). Therefore, SU(2) must check
  RejectMemNodes by calling adjustChainDeps().

Previously, for store SUs, adjustChainDeps() was only called if
MayAlias was true, missing the S(2) to S(0) dependency in the case
above. The fix is to always call adjustChainDeps(), regardless of
MayAlias, since this applies both for AliasMemUses and
NonAliasMemUses.

No testcase found for any in-tree target.

llvm-svn: 228686

9 years ago[X86][XOP] Added XOP memory folding patterns + tests
Simon Pilgrim [Tue, 10 Feb 2015 12:57:17 +0000 (12:57 +0000)]
[X86][XOP] Added XOP memory folding patterns + tests

This patch adds the complete AMD Bulldozer XOP instruction set to the memory folding pattern tables for stack folding, etc.

Note: Many of the XOP instructions have multiple table entries as it can fold loads from different sources.

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

llvm-svn: 228685

9 years ago[mips][microMIPS] Fix disassembling of 16-bit microMIPS instructions LWM16 and SWM16
Jozef Kolek [Tue, 10 Feb 2015 12:41:13 +0000 (12:41 +0000)]
[mips][microMIPS] Fix disassembling of 16-bit microMIPS instructions LWM16 and SWM16

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

llvm-svn: 228683

9 years ago[X86][FastIsel] Avoid introducing legacy SSE instructions if the target has AVX.
Andrea Di Biagio [Tue, 10 Feb 2015 12:04:41 +0000 (12:04 +0000)]
[X86][FastIsel] Avoid introducing legacy SSE instructions if the target has AVX.

This patch teaches X86FastISel how to select AVX instructions for scalar
float/double convert operations.

Before this patch, X86FastISel always selected legacy SSE instructions
for FPExt (from float to double) and FPTrunc (from double to float).

For example:
\code
  define double @foo(float %f) {
    %conv = fpext float %f to double
    ret double %conv
  }
\end code

Before (with -mattr=+avx -fast-isel) X86FastIsel selected a CVTSS2SDrr which is
legacy SSE:
  cvtss2sd %xmm0, %xmm0

With this patch, X86FastIsel selects a VCVTSS2SDrr instead:
  vcvtss2sd %xmm0, %xmm0, %xmm0

Added test fast-isel-fptrunc-fpext.ll to check both the register-register and
the register-memory float/double conversion variants.

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

llvm-svn: 228682

9 years agoAdd thread-id field in *stopped notification (MI)
Ilia K [Tue, 10 Feb 2015 12:02:03 +0000 (12:02 +0000)]
Add thread-id field in *stopped notification (MI)

Summary:
Add thread-id field in *stopped notification (MI) + tests

All tests pass on OS X

Reviewers: zturner, clayborg, abidh

Reviewed By: clayborg

Subscribers: lldb-commits, zturner, clayborg, abidh

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

llvm-svn: 228681

9 years ago[ELF][ARM] Add veneer generation to branch instructions
Denis Protivensky [Tue, 10 Feb 2015 09:31:42 +0000 (09:31 +0000)]
[ELF][ARM] Add veneer generation to branch instructions

When calling ARM code from Thumb and vice versa,
a veneer that switches instruction set should be generated.
Added veneer generation for ARM_JUMP24 ARM_THM_JUMP24 instructions.

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

llvm-svn: 228680

9 years ago[clang-tidy] Checker for inaccurate use of erase() method.
Gabor Horvath [Tue, 10 Feb 2015 09:14:26 +0000 (09:14 +0000)]
[clang-tidy] Checker for inaccurate use of erase() method.

Algorithms like remove() does not actually remove any element from the
container but returns an iterator to the first redundant element at the end
of the container. These redundant elements must be removed using the
erase() method. This check warns when not all of the elements will be
removed due to using an inappropriate overload.

Reviewer: alexfh

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

llvm-svn: 228679

9 years agoFix __ldrexd arm intrinsic.
James Molloy [Tue, 10 Feb 2015 09:09:04 +0000 (09:09 +0000)]
Fix __ldrexd arm intrinsic.

The parameter definition of this API is const volatile __int64*, but it is not defined correctly in clang. Move the 'CD' to the correct location.

Bug tracked here: http://llvm.org/bugs/show_bug.cgi?id=21004

Patch by Daniel Jump!

llvm-svn: 228678

9 years agoRevert r228556: InstCombine: propagate nonNull through assume
Chandler Carruth [Tue, 10 Feb 2015 08:07:32 +0000 (08:07 +0000)]
Revert r228556: InstCombine: propagate nonNull through assume

This commit isn't using the correct context, and is transfoming calls
that are operands to loads rather than calls that are operands to an
icmp feeding into an assume. I've replied on the original review thread
with a very reduced test case and some thoughts on how to rework this.

llvm-svn: 228677

9 years ago[Orc] Fix a bug in the LazyEmittingLayer - capture names by value (as
Lang Hames [Tue, 10 Feb 2015 07:35:39 +0000 (07:35 +0000)]
[Orc] Fix a bug in the LazyEmittingLayer - capture names by value (as
std::strings) rather than StringRefs in JITSymbol get-address lambda.

Capturing a StringRef by-value is still effectively capturing a reference, which
is no good here because the referenced string may be gone by the time the lambda
is being evaluated the original value may be gone. Make sure to capture a
std::string instead.

No test case: This bug doesn't manifest under OrcMCJITReplacement, since it
keeps IR modules (from which the StringRefs are sourced) alive permanently.

llvm-svn: 228676

9 years ago[Orc] Add missing casserts header to JITSymbol.h.
Lang Hames [Tue, 10 Feb 2015 07:26:19 +0000 (07:26 +0000)]
[Orc] Add missing casserts header to JITSymbol.h.

llvm-svn: 228675

9 years agoAdd tests for -interpreter-exec command (MI)
Ilia K [Tue, 10 Feb 2015 06:35:58 +0000 (06:35 +0000)]
Add tests for -interpreter-exec command (MI)

llvm-svn: 228674

9 years agoDo not force "-static" for aarch64 iOS kernel/kext assembly code.
Bob Wilson [Tue, 10 Feb 2015 06:33:04 +0000 (06:33 +0000)]
Do not force "-static" for aarch64 iOS kernel/kext assembly code.

Somehow a check for aarch64 was added to the Darwin toolchain's
isKernelStatic function as part of the initial commit for Apple's
arm64 target (r205100). That check was not in any of Apple's internal
code and no one here knows where it came from. It has been harmless
because "-static" does not change much, if anything, for arm64 iOS code,
but it makes no sense to keep this check.

llvm-svn: 228673

9 years ago[X86] Preserve mem refs on newly created 'Store' node instead of 'Load' node when...
Craig Topper [Tue, 10 Feb 2015 06:29:28 +0000 (06:29 +0000)]
[X86] Preserve mem refs on newly created 'Store' node instead of 'Load' node when handling store unfolding.

Bug spotted by Steve King.

I have no idea how to test this.

llvm-svn: 228672

9 years ago[X86] Remove unnecessary alignment checks from the load folding tables.
Craig Topper [Tue, 10 Feb 2015 05:10:50 +0000 (05:10 +0000)]
[X86] Remove unnecessary alignment checks from the load folding tables.

llvm-svn: 228671

9 years agoTeach llvm_add_library() to find include dirs.
Zachary Turner [Tue, 10 Feb 2015 05:04:37 +0000 (05:04 +0000)]
Teach llvm_add_library() to find include dirs.

Since header files are not compilation units, CMake does not require
you to specify them in the CMakeLists.txt file.  As a result, unless a
header file is explicitly added, CMake won't know about it, and when
generating IDE-based projects, CMake won't put the header files into
the IDE project.  LLVM currently tries to deal with this in two ways:

  1) It looks for all .h files that are in the project directory, and
     adds those.
  2) llvm_add_library() understands the ADDITIONAL_HEADERS argument,
     which allows one to list an arbitrary list of headers.

This patch takes things one step further.  It adds the ability for
llvm_add_library() to take an ADDITIONAL_HEADER_DIRS argument, which
will specify a list of folders which CMake will glob for header files.
Furthermore, it will glob not only for .h files, but also for .inc
files.

Included in this CL is an update to one of the existing users of
ADDITIONAL_HEADERS to use this new argument instead, to serve as an
illustration of how this cleans up the CMake.

The big advantage of this new approach is that until now, there was no
way for the IDE projects to locate the header files that are in the
include tree.  In other words, if you are in, for example,
lib/DebugInfo/DWARF, the corresponding includes for this project will
be located under include/llvm/DebugInfo/DWARF.  Now, in the
CMakeLists.txt for lib/DebugInfo/DWARF, you can simply write:

  ADDITIONAL_HEADER_DIRS
  ../../include/llvm/DebugInfo/DWARF

as an argument to llvm_add_library(), and all header files will get
added to the IDE project.

Differential Revision: http://reviews.llvm.org/D7460
Reviewed By: Chris Bieneman

llvm-svn: 228670

9 years agoDefine HAVE_DIA_SDK on Windows when DIA is present.
Zachary Turner [Tue, 10 Feb 2015 05:04:25 +0000 (05:04 +0000)]
Define HAVE_DIA_SDK on Windows when DIA is present.

This allows all CMake projects, as well as C++ code, to detect if
and when DIA SDK is available for use so that we can enable the
DIA-based PDB reader implementation.

Differential Revision: http://reviews.llvm.org/D7457
Reviewed By: Chandler Carruth

llvm-svn: 228669

9 years agounwind: improve compilation on Linux with gcc
Saleem Abdulrasool [Tue, 10 Feb 2015 03:43:33 +0000 (03:43 +0000)]
unwind: improve compilation on Linux with gcc

gcc still defaults to C89 which does not support BCPL style comments.  This
splits up the sources list in CMakeLists and selectively adds compile flags for
using C99 which avoids a number of warnings in -Wpedantic mode.  NFC.

llvm-svn: 228665

9 years agounwind: clean up some stray semicolons
Saleem Abdulrasool [Tue, 10 Feb 2015 03:43:31 +0000 (03:43 +0000)]
unwind: clean up some stray semicolons

Clean up some stray semicolons found by GCC 4.9 -Wpedantic.  NFC.

llvm-svn: 228664

9 years agounwind: clean up -Wundef warnings
Saleem Abdulrasool [Tue, 10 Feb 2015 03:43:28 +0000 (03:43 +0000)]
unwind: clean up -Wundef warnings

The unified register management interfaces had multiple naked macros for
conditional logic.  This cleans them up to use the defined() form, avoiding
-Wundef warnings.  NFC.

llvm-svn: 228663

9 years agounwind: fix -Wformat warnings from gcc
Saleem Abdulrasool [Tue, 10 Feb 2015 03:43:23 +0000 (03:43 +0000)]
unwind: fix -Wformat warnings from gcc

Clean up the format specifiers for pedantic compilation with gcc 4.9 on Linux.
NFC.

llvm-svn: 228662

9 years ago[modules] When determining whether a name from a module replaces a name we
Richard Smith [Tue, 10 Feb 2015 03:28:10 +0000 (03:28 +0000)]
[modules] When determining whether a name from a module replaces a name we
already have, check whether the name from the module is actually newer than the
existing declaration. If it isn't, we might (say) replace a visible declaration
with an injected friend, and thus make it invisible (or lose a default argument
or an array bound).

llvm-svn: 228661

9 years agoAnd make the globbing behavior available via the SB API
Enrico Granata [Tue, 10 Feb 2015 03:16:55 +0000 (03:16 +0000)]
And make the globbing behavior available via the SB API

llvm-svn: 228660

9 years agoAdd a test case for the launch via argdumper globbing mechanism
Enrico Granata [Tue, 10 Feb 2015 03:13:22 +0000 (03:13 +0000)]
Add a test case for the launch via argdumper globbing mechanism

llvm-svn: 228659

9 years agoAdd a "launch with globber" mode that lets you launch a process after having globbed...
Enrico Granata [Tue, 10 Feb 2015 03:06:24 +0000 (03:06 +0000)]
Add a "launch with globber" mode that lets you launch a process after having globbed the command line arguments via argdumper instead of routing via /bin/sh

llvm-svn: 228658

9 years agoRemove non-test files that appear to have been accidentally committed in r228641.
Nick Lewycky [Tue, 10 Feb 2015 02:39:17 +0000 (02:39 +0000)]
Remove non-test files that appear to have been accidentally committed in r228641.

llvm-svn: 228657

9 years ago[x86] Fix PR22524: the DAG combiner was incorrectly handling illegal
Chandler Carruth [Tue, 10 Feb 2015 02:25:56 +0000 (02:25 +0000)]
[x86] Fix PR22524: the DAG combiner was incorrectly handling illegal
nodes when folding bitcasts of constants.

We can't fold things and then check after-the-fact whether it was legal.
Once we have formed the DAG node, arbitrary other nodes may have been
collapsed to it. There is no easy way to go back. Instead, we need to
test for the specific folding cases we're interested in and ensure those
are legal first.

This could in theory make this less powerful for bitcasting from an
integer to some vector type, but AFAICT, that can't actually happen in
the SDAG so its fine. Now, we *only* whitelist specific int->fp and
fp->int bitcasts for post-legalization folding. I've added the test case
from the PR.

(Also as a note, this does not appear to be in 3.6, no backport needed)

llvm-svn: 228656

9 years agoVerifier: reuse getInlinedAt() result, NFC
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 02:25:18 +0000 (02:25 +0000)]
Verifier: reuse getInlinedAt() result, NFC

llvm-svn: 228655

9 years agoA temporary fix for backward compatibility breakages caused by PR12117.
Larisse Voufo [Tue, 10 Feb 2015 02:20:14 +0000 (02:20 +0000)]
A temporary fix for backward compatibility breakages caused by PR12117.

llvm-svn: 228654

9 years ago[DOC] Asserts are only enabled in Debug build, update the doc accordingly
Mehdi Amini [Tue, 10 Feb 2015 02:04:29 +0000 (02:04 +0000)]
[DOC] Asserts are only enabled in Debug build, update the doc accordingly

Summary:
The CMake configuration is explicitely looking for Debug build, all the
other variant disable assertions.

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 228653

9 years agoIR: Remove unnecessary fields from MDTemplateParameter
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:59:57 +0000 (01:59 +0000)]
IR: Remove unnecessary fields from MDTemplateParameter

I noticed this fields were never used in r228607, but I neglected to
propagate that into `MDTemplateParameter` until now.  This really should
have been done before commit in r228640; sorry for the churn.

llvm-svn: 228652

9 years ago[ASan] Add missing RUN: prefix.
Alexey Samsonov [Tue, 10 Feb 2015 01:55:02 +0000 (01:55 +0000)]
[ASan] Add missing RUN: prefix.

llvm-svn: 228651

9 years ago[CMake] PowerPC: detect host endianness to build corresponding version of runtimes.
Alexey Samsonov [Tue, 10 Feb 2015 01:42:44 +0000 (01:42 +0000)]
[CMake] PowerPC: detect host endianness to build corresponding version of runtimes.

Prior to this change we built two identical runtimes, named "powerpc64"
and "powerpc64le", while their actual endianness matched the host
endianness.

llvm-svn: 228650

9 years agoVerifier: Check for valid tags in debug nodes
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:40:40 +0000 (01:40 +0000)]
Verifier: Check for valid tags in debug nodes

Check that specialized `DebugNode`s have valid `DW_TAG`s.

llvm-svn: 228649

9 years agoIR: Add accessors to MDExpression
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:36:46 +0000 (01:36 +0000)]
IR: Add accessors to MDExpression

Add some accessors to `MDExpression`.

llvm-svn: 228648

9 years agoVerifier: Add simple checks for MDLocation
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:32:56 +0000 (01:32 +0000)]
Verifier: Add simple checks for MDLocation

llvm-svn: 228647

9 years agoDriver: Replace switch cases with ifs.
Rui Ueyama [Tue, 10 Feb 2015 01:10:23 +0000 (01:10 +0000)]
Driver: Replace switch cases with ifs.

We used to do like this instead of putting all command line processing
code within one gigantic switch statement. It is converted to a switch
in r188958, which introduced InputGraph.

In this patch I roll that change back. Now all "break"s are removed,
and the nesting is one level shallow.

llvm-svn: 228646

9 years agoVerifier: Create stubs for specialized metadata nodes
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:09:50 +0000 (01:09 +0000)]
Verifier: Create stubs for specialized metadata nodes

llvm-svn: 228645

9 years agoAsmParser: Add stubs for specialized MDNodes, NFC
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:08:16 +0000 (01:08 +0000)]
AsmParser: Add stubs for specialized MDNodes, NFC

Well, the exact error from the failed parse will change, but...

llvm-svn: 228644

9 years agoRemove trailing space.
Rui Ueyama [Tue, 10 Feb 2015 01:06:14 +0000 (01:06 +0000)]
Remove trailing space.

llvm-svn: 228643

9 years agoX86: Emit an ABI compliant prologue and epilogue for Win64
David Majnemer [Tue, 10 Feb 2015 00:57:42 +0000 (00:57 +0000)]
X86: Emit an ABI compliant prologue and epilogue for Win64

Win64 has specific contraints on what valid prologues and epilogues look
like.  This constraint is born from the flexibility and descriptiveness
of Win64's unwind opcodes.

Prologues previously emitted by LLVM could not be represented by the
unwind opcodes, preventing operations powered by stack unwinding to
successfully work.

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

llvm-svn: 228641

9 years agoIR: Add specialized debug info metadata nodes
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 00:52:32 +0000 (00:52 +0000)]
IR: Add specialized debug info metadata nodes

Add specialized debug info metadata nodes that match the `DIDescriptor`
wrappers (used by `DIBuilder`) closely.  Assembly and bitcode support to
follow soon (it'll mostly just be obvious), but this sketches in today's
schema.  This is the first big commit (well, the only *big* one aside
from the testcase changes that'll come when I move this into place) for
PR22464.

I've marked a bunch of obvious changes as `TODO`s in the source; I plan
to make those changes promptly after this hierarchy is moved underneath
`DIDescriptor`, but for now I'm aiming mostly to match the status quo.

llvm-svn: 228640

9 years agoAdd JSON.cpp to CMakeLists.txt
Chaoren Lin [Tue, 10 Feb 2015 00:47:43 +0000 (00:47 +0000)]
Add JSON.cpp to CMakeLists.txt

llvm-svn: 228639

9 years agoMigrate PPCAsmPrinter's subtarget from reference to pointer in
Eric Christopher [Tue, 10 Feb 2015 00:44:17 +0000 (00:44 +0000)]
Migrate PPCAsmPrinter's subtarget from reference to pointer in
preparation for making it MachineFunction dependent.

llvm-svn: 228638

9 years ago[Orc] Back out one of the GCC ICE workarounds from r228568. NFC.
Lang Hames [Tue, 10 Feb 2015 00:37:26 +0000 (00:37 +0000)]
[Orc] Back out one of the GCC ICE workarounds from r228568. NFC.

llvm-svn: 228637

9 years agoAdd a JSON producer to LLDB - this is a set of classes that encapsulate JSON objects...
Enrico Granata [Tue, 10 Feb 2015 00:30:07 +0000 (00:30 +0000)]
Add a JSON producer to LLDB - this is a set of classes that encapsulate JSON objects and allow you to write them to a Stream for subsequent processing

Using this JSON producer, write a little tool that expands its own command-line arguments and dumps them to stdout as a JSON array

llvm-svn: 228636

9 years agoFix the clang -Werror build (-Wunused-variable)
David Blaikie [Tue, 10 Feb 2015 00:16:36 +0000 (00:16 +0000)]
Fix the clang -Werror build (-Wunused-variable)

llvm-svn: 228635

9 years agoAdjust how we avoid poll insertion inside the poll function (NFC)
Philip Reames [Tue, 10 Feb 2015 00:04:53 +0000 (00:04 +0000)]
Adjust how we avoid poll insertion inside the poll function (NFC)

I realized that my early fix for this was overly complicated.  Rather than scatter checks around in a bunch of places, just exit early when we visit the poll function itself.

Thinking about it a bit, the whole inlining mechanism used with gc.safepoint_poll could probably be cleaned up a bit.  Originally, poll insertion was fused with gc relocation rewriting.  It might be worth going back to see if we can simplify the chain of events now that these two are seperated.  As one thought, maybe it makes sense to rewrite calls inside the helper function before inlining it to the many callers.  This would require us to visit the poll function before any other functions though..

llvm-svn: 228634

9 years agoReverting r228628; it broke at least one builder due to the forward declare of RaiseE...
Aaron Ballman [Tue, 10 Feb 2015 00:00:54 +0000 (00:00 +0000)]
Reverting r228628; it broke at least one builder due to the forward declare of RaiseException.

llvm-svn: 228633

9 years agoDebug info: When updating debug info during SROA, do not emit debug info
Adrian Prantl [Mon, 9 Feb 2015 23:57:22 +0000 (23:57 +0000)]
Debug info: When updating debug info during SROA, do not emit debug info
for any padding introduced by SROA. In particular, do not emit debug info
for an alloca that represents only the padding introduced by a previous
iteration.

Fixes PR22495.

llvm-svn: 228632

9 years agoDebug info: Use DW_OP_bit_piece instead of DW_OP_piece in the
Adrian Prantl [Mon, 9 Feb 2015 23:57:15 +0000 (23:57 +0000)]
Debug info: Use DW_OP_bit_piece instead of DW_OP_piece in the
intermediate representation. This
- increases consistency by using the same granularity everywhere
- allows for pieces < 1 byte
- DW_OP_piece didn't actually allow storing an offset.

Part of PR22495.

llvm-svn: 228631

9 years ago[Hexagon] Adding missing load instructions and removing an unused multiclass parameter.
Colin LeMahieu [Mon, 9 Feb 2015 23:45:24 +0000 (23:45 +0000)]
[Hexagon] Adding missing load instructions and removing an unused multiclass parameter.

llvm-svn: 228630

9 years agoADT: Allow up to 18 arguments in hash_combine()
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 23:21:05 +0000 (23:21 +0000)]
ADT: Allow up to 18 arguments in hash_combine()

I just realized that the specialized metadata node patch I'm about to
commit won't compile on old compilers.  Bump `hash_combine()`'s support
for non-variadic templates to 18 (I tested this by reversing the logic
in the #ifdef).

llvm-svn: 228629

9 years agoOn Windows, we now use RaiseException to generate the kind of trap we require (one...
Aaron Ballman [Mon, 9 Feb 2015 23:11:39 +0000 (23:11 +0000)]
On Windows, we now use RaiseException to generate the kind of trap we require (one which calls our vectored exception handler), and fall back to using a volatile write to simulate a trap elsewhere.

llvm-svn: 228628

9 years ago[Hexagon] Factoring classes out of some load patterns and deleting some unused ones.
Colin LeMahieu [Mon, 9 Feb 2015 23:05:44 +0000 (23:05 +0000)]
[Hexagon] Factoring classes out of some load patterns and deleting some unused ones.

llvm-svn: 228627

9 years ago[Statepoint] Improve two asserts, fix some style (NFC)
Ramkumar Ramachandra [Mon, 9 Feb 2015 23:02:10 +0000 (23:02 +0000)]
[Statepoint] Improve two asserts, fix some style (NFC)

Summary:
It's important that our users immediately know what gc.safepoint_poll
is. Also fix the style of the declaration of CreateGCStatepoint, in
preparation for another change that will wrap it.

Reviewers: reames

Subscribers: llvm-commits

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

llvm-svn: 228626

9 years agoPlaceSafepoints: modernize gc.result.* -> gc.result
Ramkumar Ramachandra [Mon, 9 Feb 2015 23:00:40 +0000 (23:00 +0000)]
PlaceSafepoints: modernize gc.result.* -> gc.result

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

llvm-svn: 228625

9 years ago[Static Analyzer] The name of the checker that reports a bug is added
Gabor Horvath [Mon, 9 Feb 2015 22:52:26 +0000 (22:52 +0000)]
[Static Analyzer] The name of the checker that reports a bug is added
to the plist output. This check_name field does not guaranteed to be the
same as the name of the checker in the future.

Reviewer: Anna Zaks

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

llvm-svn: 228624

9 years agoDebugInfo: Remove DW_TAG_constant
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 22:48:04 +0000 (22:48 +0000)]
DebugInfo: Remove DW_TAG_constant

Remove handling for DW_TAG_constant.  We started producing it in
r110656, but reverted that in r110876 without dropping the support.
Finish the job.

llvm-svn: 228623

9 years agoUpdate file comment to clarify points highlighted in review (NFC)
Philip Reames [Mon, 9 Feb 2015 22:44:03 +0000 (22:44 +0000)]
Update file comment to clarify points highlighted in review (NFC)

llvm-svn: 228621

9 years agoUse range for loops in PlaceSafepoints (NFC)
Philip Reames [Mon, 9 Feb 2015 22:26:11 +0000 (22:26 +0000)]
Use range for loops in PlaceSafepoints (NFC)

llvm-svn: 228620

9 years agoIR: Take uint64_t in DIBuilder::createExpression()
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 22:13:27 +0000 (22:13 +0000)]
IR: Take uint64_t in DIBuilder::createExpression()

`DIExpression` deals with `uint64_t`, so it doesn't make sense that
`createExpression()` is created from `int64_t`.  Switch to `uint64_t` to
unify them.

I've temporarily left in the `int64_t` version, which forwards to the
`uint64_t` version.  I'll delete it once I've updated the callers.

llvm-svn: 228619

9 years agoIntroduce more tests for PlaceSafepoints
Philip Reames [Mon, 9 Feb 2015 22:10:15 +0000 (22:10 +0000)]
Introduce more tests for PlaceSafepoints

These tests the two optimizations for backedge insertion currently implemented and the split backedge flag which is currently off by default.

llvm-svn: 228617

9 years agoRevert "Raising minimum required CMake version to 2.8.12.2."
Chris Bieneman [Mon, 9 Feb 2015 22:07:49 +0000 (22:07 +0000)]
Revert "Raising minimum required CMake version to 2.8.12.2."

This reverts commit add62ac537d8249fa2161405066e318ca80e199d.

llvm-svn: 228616

9 years agoRaising minimum required CMake version to 2.8.12.2.
Chris Bieneman [Mon, 9 Feb 2015 22:05:07 +0000 (22:05 +0000)]
Raising minimum required CMake version to 2.8.12.2.

llvm-svn: 228615

9 years ago[Hexagon] Removing more V4 predicates since V4 is the required minimum.
Colin LeMahieu [Mon, 9 Feb 2015 21:56:37 +0000 (21:56 +0000)]
[Hexagon] Removing more V4 predicates since V4 is the required minimum.

llvm-svn: 228614

9 years agoBe more conservative about gethostname()'s truncating behaviour
Ben Langmuir [Mon, 9 Feb 2015 21:55:44 +0000 (21:55 +0000)]
Be more conservative about gethostname()'s truncating behaviour

Don't assume it will provide an error or null-terminate the string on
truncation, since POSIX doesn't guarantee either behaviour (although
Linux and Darwin at least will do the 'right thing').

llvm-svn: 228613

9 years agoMinor test cleanup
Philip Reames [Mon, 9 Feb 2015 21:50:31 +0000 (21:50 +0000)]
Minor test cleanup

a) add gc attribute
b) remove unused param

llvm-svn: 228612

9 years agoMemDerefPrinter: Require DataLayoutPass for higher accuracy
Ramkumar Ramachandra [Mon, 9 Feb 2015 21:50:03 +0000 (21:50 +0000)]
MemDerefPrinter: Require DataLayoutPass for higher accuracy

Without a valid data layout, deferenceable(N) doesn't get parsed or
propagated. Since this is the key item we are testing, add a dependency
on the pass.

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

llvm-svn: 228611

9 years agoAdd basic tests for PlaceSafepoints
Philip Reames [Mon, 9 Feb 2015 21:48:05 +0000 (21:48 +0000)]
Add basic tests for PlaceSafepoints

This is just adding really simple tests which should have been part of the original submission.  When doing so, I discovered that I'd mistakenly removed required pieces when preparing the patch for upstream submission.  I fixed two such bugs in this submission.

llvm-svn: 228610

9 years agoVerifier: Const-qualify Metadata, NFC
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 21:30:05 +0000 (21:30 +0000)]
Verifier: Const-qualify Metadata, NFC

llvm-svn: 228609

9 years agoIR: Document horrible abuse of loose DIDescriptor, NFC
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 21:26:34 +0000 (21:26 +0000)]
IR: Document horrible abuse of loose DIDescriptor, NFC

I'll circle back and fix this somehow; for now I just don't want to
forget about it.

llvm-svn: 228608

9 years agoIR: Remove dead code in DITemplate*
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 21:23:34 +0000 (21:23 +0000)]
IR: Remove dead code in DITemplate*

These are never referenced or filled in.

llvm-svn: 228607

9 years agoisDereferenceablePointer: look through gc.relocate calls
Ramkumar Ramachandra [Mon, 9 Feb 2015 21:08:03 +0000 (21:08 +0000)]
isDereferenceablePointer: look through gc.relocate calls

While a theoretical GC might change dereferenceability on collection,
there is no such known collector and no need to account for the case
with a flag yet.

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

llvm-svn: 228606

9 years ago[Hexagon] Removing v2-4 flags. V4 is the minimum supported version.
Colin LeMahieu [Mon, 9 Feb 2015 21:07:35 +0000 (21:07 +0000)]
[Hexagon] Removing v2-4 flags.  V4 is the minimum supported version.

llvm-svn: 228605

9 years agoDiagnose timeouts in the LockFileManager and delete the dead lock file
Ben Langmuir [Mon, 9 Feb 2015 20:35:13 +0000 (20:35 +0000)]
Diagnose timeouts in the LockFileManager and delete the dead lock file

If the lock file manager times out, we should give an error rather than
silently trying to load the existing module.  And delete the
(presumably) dead lock file, since it will otherwise prevent progress in
future invokations. This is unsound since we have no way to prove that
the lock file we are deleting is the same one we timed out on, but since
the lock is only to avoid excessive rebuilding anyway it should be okay.
Depends on llvm r228603.

llvm-svn: 228604

9 years agoReduce the LockFileManager timeout, and provide unsafeRemoveLockFile
Ben Langmuir [Mon, 9 Feb 2015 20:34:24 +0000 (20:34 +0000)]
Reduce the LockFileManager timeout, and provide unsafeRemoveLockFile

5 minutes is an eternity, so try to strike a better balance between
waiting long enough for any reasonable module build and not so long that
users kill the process because they think it's hanging.

Also give the client a way to delete the lock file after a timeout.

llvm-svn: 228603

9 years ago[Hexagon] Factoring classes out of store patterns.
Colin LeMahieu [Mon, 9 Feb 2015 20:33:46 +0000 (20:33 +0000)]
[Hexagon] Factoring classes out of store patterns.

llvm-svn: 228602

9 years agoUpdate r228592 for when gethostname() returns an error
Ben Langmuir [Mon, 9 Feb 2015 20:13:11 +0000 (20:13 +0000)]
Update r228592 for when gethostname() returns an error

If gethostname() is not successful, just skip adding the hostname to the
module hash.  And don't bother setting hostname[255] = 0, since if
gethostname() is successful, it will be null-terminated already (and if
it's not successful we don't read the string now.

llvm-svn: 228601

9 years ago[Hexagon] Formatting v5 TD file. Removing commented defs.
Colin LeMahieu [Mon, 9 Feb 2015 20:03:42 +0000 (20:03 +0000)]
[Hexagon] Formatting v5 TD file.  Removing commented defs.

llvm-svn: 228598

9 years agoMemDepPrinter: cleanup a few loops (NFC)
Ramkumar Ramachandra [Mon, 9 Feb 2015 19:49:54 +0000 (19:49 +0000)]
MemDepPrinter: cleanup a few loops (NFC)

Make use of the newly introduced inst_range to clean up two loops. Clean
up a third one while at it.

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

llvm-svn: 228596

9 years agoAddress post-commit review for rL228587: make it explicit that the
Sanjoy Das [Mon, 9 Feb 2015 19:39:00 +0000 (19:39 +0000)]
Address post-commit review for rL228587: make it explicit that the
<NW> bit of a SCEVAddRecExpr does not depend on the sign of the step
and the start value of the step.

llvm-svn: 228595

9 years agoAdd missing include from r228592
Ben Langmuir [Mon, 9 Feb 2015 19:30:29 +0000 (19:30 +0000)]
Add missing include from r228592

llvm-svn: 228594

9 years ago[Hexagon] Cleaning up definition formatting.
Colin LeMahieu [Mon, 9 Feb 2015 19:24:44 +0000 (19:24 +0000)]
[Hexagon] Cleaning up definition formatting.

llvm-svn: 228593

9 years agoAdd the hostname to the module hash to avoid sharing between hosts
Ben Langmuir [Mon, 9 Feb 2015 19:23:08 +0000 (19:23 +0000)]
Add the hostname to the module hash to avoid sharing between hosts

Sharing between hosts will cause problems for the LockFileManager, which
can timeout waiting for a process that has already died.

llvm-svn: 228592

9 years agoDebugInfo: Refactor default arg handling into a common place (instead of handling...
David Blaikie [Mon, 9 Feb 2015 19:13:51 +0000 (19:13 +0000)]
DebugInfo: Refactor default arg handling into a common place (instead of handling in repeatedly for aggregate, complex, and scalar types)

llvm-svn: 228591

9 years agoDont' use O_CLOEXEC on Windows, since it doesn't exist.
Zachary Turner [Mon, 9 Feb 2015 19:13:46 +0000 (19:13 +0000)]
Dont' use O_CLOEXEC on Windows, since it doesn't exist.

llvm-svn: 228590

9 years agoDebugInfo: Suppress the location of instructions in complex default arguments.
David Blaikie [Mon, 9 Feb 2015 18:55:57 +0000 (18:55 +0000)]
DebugInfo: Suppress the location of instructions in complex default arguments.

llvm-svn: 228589

9 years agoDebugInfo: Suppress the location of instructions in aggregate default arguments.
David Blaikie [Mon, 9 Feb 2015 18:47:14 +0000 (18:47 +0000)]
DebugInfo: Suppress the location of instructions in aggregate default arguments.

Matches the existing code for scalar default arguments. Complex default
arguments probably need the same handling too (test/fix to that coming
next).

llvm-svn: 228588

9 years agoClarify the wording on what it means for a SCEVAddRecExpr to be <NW>.
Sanjoy Das [Mon, 9 Feb 2015 18:44:42 +0000 (18:44 +0000)]
Clarify the wording on what it means for a SCEVAddRecExpr to be <NW>.

llvm-svn: 228587

9 years agoBugfix: SCEV incorrectly marks certain add recurrences as nsw
Sanjoy Das [Mon, 9 Feb 2015 18:34:55 +0000 (18:34 +0000)]
Bugfix: SCEV incorrectly marks certain add recurrences as nsw

When creating a scev for sext({X,+,Y}), scev checks if the expression
is equivalent to {sext X,+,zext Y}.  If it can prove that, it also
tags the original {X,+,Y} as <nsw>, which is not correct.

In the test case I run `-scalar-evolution` twice because the bug
manifests only once SCEV has run through and seen the `sext`
expressions (and then does a in-place mutation on {X,+,Y}).

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

llvm-svn: 228586

9 years ago[Orc] Revert r228567 (GCC ICE workaround) - it doesn't seem to have helped.
Lang Hames [Mon, 9 Feb 2015 18:16:43 +0000 (18:16 +0000)]
[Orc] Revert r228567 (GCC ICE workaround) - it doesn't seem to have helped.

As far as I can tell r228568 was the right workaround, and r228567 was
unnecessary. If reverting this causes problems on the bots I'll reinstate it.

llvm-svn: 228585