platform/upstream/llvm.git
9 years agoAdded Andrey Churbanov as the owner of the OpenMP runtime library code
Andrey Churbanov [Tue, 5 May 2015 20:17:53 +0000 (20:17 +0000)]
Added Andrey Churbanov as the owner of the OpenMP runtime library code

llvm-svn: 236540

9 years ago[Inliner] Discard empty COMDAT groups
David Majnemer [Tue, 5 May 2015 20:14:22 +0000 (20:14 +0000)]
[Inliner] Discard empty COMDAT groups

COMDAT groups which have become rendered unused because of inline are
discardable if we can prove that we've made the group empty.

This fixes PR22285.

llvm-svn: 236539

9 years agoRefactor UpdatePredRedefs and StepForward to avoid duplication. NFC
Pete Cooper [Tue, 5 May 2015 20:14:22 +0000 (20:14 +0000)]
Refactor UpdatePredRedefs and StepForward to avoid duplication.  NFC

Note, this is a reapplication of r236515 with a fix to not assert on non-register operands, but instead only handle them until the subsequent commit.  Original commit message follows.

The code was basically the same here already.  Just added an out parameter for a vector of seen defs so that UpdatePredRedefs can call StepForward first, then do its own post processing on the seen defs.

Will be used in the next commit to also handle regmasks.

llvm-svn: 236538

9 years agoBuild ASan runtime library with -z global on Android.
Evgeniy Stepanov [Tue, 5 May 2015 20:13:39 +0000 (20:13 +0000)]
Build ASan runtime library with -z global on Android.

llvm-svn: 236537

9 years agoThumb2SizeReduction: Check the correct set of registers for LDMIA.
Peter Collingbourne [Tue, 5 May 2015 20:07:10 +0000 (20:07 +0000)]
Thumb2SizeReduction: Check the correct set of registers for LDMIA.

The register set for LDMIA begins at offset 3, not 4. We were previously
missing the short encoding of this instruction in the case where the base
register was the first register in the register set.

Also clean up some dead code:

- The isARMLowRegister check is redundant with what VerifyLowRegs does;
  replace with an assert.
- Remove handling of LDMDB instruction, which has no short encoding (and
  does not appear in ReduceTable).

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

llvm-svn: 236535

9 years agoIntegrate libiomp CMake into LLVM CMake build system.
Andrey Churbanov [Tue, 5 May 2015 20:02:52 +0000 (20:02 +0000)]
Integrate libiomp CMake into LLVM CMake build system.

This patch integrates the libiomp CMake build system into the LLVM CMake build
system so that users can checkout libiomp into the projects directory of llvm
and build llvm,clang, and libiomp all together.  These changes specifically
introduce a new install target which will put libraries and headers into the
correct locations when either a standalone build or part of llvm.
The copy_recipe() method has been removed in favor of the POST_BUILD method
to move headers into the exports subdirectory.  And lastly, the MicroTests.cmake
file was refactored which led to simpler target dependencies and a new target,
make libiomp-micro-tests, which performs the 5 small tests (test-relo,
test-touch, etc.) when called.

llvm-svn: 236534

9 years ago[analyzer] This eliminates regression caused by r236423.
Anton Yartsev [Tue, 5 May 2015 19:43:37 +0000 (19:43 +0000)]
[analyzer] This eliminates regression caused by r236423.

Wrap an argument with quotes only if it has spaces.

llvm-svn: 236533

9 years ago[SystemZ] Add support for z13 low-level vector builtins
Ulrich Weigand [Tue, 5 May 2015 19:36:42 +0000 (19:36 +0000)]
[SystemZ] Add support for z13 low-level vector builtins

This adds low-level builtins to allow access to all of the z13 vector
instructions.  Note that instructions whose semantics can be described
by standard C (including clang extensions) do not get any builtins.

For each instructions whose semantics *cannot* (fully) be described, we
define a builtin named __builtin_s390_<insn> that directly maps to this
instruction.  These are intended to be compatible with GCC.

For instructions that also set the condition code, the builtin will take
an extra argument of type "int *" at the end.  The integer pointed to by
this argument will be set to the post-instruction CC value.

For many instructions, the low-level builtin is mapped to the corresponding
LLVM IR intrinsic.  However, a number of instructions can be represented
in standard LLVM IR without requiring use of a target intrinsic.

Some instructions require immediate integer operands within a certain
range.  Those are verified at the Sema level.

Based on a patch by Richard Sandiford.

llvm-svn: 236532

9 years ago[SystemZ] Add support for z13 and its vector facility
Ulrich Weigand [Tue, 5 May 2015 19:35:52 +0000 (19:35 +0000)]
[SystemZ] Add support for z13 and its vector facility

This patch adds support for the z13 architecture type.  For compatibility
with GCC, a pair of options -mvx / -mno-vx can be used to selectively
enable/disable use of the vector facility.

When the vector facility is present, we default to the new vector ABI.
This is characterized by two major differences:
- Vector types are passed/returned in vector registers
  (except for unnamed arguments of a variable-argument list function).
- Vector types are at most 8-byte aligned.

The reason for the choice of 8-byte vector alignment is that the hardware
is able to efficiently load vectors at 8-byte alignment, and the ABI only
guarantees 8-byte alignment of the stack pointer, so requiring any higher
alignment for vectors would require dynamic stack re-alignment code.

However, for compatibility with old code that may use vector types, when
*not* using the vector facility, the old alignment rules (vector types
are naturally aligned) remain in use.

These alignment rules are not only implemented at the C language level,
but also at the LLVM IR level.  This is done by selecting a different
DataLayout string depending on whether the vector ABI is in effect or not.

Based on a patch by Richard Sandiford.

llvm-svn: 236531

9 years ago[DAGCombiner] Account for getVectorIdxTy() when narrowing vector load
Ulrich Weigand [Tue, 5 May 2015 19:34:10 +0000 (19:34 +0000)]
[DAGCombiner] Account for getVectorIdxTy() when narrowing vector load

This patch makes ReplaceExtractVectorEltOfLoadWithNarrowedLoad convert
the element number from getVectorIdxTy() to PtrTy before doing pointer
arithmetic on it.  This is needed on z, where element numbers are i32
but pointers are i64.

Original patch by Richard Sandiford.

llvm-svn: 236530

9 years ago[DAGCombiner] Fix ReplaceExtractVectorEltOfLoadWithNarrowedLoad for BE
Ulrich Weigand [Tue, 5 May 2015 19:33:37 +0000 (19:33 +0000)]
[DAGCombiner] Fix ReplaceExtractVectorEltOfLoadWithNarrowedLoad for BE

For little-endian, the function would convert (extract_vector_elt (load X), Y)
to X + Y*sizeof(elt).  For big-endian it would instead use
X + sizeof(vec) - Y*sizeof(elt).  The big-endian case wasn't right since
vector index order always follows memory/array order, even for big-endian.
(Note that the current handling has to be wrong for Y==0 since it would
access beyond the end of the vector.)

Original patch by Richard Sandiford.

llvm-svn: 236529

9 years ago[LegalizeVectorTypes] Allow single loads and stores for more short vectors
Ulrich Weigand [Tue, 5 May 2015 19:32:57 +0000 (19:32 +0000)]
[LegalizeVectorTypes] Allow single loads and stores for more short vectors

When lowering a load or store for TypeWidenVector, the type legalizer
would use a single load or store if the associated integer type was legal.
E.g. it would load a v4i8 as an i32 if i32 was legal.

This patch extends that behavior to promoted integers as well as legal ones.
If the integer type for the full vector width is TypePromoteInteger,
the element type is going to be TypePromoteInteger too, and it's still
better to use a single promoting load or truncating store rather than N
individual promoting loads or truncating stores.  E.g. if you have a v2i8
on a target where i16 is promoted to i32, it's better to load the v2i8 as
an i16 rather than load both i8s individually.

Original patch by Richard Sandiford.

llvm-svn: 236528

9 years ago[SystemZ] Add vector intrinsics
Ulrich Weigand [Tue, 5 May 2015 19:31:09 +0000 (19:31 +0000)]
[SystemZ] Add vector intrinsics

This adds intrinsics to allow access to all of the z13 vector instructions.
Note that instructions whose semantics can be described by standard LLVM IR
do not get any intrinsics.

For each instructions whose semantics *cannot* (fully) be described, we
define an LLVM IR target-specific intrinsic that directly maps to this
instruction.

For instructions that also set the condition code, the LLVM IR intrinsic
returns the post-instruction CC value as a second result.  Instruction
selection will attempt to detect code that compares that CC value against
constants and use the condition code directly instead.

Based on a patch by Richard Sandiford.

llvm-svn: 236527

9 years ago[SystemZ] Mark v1i128 and v1f128 as unsupported
Ulrich Weigand [Tue, 5 May 2015 19:30:05 +0000 (19:30 +0000)]
[SystemZ] Mark v1i128 and v1f128 as unsupported

The ABI specifies that <1 x i128> and <1 x fp128> are supposed to be
passed in vector registers.  We do not yet support those types, and
some infrastructure is missing before we can do so.

In order to prevent accidentally generating code violating the ABI,
this patch adds checks to detect those types and error out if user
code attempts to use them.

llvm-svn: 236526

9 years ago[SystemZ] Handle sub-128 vectors
Ulrich Weigand [Tue, 5 May 2015 19:29:21 +0000 (19:29 +0000)]
[SystemZ] Handle sub-128 vectors

The ABI allows sub-128 vectors to be passed and returned in registers,
with the vector occupying the upper part of a register.  We therefore
want to legalize those types by widening the vector rather than promoting
the elements.

The patch includes some simple tests for sub-128 vectors and also tests
that we can recognize various pack sequences, some of which use sub-128
vectors as temporary results.  One of these forms is based on the pack
sequences generated by llvmpipe when no intrinsics are used.

Signed unpacks are recognized as BUILD_VECTORs whose elements are
individually sign-extended.  Unsigned unpacks can have the equivalent
form with zero extension, but they also occur as shuffles in which some
elements are zero.

Based on a patch by Richard Sandiford.

llvm-svn: 236525

9 years ago[SystemZ] Add CodeGen support for scalar f64 ops in vector registers
Ulrich Weigand [Tue, 5 May 2015 19:28:34 +0000 (19:28 +0000)]
[SystemZ] Add CodeGen support for scalar f64 ops in vector registers

The z13 vector facility includes some instructions that operate only on the
high f64 in a v2f64, effectively extending the FP register set from 16
to 32 registers.  It's still better to use the old instructions if the
operands happen to fit though, since the older instructions have a shorter
encoding.

Based on a patch by Richard Sandiford.

llvm-svn: 236524

9 years ago[SystemZ] Add CodeGen support for v4f32
Ulrich Weigand [Tue, 5 May 2015 19:27:45 +0000 (19:27 +0000)]
[SystemZ] Add CodeGen support for v4f32

The architecture doesn't really have any native v4f32 operations except
v4f32->v2f64 and v2f64->v4f32 conversions, with only half of the v4f32
elements being used.  Even so, using vector registers for <4 x float>
and scalarising individual operations is much better than generating
completely scalar code, since there's much less register pressure.
It's also more efficient to do v4f32 comparisons by extending to 2
v2f64s, comparing those, then packing the result.

This particularly helps with llvmpipe.

Based on a patch by Richard Sandiford.

llvm-svn: 236523

9 years ago[SystemZ] Add CodeGen support for v2f64
Ulrich Weigand [Tue, 5 May 2015 19:26:48 +0000 (19:26 +0000)]
[SystemZ] Add CodeGen support for v2f64

This adds ABI and CodeGen support for the v2f64 type, which is natively
supported by z13 instructions.

Based on a patch by Richard Sandiford.

llvm-svn: 236522

9 years ago[SystemZ] Add CodeGen support for integer vector types
Ulrich Weigand [Tue, 5 May 2015 19:25:42 +0000 (19:25 +0000)]
[SystemZ] Add CodeGen support for integer vector types

This the first of a series of patches to add CodeGen support exploiting
the instructions of the z13 vector facility.  This patch adds support
for the native integer vector types (v16i8, v8i16, v4i32, v2i64).

When the vector facility is present, we default to the new vector ABI.
This is characterized by two major differences:
- Vector types are passed/returned in vector registers
  (except for unnamed arguments of a variable-argument list function).
- Vector types are at most 8-byte aligned.

The reason for the choice of 8-byte vector alignment is that the hardware
is able to efficiently load vectors at 8-byte alignment, and the ABI only
guarantees 8-byte alignment of the stack pointer, so requiring any higher
alignment for vectors would require dynamic stack re-alignment code.

However, for compatibility with old code that may use vector types, when
*not* using the vector facility, the old alignment rules (vector types
are naturally aligned) remain in use.

These alignment rules are not only implemented at the C language level
(implemented in clang), but also at the LLVM IR level.  This is done
by selecting a different DataLayout string depending on whether the
vector ABI is in effect or not.

Based on a patch by Richard Sandiford.

llvm-svn: 236521

9 years ago[SystemZ] Add z13 vector facility and MC support
Ulrich Weigand [Tue, 5 May 2015 19:23:40 +0000 (19:23 +0000)]
[SystemZ] Add z13 vector facility and MC support

This patch adds support for the z13 processor type and its vector facility,
and adds MC support for all new instructions provided by that facilily.

Apart from defining the new instructions, the main changes are:

- Adding VR128, VR64 and VR32 register classes.
- Making FP64 a subclass of VR64 and FP32 a subclass of VR32.
- Adding a D(V,B) addressing mode for scatter/gather operations
- Adding 1-, 2-, and 3-bit immediate operands for some 4-bit fields.
  Until now all immediate operands have been the same width as the
  underlying field (hence the assert->return change in decode[SU]ImmOperand).

In addition, sys::getHostCPUName is extended to detect running natively
on a z13 machine.

Based on a patch by Richard Sandiford.

llvm-svn: 236520

9 years agoAllow TransformTypos to ignore corrections to a specified VarDecl.
Kaelyn Takata [Tue, 5 May 2015 19:17:03 +0000 (19:17 +0000)]
Allow TransformTypos to ignore corrections to a specified VarDecl.

This is needed to prevent a TypoExpr from being corrected to a variable
when the TypoExpr is a subexpression of that variable's initializer.

Also exclude more keywords from the correction candidate pool when the
subsequent token is .* or ->* since keywords like "new" or "return"
aren't valid on the left side of those operators.

Fixes PR23140.

llvm-svn: 236519

9 years agoRevert "Refactor UpdatePredRedefs and StepForward to avoid duplication. NFC"
Pete Cooper [Tue, 5 May 2015 18:49:08 +0000 (18:49 +0000)]
Revert "Refactor UpdatePredRedefs and StepForward to avoid duplication.  NFC"

This reverts commit 963cdbccf6e5578822836fd9b2ebece0ba9a60b7 (ie r236514)

This is to get the bots green while i investigate.

llvm-svn: 236518

9 years agoRevert "Fix IfConverter to handle regmask machine operands."
Pete Cooper [Tue, 5 May 2015 18:49:05 +0000 (18:49 +0000)]
Revert "Fix IfConverter to handle regmask machine operands."

This reverts commit b27413cbfd78d959c18e713bfa271fb69e6b3303 (ie r236515).

This is to get the bots green while i investigate the failures.

llvm-svn: 236517

9 years agoFix process launch from Windows host to Android target.
Chaoren Lin [Tue, 5 May 2015 18:43:19 +0000 (18:43 +0000)]
Fix process launch from Windows host to Android target.

Summary:
- Denormalized path on Windows host causes bad `A` packet.
- Executables copied from Windows host doesn't have executable bits.

Reviewers: tberghammer, zturner, ovyalov

Reviewed By: ovyalov

Subscribers: tberghammer, lldb-commits

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

llvm-svn: 236516

9 years agoFix IfConverter to handle regmask machine operands.
Pete Cooper [Tue, 5 May 2015 18:31:36 +0000 (18:31 +0000)]
Fix IfConverter to handle regmask machine operands.

A regmask (typically seen on a call) clobbers the set of registers it lists.  The IfConverter, in UpdatePredRedefs, was handling register defs, but not regmasks.

These are slightly different to a def in that we need to add both an implicit use and def to appease the machine verifier.  Otherwise, uses after the if converted call could think they are reading an undefined register.

Reviewed by Matthias Braun and Quentin Colombet.

llvm-svn: 236515

9 years agoRefactor UpdatePredRedefs and StepForward to avoid duplication. NFC
Pete Cooper [Tue, 5 May 2015 18:31:31 +0000 (18:31 +0000)]
Refactor UpdatePredRedefs and StepForward to avoid duplication.  NFC

The code was basically the same here already.  Just added an out parameter for a vector of seen defs so that UpdatePredRedefs can call StepForward first, then do its own post processing on the seen defs.

Will be used in the next commit to also handle regmasks.

llvm-svn: 236514

9 years agoFix typo in assert message. NFC.
Diego Novillo [Tue, 5 May 2015 18:24:47 +0000 (18:24 +0000)]
Fix typo in assert message. NFC.

llvm-svn: 236513

9 years agoFix the clang -Werror build, use of uninitialized variable.
David Blaikie [Tue, 5 May 2015 18:12:33 +0000 (18:12 +0000)]
Fix the clang -Werror build, use of uninitialized variable.

llvm-svn: 236512

9 years agoUpdate BasicAliasAnalysis to understand that nothing aliases with undef values.
Daniel Berlin [Tue, 5 May 2015 18:10:49 +0000 (18:10 +0000)]
Update BasicAliasAnalysis to understand that nothing aliases with undef values.
It got this in some cases (if one of them was an identified object), but not in all cases.

This caused stores to undef to block load-forwarding in some cases, etc.

Added test to Transforms/GVN to verify optimization occurs as expected.

llvm-svn: 236511

9 years ago[opaque pointer type] Track explicit GEP pointee type through in-memory IR
David Blaikie [Tue, 5 May 2015 18:03:48 +0000 (18:03 +0000)]
[opaque pointer type] Track explicit GEP pointee type through in-memory IR

llvm-svn: 236510

9 years agoFix Android build.
Chaoren Lin [Tue, 5 May 2015 17:50:53 +0000 (17:50 +0000)]
Fix Android build.

llvm-svn: 236509

9 years agoRe-land "[WinEH] Add an EH registration and state insertion pass for 32-bit x86"
Reid Kleckner [Tue, 5 May 2015 17:44:16 +0000 (17:44 +0000)]
Re-land "[WinEH] Add an EH registration and state insertion pass for 32-bit x86"

This reverts commit r236360.

This change exposed a bug in WinEHPrepare by opting win32 code into EH
preparation. We already knew that WinEHPrepare has bugs, and is the
status quo for x64, so I don't think that's a reason to hold off on this
change. I disabled exceptions in the sanitizer tests in r236505 and an
earlier revision.

llvm-svn: 236508

9 years ago[ShrinkWrap] Add (a simplified version) of shrink-wrapping.
Quentin Colombet [Tue, 5 May 2015 17:38:16 +0000 (17:38 +0000)]
[ShrinkWrap] Add (a simplified version) of shrink-wrapping.

This patch introduces a new pass that computes the safe point to insert the
prologue and epilogue of the function.
The interest is to find safe points that are cheaper than the entry and exits
blocks.

As an example and to avoid regressions to be introduce, this patch also
implements the required bits to enable the shrink-wrapping pass for AArch64.

** Context **

Currently we insert the prologue and epilogue of the method/function in the
entry and exits blocks. Although this is correct, we can do a better job when
those are not immediately required and insert them at less frequently executed
places.
The job of the shrink-wrapping pass is to identify such places.

** Motivating example **

Let us consider the following function that perform a call only in one branch of
a if:
define i32 @f(i32 %a, i32 %b)  {
 %tmp = alloca i32, align 4
 %tmp2 = icmp slt i32 %a, %b
 br i1 %tmp2, label %true, label %false

true:
 store i32 %a, i32* %tmp, align 4
 %tmp4 = call i32 @doSomething(i32 0, i32* %tmp)
 br label %false

false:
 %tmp.0 = phi i32 [ %tmp4, %true ], [ %a, %0 ]
 ret i32 %tmp.0
}

On AArch64 this code generates (removing the cfi directives to ease
readabilities):
_f:                                     ; @f
; BB#0:
  stp x29, x30, [sp, #-16]!
  mov  x29, sp
  sub sp, sp, #16             ; =16
  cmp  w0, w1
  b.ge  LBB0_2
; BB#1:                                 ; %true
  stur  w0, [x29, #-4]
  sub x1, x29, #4             ; =4
  mov  w0, wzr
  bl  _doSomething
LBB0_2:                                 ; %false
  mov  sp, x29
  ldp x29, x30, [sp], #16
  ret

With shrink-wrapping we could generate:
_f:                                     ; @f
; BB#0:
  cmp  w0, w1
  b.ge  LBB0_2
; BB#1:                                 ; %true
  stp x29, x30, [sp, #-16]!
  mov  x29, sp
  sub sp, sp, #16             ; =16
  stur  w0, [x29, #-4]
  sub x1, x29, #4             ; =4
  mov  w0, wzr
  bl  _doSomething
  add sp, x29, #16            ; =16
  ldp x29, x30, [sp], #16
LBB0_2:                                 ; %false
  ret

Therefore, we would pay the overhead of setting up/destroying the frame only if
we actually do the call.

** Proposed Solution **

This patch introduces a new machine pass that perform the shrink-wrapping
analysis (See the comments at the beginning of ShrinkWrap.cpp for more details).
It then stores the safe save and restore point into the MachineFrameInfo
attached to the MachineFunction.
This information is then used by the PrologEpilogInserter (PEI) to place the
related code at the right place. This pass runs right before the PEI.

Unlike the original paper of Chow from PLDI’88, this implementation of
shrink-wrapping does not use expensive data-flow analysis and does not need hack
to properly avoid frequently executed point. Instead, it relies on dominance and
loop properties.

The pass is off by default and each target can opt-in by setting the
EnableShrinkWrap boolean to true in their derived class of TargetPassConfig.
This setting can also be overwritten on the command line by using
-enable-shrink-wrap.

Before you try out the pass for your target, make sure you properly fix your
emitProlog/emitEpilog/adjustForXXX method to cope with basic blocks that are not
necessarily the entry block.

** Design Decisions **

1. ShrinkWrap is its own pass right now. It could frankly be merged into PEI but
for debugging and clarity I thought it was best to have its own file.
2. Right now, we only support one save point and one restore point. At some
point we can expand this to several save point and restore point, the impacted
component would then be:
- The pass itself: New algorithm needed.
- MachineFrameInfo: Hold a list or set of Save/Restore point instead of one
  pointer.
- PEI: Should loop over the save point and restore point.
Anyhow, at least for this first iteration, I do not believe this is interesting
to support the complex cases. We should revisit that when we motivating
examples.

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

<rdar://problem/3201744>

llvm-svn: 236507

9 years ago[Orc] Reapply r236465 with fixes for the MSVC bots.
Lang Hames [Tue, 5 May 2015 17:37:18 +0000 (17:37 +0000)]
[Orc] Reapply r236465 with fixes for the MSVC bots.

llvm-svn: 236506

9 years agoDisable exceptions with Clang on Windows in lib/sanitizer-common/tests
Reid Kleckner [Tue, 5 May 2015 16:52:50 +0000 (16:52 +0000)]
Disable exceptions with Clang on Windows in lib/sanitizer-common/tests

While I'm here, fix a copy-paste bug so we get debug info for these
tests.

llvm-svn: 236505

9 years ago[bugpoint] Increase default memory limit to 400MB to fix bugpoint tests.
Daniel Sanders [Tue, 5 May 2015 16:29:40 +0000 (16:29 +0000)]
[bugpoint] Increase default memory limit to 400MB to fix bugpoint tests.

I tracked down the bug to an unchecked malloc in SmallVectorBase::grow_pod().
This malloc is returning NULL on my machine when running under bugpoint but not
when -enable-valgrind is given.

llvm-svn: 236504

9 years agoThis patch adds ABI support for v1i128 data type.
Kit Barton [Tue, 5 May 2015 16:10:44 +0000 (16:10 +0000)]
This patch adds ABI support for v1i128 data type.
It adds v1i128 to the appropriate register classes and checks parameter passing
and return values.

This is related to http://reviews.llvm.org/D9081, which will add instructions
that exploit the v1i128 datatype.

Phabricator review: http://reviews.llvm.org/D9475

llvm-svn: 236503

9 years ago[NativeProcessLinux] Get rid of the thread state coordinator thread
Pavel Labath [Tue, 5 May 2015 15:05:50 +0000 (15:05 +0000)]
[NativeProcessLinux] Get rid of the thread state coordinator thread

Summary:
This change removes the thread state coordinator thread by making all the operations it was
performing synchronous. In order to prevent deadlock, NativeProcessLinux must now always call
m_monitor->DoOperation with the m_threads_mutex released. This is needed because HandleWait
callbacks lock the mutex (which means the monitor thread will block waiting on whoever holds the
lock). If the other thread now requests a monitor operation, it will wait for the monitor thread
do process it, creating a deadlock.

To preserve this invariant I have introduced two new Monitor commands: "begin operation block"
and "end operation block". They begin command blocks the monitor from processing waitpid
events until the corresponding end command, thereby assuring the monitor does not attempt to
acquire the mutex.

Test Plan: Run the test suite locally, verify no tests fail.

Reviewers: vharron, chaoren

Subscribers: lldb-commits

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

llvm-svn: 236501

9 years agoRevert "Enable TestConvenienceVariables on Linux"
Pavel Labath [Tue, 5 May 2015 14:54:23 +0000 (14:54 +0000)]
Revert "Enable TestConvenienceVariables on Linux"

This reverts commit 193ac6993b64a502db6dc7f2d69dafc47c318407.

The buildbot says the test still fails. :)

llvm-svn: 236500

9 years agoEnable TestConvenienceVariables on Linux
Pavel Labath [Tue, 5 May 2015 13:48:58 +0000 (13:48 +0000)]
Enable TestConvenienceVariables on Linux

The test has passed in the last 300 runs for me, enabling to see what the buildbot says.

llvm-svn: 236498

9 years agoEmit comment for gc.relocate showing base and derived pointers in human readable...
Igor Laevsky [Tue, 5 May 2015 13:20:42 +0000 (13:20 +0000)]
Emit comment for gc.relocate showing base and derived pointers in human readable form.

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

llvm-svn: 236497

9 years agoEnable TestChangeValueAPI on Linux
Pavel Labath [Tue, 5 May 2015 12:10:13 +0000 (12:10 +0000)]
Enable TestChangeValueAPI on Linux

the test has passed in the last 300 runs, enabling to see what the build bot says. Also,
downgrading skipIfGcc to XFAIL, with plans of enabling it in the future if it shows to be
working.

llvm-svn: 236496

9 years agoEnable TestCallStopAndContinue on Linux
Pavel Labath [Tue, 5 May 2015 11:08:08 +0000 (11:08 +0000)]
Enable TestCallStopAndContinue on Linux

This test has been working reliably for me in the last 300 test runs. Enabling to see what the
buildbot thinks...

llvm-svn: 236495

9 years ago[mips] Generate code for insert/extract operations when using the N64 ABI and MSA.
Daniel Sanders [Tue, 5 May 2015 10:32:24 +0000 (10:32 +0000)]
[mips] Generate code for insert/extract operations when using the N64 ABI and MSA.

Summary:
When using the N64 ABI, element-indices use the i64 type instead of i32.
In many cases, we can use iPTR to account for this but additional patterns
and pseudo's are also required.

This fixes most (but not quite all) failures in the test-suite when using
N64 and MSA together.

Reviewers: vkalintiris

Reviewed By: vkalintiris

Subscribers: llvm-commits

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

llvm-svn: 236494

9 years ago[OPENMP] Allow use of macros in OpenMP directives/clauses.
Alexey Bataev [Tue, 5 May 2015 09:53:25 +0000 (09:53 +0000)]
[OPENMP] Allow use of macros in OpenMP directives/clauses.

llvm-svn: 236493

9 years agoFix regression in parsing armv{6,7}hl- triples. These are used by SUSE
Ismail Donmez [Tue, 5 May 2015 09:29:43 +0000 (09:29 +0000)]
Fix regression in parsing armv{6,7}hl- triples. These are used by SUSE
and Redhat currently.

Reviewed by Jonathan Roelofs.

llvm-svn: 236492

9 years ago[OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 09:24:37 +0000 (09:24 +0000)]
[OPENMP] Fixed incorrect work with cleanups, NFC.

Destructors are never called for cleanups, so we can't use SmallVector as a member.
Differential Revision: http://reviews.llvm.org/D9399

llvm-svn: 236491

9 years agoRevert revision 236487: [OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 08:48:39 +0000 (08:48 +0000)]
Revert revision 236487: [OPENMP] Fixed incorrect work with cleanups, NFC.

llvm-svn: 236490

9 years ago[mips][msa] Test basic operations for the N32 ABI too.
Daniel Sanders [Tue, 5 May 2015 08:48:35 +0000 (08:48 +0000)]
[mips][msa] Test basic operations for the N32 ABI too.

Summary:
This required adding instruction aliases for dneg.

N64 will be enabled shortly but requires additional bugfixes.

Reviewers: vkalintiris

Reviewed By: vkalintiris

Subscribers: llvm-commits

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

llvm-svn: 236489

9 years agoclang-format: [JS] support optional methods.
Daniel Jasper [Tue, 5 May 2015 08:40:32 +0000 (08:40 +0000)]
clang-format: [JS] support optional methods.

Optional methods use ? tokens like this:

  interface X { y?(): z; }

It seems easiest to detect and disambiguate these from ternary
expressions by checking if the code is in a declaration context. Turns
out that that didn't quite work properly for interfaces in Java and JS,
and for JS file root contexts.

Patch by Martin Probst, thank you.

llvm-svn: 236488

9 years ago[OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 08:38:22 +0000 (08:38 +0000)]
[OPENMP] Fixed incorrect work with cleanups, NFC.

Destructors are never called for cleanups, so we can't use SmallVector as a member.
Differential Revision: http://reviews.llvm.org/D9399

llvm-svn: 236487

9 years agoFix GetModuleInfo() not checking for unsupported RSP response.
Aidan Dodds [Tue, 5 May 2015 08:31:55 +0000 (08:31 +0000)]
Fix GetModuleInfo() not checking for unsupported RSP response.
http://reviews.llvm.org/D9473

llvm-svn: 236486

9 years agoclang-format: [JS] Do not collapse short interfaces.
Daniel Jasper [Tue, 5 May 2015 08:12:50 +0000 (08:12 +0000)]
clang-format: [JS] Do not collapse short interfaces.

Patch by Martin Probst.

llvm-svn: 236485

9 years agotsan: add memory access functions that accept pc
Dmitry Vyukov [Tue, 5 May 2015 08:09:46 +0000 (08:09 +0000)]
tsan: add memory access functions that accept pc

This is required for Java support, as real PCs don't work for Java.

llvm-svn: 236484

9 years agoRevert revision 236482: [OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 06:32:45 +0000 (06:32 +0000)]
Revert revision 236482: [OPENMP] Fixed incorrect work with cleanups, NFC.

Due to some incompatibilities with Windows.

llvm-svn: 236483

9 years ago[OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 06:21:01 +0000 (06:21 +0000)]
[OPENMP] Fixed incorrect work with cleanups, NFC.

Destructors are never called for cleanups, so we can't use SmallVector as a member.
Differential Revision: http://reviews.llvm.org/D9399

llvm-svn: 236482

9 years agoRevert revision 236480: [OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 04:56:26 +0000 (04:56 +0000)]
Revert revision 236480: [OPENMP] Fixed incorrect work with cleanups, NFC.

Due to some incompatibilities with Windows.

llvm-svn: 236481

9 years ago[OPENMP] Fixed incorrect work with cleanups, NFC.
Alexey Bataev [Tue, 5 May 2015 04:42:07 +0000 (04:42 +0000)]
[OPENMP] Fixed incorrect work with cleanups, NFC.

Destructors are never called for cleanups, so we can't use SmallVector as a member.
Differential Revision: http://reviews.llvm.org/D9399

llvm-svn: 236480

9 years ago[OPENMP] Codegen for 'firstprivate' clause in 'task' directive.
Alexey Bataev [Tue, 5 May 2015 04:05:12 +0000 (04:05 +0000)]
[OPENMP] Codegen for 'firstprivate' clause in 'task' directive.

For tasks codegen for private/firstprivate variables are different rather than for other directives.

1. Build an internal structure of privates for each private variable:
struct .kmp_privates_t. {
  Ty1 var1;
  ...
  Tyn varn;
};
2. Add a new field to kmp_task_t type with list of privates.
struct kmp_task_t {
  void *              shareds;
  kmp_routine_entry_t routine;
  kmp_int32           part_id;
  kmp_routine_entry_t destructors;
  .kmp_privates_t.    privates;
};
3. Create a function with destructors calls for all privates after end of task region.
kmp_int32 .omp_task_destructor.(kmp_int32 gtid, kmp_task_t *tt) {
  ~Destructor(&tt->privates.var1);
  ...
  ~Destructor(&tt->privates.varn);
  return 0;
}
4. Perform initialization of all firstprivate fields (by simple copying for POD data, copy constructor calls for classes) + provide address of a destructor function after kmpc_omp_task_alloc() and before kmpc_omp_task() calls.
kmp_task_t *new_task = __kmpc_omp_task_alloc(ident_t *, kmp_int32 gtid, kmp_int32 flags, size_t sizeof_kmp_task_t, size_t sizeof_shareds, kmp_routine_entry_t *task_entry);

CopyConstructor(new_task->privates.var1, *new_task->shareds.var1_ref);
new_task->shareds.var1_ref = &new_task->privates.var1;
...
CopyConstructor(new_task->privates.varn, *new_task->shareds.varn_ref);
new_task->shareds.varn_ref = &new_task->privates.varn;

new_task->destructors = .omp_task_destructor.;
kmp_int32 __kmpc_omp_task(ident_t *, kmp_int32 gtid, kmp_task_t *new_task)
Differential Revision: http://reviews.llvm.org/D9370

llvm-svn: 236479

9 years agoFix an uninitialized memory use error when interpreting
Jason Molenda [Tue, 5 May 2015 02:05:53 +0000 (02:05 +0000)]
Fix an uninitialized memory use error when interpreting
compact unwind encodings for x86_64 / i386 omit-frame-pointer
code.  It was possible for lldb to get the location of saved
registers incorrect for some of these functions.
<rdar://problem/20753264>

llvm-svn: 236478

9 years agoAdd CommandObjectLanguage to the xcode project file.
Jason Molenda [Tue, 5 May 2015 02:03:37 +0000 (02:03 +0000)]
Add CommandObjectLanguage to the xcode project file.

llvm-svn: 236477

9 years ago[lib/Fuzzer] use handle_abort=1 by default so that when assert() fires we save the...
Kostya Serebryany [Tue, 5 May 2015 01:42:55 +0000 (01:42 +0000)]
[lib/Fuzzer] use handle_abort=1 by default so that when assert() fires we save the test case

llvm-svn: 236476

9 years ago[MS ABI] Cleanup selectBasePath
David Majnemer [Tue, 5 May 2015 01:39:20 +0000 (01:39 +0000)]
[MS ABI] Cleanup selectBasePath

Handle some common cases quickly when deeper introspection into the path
has no effect on the final result.

No functional change intended.

llvm-svn: 236475

9 years ago[asan] under handle_abort=1 option intercept SIGABRT in addition to SIGSEGV/SIGBUS...
Kostya Serebryany [Tue, 5 May 2015 01:37:33 +0000 (01:37 +0000)]
[asan] under handle_abort=1 option intercept SIGABRT in addition to SIGSEGV/SIGBUS. Among other things this will allow to set up a death callback for SIGABRT and thus properly handle assert() in lib/Fuzzer

llvm-svn: 236474

9 years ago[ValueObject::GetPointeeData] Get addr from value for eValueHostAddress values.
Siva Chandra [Tue, 5 May 2015 00:41:35 +0000 (00:41 +0000)]
[ValueObject::GetPointeeData] Get addr from value for eValueHostAddress values.

Summary:
After r236447, ValueObject::GetAddressOf returns LLDB_INVALID_ADDRESS
when the value type is eValueHostAddress. For such a case, clients of
GetAddressOf should get the address from the scalar part of the value
instead of using the value returned by GetAddressOf directly.

This change also makes ValueObject::GetAddressOf set the address type to
eAddressTypeHost for values of eValueHostAddress so that clients can
recognize that they need to fetch the address from the scalar part
of the value.

Test Plan: ninja check-lldb on linux

Reviewers: clayborg, ovyalov

Reviewed By: ovyalov

Subscribers: lldb-commits

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

llvm-svn: 236473

9 years ago[Orc] Revert r236465 - It broke the Windows bots.
Lang Hames [Mon, 4 May 2015 23:30:01 +0000 (23:30 +0000)]
[Orc] Revert r236465 - It broke the Windows bots.

Looks like the usual missing explicit move-constructor issue with MSVC. I should
have a fix shortly.

llvm-svn: 236472

9 years ago[X86] Fix assertion while DAG combining offsets and ExternalSymbols
Reid Kleckner [Mon, 4 May 2015 23:22:36 +0000 (23:22 +0000)]
[X86] Fix assertion while DAG combining offsets and ExternalSymbols

ExternalSymbol nodes do not contain offsets, unlike GlobalValue nodes.

llvm-svn: 236471

9 years ago[ARM] IT block insertion needs to update kill flags
Pete Cooper [Mon, 4 May 2015 22:44:47 +0000 (22:44 +0000)]
[ARM] IT block insertion needs to update kill flags

When forming an IT block from the first MOV here:

%R2<def> = t2MOVr %R0, pred:1, pred:%CPSR, opt:%noreg
%R3<def> = tMOVr %R0<kill>, pred:14, pred:%noreg

the move in to R3 is moved out of the IT block so that later instructions on the same predicate can be inside this block, and we can share the IT instruction.

However, when moving the R3 copy out of the IT block, we need to clear its kill flags for anything in use at this point in time, ie, R0 here.

This appeases the machine verifier which thought that R0 wasn't defined when used.

I have a test case, but its extremely register allocator specific.  It would be too fragile to commit a test which depends on the register allocator here.

llvm-svn: 236468

9 years agoAdd TransformUtils dependency to lli.
Pete Cooper [Mon, 4 May 2015 22:33:39 +0000 (22:33 +0000)]
Add TransformUtils dependency to lli.

After r236465, Orc uses ValueMaterializer and so needs to link against TransformUtils to get the ValueMaterializer::anchor().

llvm-svn: 236467

9 years agoFix buffer overflow in Lexer
Kostya Serebryany [Mon, 4 May 2015 22:30:29 +0000 (22:30 +0000)]
Fix buffer overflow in Lexer

Summary:
Fix PR22407, where the Lexer overflows the buffer when parsing
 #include<\
(end of file after slash)

Test Plan:
Added a test that will trigger in asan build.
This case is also covered by the clang-fuzzer bot.

Reviewers: rnk

Reviewed By: rnk

Subscribers: cfe-commits

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

llvm-svn: 236466

9 years ago[Orc] Refactor the compile-on-demand layer to make module partitioning lazy,
Lang Hames [Mon, 4 May 2015 22:03:10 +0000 (22:03 +0000)]
[Orc] Refactor the compile-on-demand layer to make module partitioning lazy,
and avoid cloning unused decls into every partition.

Module partitioning showed up as a source of significant overhead when I
profiled some trivial test cases. Avoiding the overhead of partitionging
for uncalled functions helps to mitigate this.

This change also means that it is no longer necessary to have a
LazyEmittingLayer underneath the CompileOnDemand layer, since the
CompileOnDemandLayer will not extract or emit function bodies until they are
called.

llvm-svn: 236465

9 years agoVim: Fix some bugs in llvm indent plugin.
Matthias Braun [Mon, 4 May 2015 21:41:25 +0000 (21:41 +0000)]
Vim: Fix some bugs in llvm indent plugin.

llvm-svn: 236464

9 years agoVim: Set filetype=python for lit configuration files.
Matthias Braun [Mon, 4 May 2015 21:41:23 +0000 (21:41 +0000)]
Vim: Set filetype=python for lit configuration files.

llvm-svn: 236463

9 years agoDocument some of the options in test/lit.cfg
Matthias Braun [Mon, 4 May 2015 21:37:00 +0000 (21:37 +0000)]
Document some of the options in test/lit.cfg

llvm-svn: 236462

9 years agoLit: Allow overriding llvm tool paths+arguments, make -D an alias for --param
Matthias Braun [Mon, 4 May 2015 21:36:36 +0000 (21:36 +0000)]
Lit: Allow overriding llvm tool paths+arguments, make -D an alias for --param

These changes allow usages where you want to pass an additional
commandline option to all invocations of a specific llvm tool. Example:

> llvm-lit -Dllc=llc -enable-misched -verify-machineinstrs

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

llvm-svn: 236461

9 years agozap windows line endings; NFC
Sanjay Patel [Mon, 4 May 2015 21:27:27 +0000 (21:27 +0000)]
zap windows line endings; NFC

llvm-svn: 236460

9 years ago[clang-fuzzer] make clang-fuzzer slightly faster by removing one redundant directory...
Kostya Serebryany [Mon, 4 May 2015 21:14:45 +0000 (21:14 +0000)]
[clang-fuzzer] make clang-fuzzer slightly faster by removing one redundant directory scan

llvm-svn: 236459

9 years agoUpdate MSVC compatibility doc note about exceptions
Reid Kleckner [Mon, 4 May 2015 20:53:51 +0000 (20:53 +0000)]
Update MSVC compatibility doc note about exceptions

llvm-svn: 236458

9 years agoCodeGen: match up correct insertvalue indices when assessing tail calls.
Tim Northover [Mon, 4 May 2015 20:41:51 +0000 (20:41 +0000)]
CodeGen: match up correct insertvalue indices when assessing tail calls.

When deciding whether a value comes from the aggregate or inserted value of an
insertvalue instruction, we compare the indices against those of the location
we're interested in. One of the lists needs reversing because the input data is
backwards (so that modifications take place at the end of the SmallVector), but
we were reversing both before leading to incorrect results.

Should fix PR23408

llvm-svn: 236457

9 years agoYAML: Add an optional 'flow' field to the mapping trait to allow flow mapping output.
Alex Lorenz [Mon, 4 May 2015 20:11:40 +0000 (20:11 +0000)]
YAML: Add an optional 'flow' field to the mapping trait to allow flow mapping output.

This patch adds an optional 'flow' field to the MappingTrait
class so that yaml IO will be able to output flow mappings.

Reviewers: Justin Bogner

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

llvm-svn: 236456

9 years agoRespect object format choice on Darwin
Keno Fischer [Mon, 4 May 2015 20:03:01 +0000 (20:03 +0000)]
Respect object format choice on Darwin

Summary:
The object format can be set to something other than MachO, e.g.
to use ELF-on-Darwin for MCJIT. This already works on Windows, so
there's no reason it shouldn't on Darwin.

Reviewers: lhames, grosbach

Subscribers: rafael, grosbach, t.p.northover, llvm-commits

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

llvm-svn: 236455

9 years ago[modules] Don't bother registering loaded macros if there are none.
Richard Smith [Mon, 4 May 2015 19:58:00 +0000 (19:58 +0000)]
[modules] Don't bother registering loaded macros if there are none.

We don't yet have a reduced testcase for this.

llvm-svn: 236454

9 years agoR600: Add fma and ldexp asic specific feature macros
Jan Vesely [Mon, 4 May 2015 19:53:36 +0000 (19:53 +0000)]
R600: Add fma and ldexp asic specific feature macros

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 236453

9 years ago[ValueObject] Do not return address of eValueTypeHostAddress values.
Siva Chandra [Mon, 4 May 2015 19:43:34 +0000 (19:43 +0000)]
[ValueObject] Do not return address of eValueTypeHostAddress values.

Summary:
This fixes TestRegisterVariables for clang and hence it is enabled in this commit.

Test Plan: dotest.py -C clang -p TestRegisterVariables

Reviewers: clayborg

Reviewed By: clayborg

Subscribers: lldb-commits

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

llvm-svn: 236447

9 years agoFix Windows coverage test with lit shell
Reid Kleckner [Mon, 4 May 2015 19:41:58 +0000 (19:41 +0000)]
Fix Windows coverage test with lit shell

llvm-svn: 236446

9 years ago[MS ABI] Fix a crash in vptr path calculation
David Majnemer [Mon, 4 May 2015 18:47:54 +0000 (18:47 +0000)]
[MS ABI] Fix a crash in vptr path calculation

I discovered a case where the old algorithm would crash.  Instead of
trying to patch the algorithm, rewrite it.  The new algorithm operates
in three phases:
1. Find all paths to the subobject with the vptr.
2. Remove paths which are subsets of other paths.
3. Select the best path where 'best' is defined as introducing the most
   covariant overriders.  If two paths introduce different overriders,
   raise a diagnostic.

llvm-svn: 236444

9 years agoAdd language command and LanguageRuntime plugin changes to allow vending of command...
Colin Riley [Mon, 4 May 2015 18:39:38 +0000 (18:39 +0000)]
Add language command and LanguageRuntime plugin changes to allow vending of command objects.

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

llvm-svn: 236443

9 years agoFix -Wmicrosoft warning by making enum unsigned
Reid Kleckner [Mon, 4 May 2015 18:21:35 +0000 (18:21 +0000)]
Fix -Wmicrosoft warning by making enum unsigned

llvm-svn: 236436

9 years ago[IR/Diagnostic] Assert that DebugLoc is valid before accessing.
Davide Italiano [Mon, 4 May 2015 18:08:35 +0000 (18:08 +0000)]
[IR/Diagnostic] Assert that DebugLoc is valid before accessing.

PR: 23380
Differential Revision: http://reviews.llvm.org/D9464
Reviewed by: dexonsmith

llvm-svn: 236435

9 years agoOption parsing: properly handle flag aliases for joined options (PR23394)
Hans Wennborg [Mon, 4 May 2015 18:00:13 +0000 (18:00 +0000)]
Option parsing: properly handle flag aliases for joined options (PR23394)

A joined option always needs to have an argument, even if it's an empty one.

Clang would previously assert when trying to use --extra-warnings, which is
a flag alias for -W, which is a joined option.

llvm-svn: 236434

9 years ago[SystemZ] Reclassify f32 subregs of f64 registers
Ulrich Weigand [Mon, 4 May 2015 17:41:22 +0000 (17:41 +0000)]
[SystemZ] Reclassify f32 subregs of f64 registers

At the moment, all subregs defined by the SystemZ target can be modified
independently of the wider register.  E.g. writing to a GR32 does not
change the upper 32 bits of the GR64.  Writing to an FP32 does not change
the lower 32 bits of the FP64.

Hoewver, the upcoming support for the vector extension redefines FP64 as
one half of a V128.  Floating-point operations leave the other half of
a V128 in an unpredictable state, so it's no longer the case that writing
to an FP32 leaves the bits of the underlying register (the V128) alone.
I'd prefer to have separate subreg_ names for this situation, so that
it's obvious at a glance whether we're talking about a subreg that leaves
the other parts of the register alone.

No behavioral change intended.

Patch originally by Richard Sandiford.

llvm-svn: 236433

9 years ago[SystemZ] Clean up AsmParser isMem() handling
Ulrich Weigand [Mon, 4 May 2015 17:40:53 +0000 (17:40 +0000)]
[SystemZ] Clean up AsmParser isMem() handling

We know what MemoryKind an operand has at the time we construct it,
so we might as well just record it in an unused part of the structure.
This makes it easier to add scatter/gather addresses later.

No behavioral change intended.

Patch originally by Richard Sandiford.

llvm-svn: 236432

9 years agoGet rid of compiler warning.
Serge Pavlov [Mon, 4 May 2015 17:39:55 +0000 (17:39 +0000)]
Get rid of compiler warning.

llvm-svn: 236431

9 years ago[SystemZ] Fix getTargetNodeName
Ulrich Weigand [Mon, 4 May 2015 17:39:40 +0000 (17:39 +0000)]
[SystemZ] Fix getTargetNodeName

It seems SystemZTargetLowering::getTargetNodeName got out of sync with
some recent changes to the SystemZISD opcode list.  Add back all the
missing opcodes (and re-sort to the same order as SystemISelLowering.h).

llvm-svn: 236430

9 years agoFix a typo in the warning.
Jim Ingham [Mon, 4 May 2015 17:33:33 +0000 (17:33 +0000)]
Fix a typo in the warning.

<rdar://problem/20799707>

llvm-svn: 236429

9 years agoScheduleDAGInstrs should toggle kill flags on bundled instrs.
Pete Cooper [Mon, 4 May 2015 16:52:06 +0000 (16:52 +0000)]
ScheduleDAGInstrs should toggle kill flags on bundled instrs.

ScheduleDAGInstrs wasn't setting or clearing the kill flags on instructions inside bundles.  This led to code such as this

%R3<def> = t2ANDrr %R0
BUNDLE %ITSTATE<imp-def,dead>, %R0<imp-use,kill>
  t2IT 1, 24, %ITSTATE<imp-def>
  R6<def,tied6> = t2ORRrr %R0<kill>, ...

being transformed to

BUNDLE %ITSTATE<imp-def,dead>, %R0<imp-use>
  t2IT 1, 24, %ITSTATE<imp-def>
  R6<def,tied6> = t2ORRrr %R0<kill>, ...
%R3<def> = t2ANDrr %R0<kill>

where the kill flag was removed from the BUNDLE instruction, but not the t2ORRrr inside it.  The verifier then thought that
R0 was undefined when read by the AND.

This change make the toggleKillFlags method also check for bundles and toggle flags on bundled instructions.
Setting the kill flag is special cased as we only want to set the kill flag on the last instruction in the bundle.

llvm-svn: 236428

9 years agoR600/SI: Code cleanup
Tom Stellard [Mon, 4 May 2015 16:45:08 +0000 (16:45 +0000)]
R600/SI: Code cleanup

This is a follow-up to r236004

llvm-svn: 236427

9 years agoInstantiate incomplete class used in template method.
Serge Pavlov [Mon, 4 May 2015 16:44:39 +0000 (16:44 +0000)]
Instantiate incomplete class used in template method.

If a class is absent from instantiation and is incomplete, instantiate it as
an incomplete class thus avoiding compiler crash.

This change fixes PR18653.

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

llvm-svn: 236426

9 years agoMark TestTypedefArray as XFAIL with Gcc.
Oleksiy Vyalov [Mon, 4 May 2015 15:20:25 +0000 (15:20 +0000)]
Mark TestTypedefArray as XFAIL with Gcc.

llvm-svn: 236425

9 years agoReapply "Frontend: Stop leaking when not -disable-free"
Duncan P. N. Exon Smith [Mon, 4 May 2015 14:59:20 +0000 (14:59 +0000)]
Reapply "Frontend: Stop leaking when not -disable-free"

This reverts commit r236422, effectively reapplying r236419.  ASan
helped me diagnose the problem: the non-leaking logic would free the
ASTConsumer before freeing Sema whenever `isCurrentASTFile()`, causing a
use-after-free in `Sema::~Sema()`.

This version unconditionally frees Sema and the ASTContext before
freeing the ASTConsumer.  Without the fix, these were either being freed
before the ASTConsumer was freed or leaked after, but they were always
spiritually released so this isn't really a functionality change.

I ran all of check-clang with ASan locally this time, so I'm hoping
there aren't any more problems lurking.

Original commit message:

    Try again to plug a leak that's been around since at least r128011
    after coming across the FIXME.  Nico Weber tried something similar
    in r207065 but had to revert in r207070 due to a bot failure.

    The build failure isn't visible anymore so I'm not sure what went
    wrong.  I'm doing this slightly differently -- when not
    -disable-free I'm still resetting the members (just not leaking
    them) -- so maybe it will work out this time?  Tests pass locally,
    anyway.

llvm-svn: 236424