platform/upstream/llvm.git
8 years agoWebAssembly: implement getScalarShiftAmountTy so we can shift by amount, with type
JF Bastien [Mon, 3 Aug 2015 00:00:11 +0000 (00:00 +0000)]
WebAssembly: implement getScalarShiftAmountTy so we can shift by amount, with type

Summary: This currently sets the shift amount RHS to the same type as the LHS, and assumes that the LHS is a simple type. This isn't currently the case e.g. with weird integers sizes, but will eventually be true and will assert if not. That's what you get for having an experimental backend: break it and you get to keep both pieces. Most backends either set the RHS to MVT::i32 or MVT::i64, but WebAssembly is a virtual ISA and tries to have regular-looking binary operations where both operands are the same type (even if a 64-bit RHS shifter is slightly silly, hey it's free!).

Subscribers: llvm-commits, sunfish, jfb

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

llvm-svn: 243860

8 years agoUse range-based for loops. NFC
Craig Topper [Sun, 2 Aug 2015 22:34:02 +0000 (22:34 +0000)]
Use range-based for loops. NFC

llvm-svn: 243859

8 years agoAsmPrinter: Stop inheriting from DIE
Duncan P. N. Exon Smith [Sun, 2 Aug 2015 20:54:50 +0000 (20:54 +0000)]
AsmPrinter: Stop inheriting from DIE

Change `DIELoc` and `DIEBlock` to stop inheriting from `DIE`, instead
inheriting from `DIEValueList` to share the value storage API.  This
awkward bit of code-sharing was also fairly confusing: neither `DIELoc`
nor `DIEBlock` represents a `DIE`, so why would they inherit from it?

Aside from the API cleanup, this should improve debug info memory usage
in the backend, since it shaves five pointers off of every `DIELoc` and
`DIEBlock`.  I haven't bothered to measure the savings, though.

llvm-svn: 243858

8 years agoDwarfLinker: Use DIEValueList instead of DIE, NFC
Duncan P. N. Exon Smith [Sun, 2 Aug 2015 20:48:47 +0000 (20:48 +0000)]
DwarfLinker: Use DIEValueList instead of DIE, NFC

Use `DIEValueList` as a pointer to either `DIEBlock` or `DIELoc` instead
of `DIE`, since soon they won't inherit from the latter.

llvm-svn: 243857

8 years agoAsmPrinter: Split out non-DIE printing from DIE::print(), NFC
Duncan P. N. Exon Smith [Sun, 2 Aug 2015 20:46:49 +0000 (20:46 +0000)]
AsmPrinter: Split out non-DIE printing from DIE::print(), NFC

Split out a helper `printValues()` for printing `DIEBlock` and `DIELoc`,
instead of relying on `DIE::print()`.  The shared code was actually
fairly small there.  No functionality change intended.

llvm-svn: 243856

8 years agoAsmPrinter: Take DIEValueList in some DwarfUnit API, NFC
Duncan P. N. Exon Smith [Sun, 2 Aug 2015 20:44:46 +0000 (20:44 +0000)]
AsmPrinter: Take DIEValueList in some DwarfUnit API, NFC

Take `DIEValueList` instead of `DIE` so that `DIEBlock` and `DIELoc` can
stop inheriting from `DIE` in a future commit.

llvm-svn: 243855

8 years agoAsmPrinter: Change DIEValueList to a subclass of DIE, NFC
Duncan P. N. Exon Smith [Sun, 2 Aug 2015 20:42:45 +0000 (20:42 +0000)]
AsmPrinter: Change DIEValueList to a subclass of DIE, NFC

Rewrite `DIEValueList` as a subclass of `DIE`, renaming its API to match
`DIE`'s.  This is preparation for changing `DIEBlock` and `DIELoc` to
stop inheriting from `DIE` and inherit directly from `DIEValueList`.

I thought about leaving this as a has-a relationship (and changing
`DIELoc` and `DIEBlock` to also have-a `DIEValueList`), but that seemed
to require a fair bit more boilerplate and I think it needed more
changes to the `DwarfUnit` API than this will.

No functionality change intended here.

llvm-svn: 243854

8 years agoRemove dead code, NFC
Duncan P. N. Exon Smith [Sun, 2 Aug 2015 20:40:05 +0000 (20:40 +0000)]
Remove dead code, NFC

llvm-svn: 243853

8 years agoUse the branch instruction to define the location of a PHI-node write
Tobias Grosser [Sun, 2 Aug 2015 16:17:41 +0000 (16:17 +0000)]
Use the branch instruction to define the location of a PHI-node write

We use the branch instruction as the location at which a PHI-node write takes
place, instead of the PHI-node itself. This allows us to identify the
basic-block in a region statement which is on the incoming edge of the PHI-node
and for which the write access was originally introduced. As a result we can,
during code generation, avoid generating PHI-node write accesses for basic
blocks that do not preceed the PHI node without having to look at the IR
again.

This change fixes a bug which was introduced in r243420, when we started to
explicitly model PHI-node reads and writes, but dropped some additional checks
that where still necessary during code generation to not emit PHI-node writes
for basic-blocks that are not on incoming edges of the original PHI node.
Compared to the code before r243420 the new code does not need to inspect the IR
any more and we also do not generate multiple redundant writes.

llvm-svn: 243852

8 years agoFix invalid shufflevector operands
Simon Pilgrim [Sun, 2 Aug 2015 15:28:10 +0000 (15:28 +0000)]
Fix invalid shufflevector operands

This patch fixes bug 23800 ( https://llvm.org/bugs/show_bug.cgi?id=23800#c2 ). There existed a case where the index operand from extractelement was directly used to create a shufflevector mask. Since the index can be of any integral type but the mask must only contain 32 bit integers a 64 bit index operand led to an assertion error later on.

Committed on behalf of mpflanzer (Moritz Pflanzer)

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

llvm-svn: 243851

8 years ago[X86][SSE] Refreshed sse2 vector shift tests
Simon Pilgrim [Sun, 2 Aug 2015 15:23:53 +0000 (15:23 +0000)]
[X86][SSE] Refreshed sse2 vector shift tests

llvm-svn: 243850

8 years agoDependences: Zero pad the schedule map
Tobias Grosser [Sun, 2 Aug 2015 13:30:33 +0000 (13:30 +0000)]
Dependences: Zero pad the schedule map

The schedule map we derive from a schedule tree map may map statements into
schedule spaces of different dimensionality. This change adds zero padding
to ensure just a single schedule space is used and the translation from
a union_map to an isl_multi_union_pw_aff does not fail.

llvm-svn: 243849

8 years ago[X86][AVX512VLDQ] add reduce/range/cvt intrinsics
Asaf Badouh [Sun, 2 Aug 2015 12:43:08 +0000 (12:43 +0000)]
[X86][AVX512VLDQ] add reduce/range/cvt intrinsics
add 128 & 256 width intrinsic versions of reduce/range and cvt i64 to FP and vice versa

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

llvm-svn: 243848

8 years agoAdd support to set/get ordering for load/store from the C API
Andrew Wilkins [Sun, 2 Aug 2015 12:16:57 +0000 (12:16 +0000)]
Add support to set/get ordering for load/store from the C API

Summary: As per title

Reviewers: chandlerc, bogner, majnemer, axw

Subscribers: llvm-commits

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

llvm-svn: 243847

8 years agoGDBRemoteCommunication::DecompressPacket assumed that the buffer it was
Jason Molenda [Sun, 2 Aug 2015 01:36:09 +0000 (01:36 +0000)]
GDBRemoteCommunication::DecompressPacket assumed that the buffer it was
working with (the Communication m_bytes ivar) contained a single packet.
Instead, it may contain multitudes.  Find the boundaries of the first packet
in the buffer and replace that with the decompressed version leaving the
rest of the buffer unmodified.
<rdar://problem/21841377>

llvm-svn: 243846

8 years agoMark CompositeType::getTypeAtIndex as const. NFC
Craig Topper [Sat, 1 Aug 2015 22:52:12 +0000 (22:52 +0000)]
Mark CompositeType::getTypeAtIndex as const. NFC

llvm-svn: 243845

8 years agoMark Type::getPointerTo as const. Unfortunately, this requires a const_cast inside...
Craig Topper [Sat, 1 Aug 2015 22:20:31 +0000 (22:20 +0000)]
Mark Type::getPointerTo as const. Unfortunately, this requires a const_cast inside, but at least it makes all methods on Type const. NFC

llvm-svn: 243844

8 years agoMerge the const and non-const Type::getScalarType to a const version that returns...
Craig Topper [Sat, 1 Aug 2015 22:20:27 +0000 (22:20 +0000)]
Merge the const and non-const Type::getScalarType to a const version that returns a non-const pointer. Since we don't put const on Types all places were already calling the non-const version.

llvm-svn: 243843

8 years agoDe-constify pointers to Type since they can't be modified. NFC
Craig Topper [Sat, 1 Aug 2015 22:20:21 +0000 (22:20 +0000)]
De-constify pointers to Type since they can't be modified. NFC

This was already done in most places a while ago. This just fixes the ones that crept in over time.

llvm-svn: 243842

8 years agoRangify for loops, NFC.
Yaron Keren [Sat, 1 Aug 2015 19:11:36 +0000 (19:11 +0000)]
Rangify for loops, NFC.

llvm-svn: 243841

8 years agoRevert r243827.
Davide Italiano [Sat, 1 Aug 2015 18:25:03 +0000 (18:25 +0000)]
Revert r243827.

Until I figure out what's the right way of updating this file.

llvm-svn: 243840

8 years ago[NVPTX] allow register copy between float and int
Jingyue Wu [Sat, 1 Aug 2015 18:02:12 +0000 (18:02 +0000)]
[NVPTX] allow register copy between float and int

Summary:
Fixes PR24303. With Bruno's WIP (D11197) on PeepholeOptimizer, across-class
register copying (e.g. i32 to f32) becomes possible. Enhance
NVPTXInstrInfo::copyPhysReg to handle these cases.

Reviewers: jholewinski

Subscribers: eliben, jholewinski, llvm-commits, bruno

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

llvm-svn: 243839

8 years agoRemove trailing whitespace. NFCI.
Simon Pilgrim [Sat, 1 Aug 2015 17:06:47 +0000 (17:06 +0000)]
Remove trailing whitespace. NFCI.

llvm-svn: 243838

8 years agoUse SDValue bool check. NFCI.
Simon Pilgrim [Sat, 1 Aug 2015 17:05:50 +0000 (17:05 +0000)]
Use SDValue bool check. NFCI.

llvm-svn: 243837

8 years agoProvide move constructor to appease Visual C++.
Yaron Keren [Sat, 1 Aug 2015 15:50:53 +0000 (15:50 +0000)]
Provide move constructor to appease Visual C++.

llvm-svn: 243836

8 years ago[Mips] Implement definition of the DT_MIPS_RLD_MAP_REL dynamic tag
Simon Atanasyan [Sat, 1 Aug 2015 14:53:49 +0000 (14:53 +0000)]
[Mips] Implement definition of the DT_MIPS_RLD_MAP_REL dynamic tag

llvm-svn: 243835

8 years ago[Mips] Support DT_MIPS_RLD_MAP_REL dynamic section tag in the llvm-readobj
Simon Atanasyan [Sat, 1 Aug 2015 12:02:02 +0000 (12:02 +0000)]
[Mips] Support DT_MIPS_RLD_MAP_REL dynamic section tag in the llvm-readobj

llvm-svn: 243833

8 years ago[SemaExpr] Factor out common diagnostic code for remainder/division.
Davide Italiano [Sat, 1 Aug 2015 10:13:39 +0000 (10:13 +0000)]
[SemaExpr] Factor out common diagnostic code for remainder/division.

llvm-svn: 243832

8 years ago[DAGCombiner] Convert constant AND masks to shuffle clear masks down to the byte...
Simon Pilgrim [Sat, 1 Aug 2015 10:01:46 +0000 (10:01 +0000)]
[DAGCombiner] Convert constant AND masks to shuffle clear masks down to the byte level

The XformToShuffleWithZero method currently checks AND masks at the per-lane level for all-one and all-zero constants and attempts to convert them to legal shuffle clear masks.

This patch generalises XformToShuffleWithZero, splitting and checking the sub-lanes of the constants down to the byte level to see if any legal shuffle clear masks are possible. This allows a lot of masks (often from legalization or truncation) to be folded into existing shuffle patterns and removes a lot of constant mask loading.

There are a few examples of poor shuffle lowering that are exposed by this patch that will be cleaned up in future patches (e.g. merging shuffles that are separated by bitcasts, x86 legalized v8i8 zero extension uses PMOVZX+AND+AND instead of AND+PMOVZX, etc.)

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

llvm-svn: 243831

8 years agoOnly use instructions as insert locations for SCEVExpander
Tobias Grosser [Sat, 1 Aug 2015 09:07:57 +0000 (09:07 +0000)]
Only use instructions as insert locations for SCEVExpander

SCEVExpander, which we are using during code generation, only allows
instructions as insert locations, but breaks in case BasicBlock->end() iterators
are passed to it due to it trying to obtain the basic block in which code should
be generated by calling Instruction->getParent(), which is not defined for
->end() iterators.

This change adds an assert to Polly that ensures we only pass valid instructions
to SCEVExpander and it fixes one case, where we used IRBuilder->SetInsertBlock()
to set an ->end() insert location which was later passed to SCEVExpander.

In general, Polly is always trying to build up the CFG first, before we actually
insert instructions into the CFG sceleton. As a result, each basic block should
already have at least one branch instruction before we start adding code. Hence,
always requiring the IRBuilder insert location to be set to a real instruction
should always be possible.

Thanks Utpal Bora <cs14mtech11017@iith.ac.in> for his help with test case
reduction.

llvm-svn: 243830

8 years agoFix typo
Tobias Grosser [Sat, 1 Aug 2015 06:26:51 +0000 (06:26 +0000)]
Fix typo

llvm-svn: 243829

8 years ago[MS ABI] Create a mangling for extended vector types
David Majnemer [Sat, 1 Aug 2015 05:51:55 +0000 (05:51 +0000)]
[MS ABI] Create a mangling for extended vector types

Extended vector types are mangled just like normal vector types.

llvm-svn: 243828

8 years agoConvertibility of nullptr_t to bool is available in clang. Note it.
Davide Italiano [Sat, 1 Aug 2015 05:48:03 +0000 (05:48 +0000)]
Convertibility of nullptr_t to bool is available in clang. Note it.

llvm-svn: 243827

8 years agoUse the reserved keyword spelling of 'typeof'
David Majnemer [Sat, 1 Aug 2015 05:31:56 +0000 (05:31 +0000)]
Use the reserved keyword spelling of 'typeof'

No functional change intended, just a drive-by cleanup.

llvm-svn: 243826

8 years ago-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated...
David Blaikie [Sat, 1 Aug 2015 05:31:27 +0000 (05:31 +0000)]
-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11

Remove some unnecessary explicit special members in Hexagon that, once
removed, allow the other implicit special members to be used without
depending on deprecated features.

llvm-svn: 243825

8 years ago-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated...
David Blaikie [Sat, 1 Aug 2015 05:10:40 +0000 (05:10 +0000)]
-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11

llvm-svn: 243824

8 years agoWorkaround some compilers that give a stricter throw spec to = default than implicit...
David Blaikie [Sat, 1 Aug 2015 05:10:37 +0000 (05:10 +0000)]
Workaround some compilers that give a stricter throw spec to = default than implicit dtors

llvm-svn: 243823

8 years agoWebAssembly: handle more than int32 argument/return
JF Bastien [Sat, 1 Aug 2015 04:48:44 +0000 (04:48 +0000)]
WebAssembly: handle more than int32 argument/return

Summary: Also test 64-bit integers, except shifts for now which are broken because isel dislikes the 32-bit truncate that precedes them.

Reviewers: sunfish

Subscribers: llvm-commits, jfb

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

llvm-svn: 243822

8 years agoMissing formatting
David Blaikie [Sat, 1 Aug 2015 04:42:53 +0000 (04:42 +0000)]
Missing formatting

llvm-svn: 243821

8 years ago-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated...
David Blaikie [Sat, 1 Aug 2015 04:40:41 +0000 (04:40 +0000)]
-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11

Various targets use std::swap on specific MCAsmOperands (ARM and
possibly Hexagon as well). It might be helpful to mark those subclasses
as final, to ensure that the availability of move/copy operations can't
lead to slicing. (same sort of requirements as the non-vitual dtor -
protected or a final class)

llvm-svn: 243820

8 years ago[Tests] Add explicit -std=lang option to a number of tests.
Yunzhong Gao [Sat, 1 Aug 2015 02:55:59 +0000 (02:55 +0000)]
[Tests] Add explicit -std=lang option to a number of tests.

This patch should not change the test results, but it is useful if clang's
default C++ language is ever changed from gnu++98.

Patch by: Charles Li

http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150727/134667.html

llvm-svn: 243819

8 years ago[libFuzzer] more refactoring of the Mutator and adding tests to it
Kostya Serebryany [Sat, 1 Aug 2015 02:23:06 +0000 (02:23 +0000)]
[libFuzzer] more refactoring of the Mutator and adding tests to it

llvm-svn: 243818

8 years ago[libFuzzer] start refactoring the Mutator and adding tests to it
Kostya Serebryany [Sat, 1 Aug 2015 01:42:51 +0000 (01:42 +0000)]
[libFuzzer] start refactoring the Mutator and adding tests to it

llvm-svn: 243817

8 years ago-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated...
David Blaikie [Sat, 1 Aug 2015 01:08:30 +0000 (01:08 +0000)]
-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11

llvm-svn: 243816

8 years ago[asan] Link tests with ld.gold on Android.
Evgeniy Stepanov [Sat, 1 Aug 2015 00:01:23 +0000 (00:01 +0000)]
[asan] Link tests with ld.gold on Android.

ld.bfd fails to find dependencies of asan runtime library w/o an
extra -rpath-link pointing to usr/lib under the sysroot. Gold does
not have this problem.

llvm-svn: 243802

8 years agoFix polly tests after LLVM IR change in r243774
Duncan P. N. Exon Smith [Fri, 31 Jul 2015 23:58:50 +0000 (23:58 +0000)]
Fix polly tests after LLVM IR change in r243774

llvm-svn: 243801

8 years ago[ASan] Fix two tests on FreeBSD: alloca.h is missing there.
Alexey Samsonov [Fri, 31 Jul 2015 23:57:06 +0000 (23:57 +0000)]
[ASan] Fix two tests on FreeBSD: alloca.h is missing there.

llvm-svn: 243800

8 years agoAMDGPU/SI: Add implicit register operands in the correct order.
Alex Lorenz [Fri, 31 Jul 2015 23:30:09 +0000 (23:30 +0000)]
AMDGPU/SI: Add implicit register operands in the correct order.

This commit fixes a bug in the class 'SIInstrInfo' where the implicit register
machine operands were added to a machine instruction in an incorrect order -
the implicit uses were added before the implicit defs.

I found this bug while working on moving the implicit register operand
verification code from the MIR parser to the machine verifier.

This commit also makes the method 'addImplicitDefUseOperands' in the machine
instruction class public so that it can be reused in the 'SIInstrInfo' class.

Reviewers: Matt Arsenault

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

llvm-svn: 243799

8 years agoMIR Parser: Report an error when a jump table entry is redefined.
Alex Lorenz [Fri, 31 Jul 2015 23:13:23 +0000 (23:13 +0000)]
MIR Parser: Report an error when a jump table entry is redefined.

llvm-svn: 243798

8 years ago[Sanitizer] Try to fix sanitizer_libc_test on FreeBSD.
Alexey Samsonov [Fri, 31 Jul 2015 23:02:51 +0000 (23:02 +0000)]
[Sanitizer] Try to fix sanitizer_libc_test on FreeBSD.

llvm-svn: 243797

8 years agoMIR Parser: Remove unused variable.
Alex Lorenz [Fri, 31 Jul 2015 22:59:20 +0000 (22:59 +0000)]
MIR Parser: Remove unused variable.

This variable is unused as of r243572.

llvm-svn: 243796

8 years ago[libFuzzer] limit the size of the inputs printed to stderr
Kostya Serebryany [Fri, 31 Jul 2015 22:07:17 +0000 (22:07 +0000)]
[libFuzzer] limit the size of the inputs printed to stderr

llvm-svn: 243795

8 years agoCOFF: Fix error message. Space was missing.
Rui Ueyama [Fri, 31 Jul 2015 21:51:25 +0000 (21:51 +0000)]
COFF: Fix error message. Space was missing.

llvm-svn: 243794

8 years ago[libFuzzer] minimal documentation on data-flow-guided fuzzing
Kostya Serebryany [Fri, 31 Jul 2015 21:48:10 +0000 (21:48 +0000)]
[libFuzzer] minimal documentation on data-flow-guided fuzzing

llvm-svn: 243793

8 years agoFix an MSVC build break since it can't synthesize move ctors.
David Blaikie [Fri, 31 Jul 2015 21:47:07 +0000 (21:47 +0000)]
Fix an MSVC build break since it can't synthesize move ctors.

llvm-svn: 243792

8 years agoFix a GCC buildbot that seemed to be having trouble producing the implicit move ctor
David Blaikie [Fri, 31 Jul 2015 21:47:04 +0000 (21:47 +0000)]
Fix a GCC buildbot that seemed to be having trouble producing the implicit move ctor

llvm-svn: 243791

8 years ago[NVPTX] convert pointers in byval kernel arguments to global
Jingyue Wu [Fri, 31 Jul 2015 21:44:14 +0000 (21:44 +0000)]
[NVPTX] convert pointers in byval kernel arguments to global

Summary:
For example, in

  struct S {
    int *x;
    int *y;
  };
  __global__ void foo(S s) {
    int *b = s.y;
    // use b
  }

"b" is guaranteed to point to global. NVPTX should emit ld.global/st.global for
accessing "b".

Reviewers: jholewinski

Subscribers: llvm-commits, jholewinski

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

llvm-svn: 243790

8 years agoFix some formatting from a recent commit.
David Blaikie [Fri, 31 Jul 2015 21:37:58 +0000 (21:37 +0000)]
Fix some formatting from a recent commit.

llvm-svn: 243789

8 years ago-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated...
David Blaikie [Fri, 31 Jul 2015 21:37:09 +0000 (21:37 +0000)]
-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11

llvm-svn: 243788

8 years ago[asan] Fix wrong __ANDROID_API__ preprocessor condition.
Evgeniy Stepanov [Fri, 31 Jul 2015 21:35:15 +0000 (21:35 +0000)]
[asan] Fix wrong __ANDROID_API__ preprocessor condition.

This fixes report symbolization on L devices when building for API
level 21 or 22.

llvm-svn: 243787

8 years ago-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated...
David Blaikie [Fri, 31 Jul 2015 21:26:16 +0000 (21:26 +0000)]
-Wdeprecated-clean: Fix cases of violating the rule of 5 in ways that are deprecated in C++11

llvm-svn: 243786

8 years ago[CMake] Don't build libc++ with MSan-with-calls instrumentation.
Alexey Samsonov [Fri, 31 Jul 2015 21:15:34 +0000 (21:15 +0000)]
[CMake] Don't build libc++ with MSan-with-calls instrumentation.

Instead, refactor the build rules so that we build libc++ with MSan for
each supported architecture.

llvm-svn: 243785

8 years agoRemove -Werror when using check_cxx_compiler_flag because it was causing compiler...
Eric Fiselier [Fri, 31 Jul 2015 21:09:38 +0000 (21:09 +0000)]
Remove -Werror when using check_cxx_compiler_flag because it was causing compiler-rt breakages.

llvm-svn: 243784

8 years agoWebAssembly: handle `ret void`.
JF Bastien [Fri, 31 Jul 2015 21:04:18 +0000 (21:04 +0000)]
WebAssembly: handle `ret void`.

Summary:
Use -1 as numoperands for the return SDTypeProfile, denoting that return is variadic. Note that the patterns in InstrControl.td still need to match the inputs, so this ins't an "anything goes" variadic on ret!

The next step will be to handle other local types (not just int32).

Reviewers: sunfish

Subscribers: llvm-commits, jfb

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

llvm-svn: 243783

8 years ago[lldb-mi] Fix evaluation for children of created variable object.
Dawn Perchik [Fri, 31 Jul 2015 21:00:00 +0000 (21:00 +0000)]
[lldb-mi] Fix evaluation for children of created variable object.

Move code in CMICmdCmdVarListChildren::Execute() up so that the child
object will always be added when the MI command -var-list-children is
entered (instead of only when the print-value was all or simple).  This
patch fixes evaluation of expressions like varobj.member for a created
varobj with children.

Reviewed by: abidh
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D11659

llvm-svn: 243782

8 years ago[libFuzzer] make sure that 2-byte arguments of switch() are handled properly
Kostya Serebryany [Fri, 31 Jul 2015 20:58:55 +0000 (20:58 +0000)]
[libFuzzer] make sure that 2-byte arguments of switch() are handled properly

llvm-svn: 243781

8 years agoMIR Serialization: Serialize the floating point immediate machine operands.
Alex Lorenz [Fri, 31 Jul 2015 20:49:21 +0000 (20:49 +0000)]
MIR Serialization: Serialize the floating point immediate machine operands.

Reviewers: Duncan P. N. Exon Smith
llvm-svn: 243780

8 years agoIR: Add a broad bitcode compatibility test
Duncan P. N. Exon Smith [Fri, 31 Jul 2015 20:44:32 +0000 (20:44 +0000)]
IR: Add a broad bitcode compatibility test

Successive versions of LLVM should retain the ability to parse bitcode
generated by old releases of the compiler.  This adds a bitcode format
compatibility test, which is intended to provide good (albeit not
entirely exhaustive) coverage of the current LangRef.

This also includes compatibility tests for LLVM 3.6.  After every 3.X.0
release, the compatibility.ll file from the 3.X branch should be copied
to compatibility-3.X.ll on trunk, and the 3.X.0 release used to generate
a corresponding bitcode file.

Patch by Vedant Kumar!

llvm-svn: 243779

8 years ago[dwarfdump] Ignore scattered relocations for mach-o.
Frederic Riss [Fri, 31 Jul 2015 20:22:50 +0000 (20:22 +0000)]
[dwarfdump] Ignore scattered relocations for mach-o.

When encountering a scattered relocation, the code would assert trying to
access an unexisting section. I couldn't find a way to expose the result
of the processing of a scattered reloc, and I'm really unsure what the
right thing to do is. This patch just skips them during the processing in
DwarfContext and adds a mach-o file to the tests that exposed the asserting
behavior.
(This is a new failure that is being exposed by Rafael's recent work on
the libObject interfaces. I think the wrong behavior has always happened,
but now it's asserting)

llvm-svn: 243778

8 years ago[dsymutil] Support multiple input files on the command line
Frederic Riss [Fri, 31 Jul 2015 20:22:20 +0000 (20:22 +0000)]
[dsymutil] Support multiple input files on the command line

llvm-svn: 243777

8 years agotest commit; wrap ellipses in comment with brackets
Nathan Wilson [Fri, 31 Jul 2015 20:00:02 +0000 (20:00 +0000)]
test commit; wrap ellipses in comment with brackets

llvm-svn: 243776

8 years agoDI: Update testcases for LLVM assembly change
Duncan P. N. Exon Smith [Fri, 31 Jul 2015 18:59:37 +0000 (18:59 +0000)]
DI: Update testcases for LLVM assembly change

Update testcases after LLVM change r243774.

Most of these had no need to check `tag:` field, but did so as a way of
getting to the `name:` field.  In a few cases I've converted the `tag:`
checks to `arg:` or `CHECK-NOT: arg:`.

llvm-svn: 243775

8 years agoDI: Remove DW_TAG_arg_variable and DW_TAG_auto_variable
Duncan P. N. Exon Smith [Fri, 31 Jul 2015 18:58:39 +0000 (18:58 +0000)]
DI: Remove DW_TAG_arg_variable and DW_TAG_auto_variable

Remove the fake `DW_TAG_auto_variable` and `DW_TAG_arg_variable` tags,
using `DW_TAG_variable` in their place Stop exposing the `tag:` field at
all in the assembly format for `DILocalVariable`.

Most of the testcase updates were generated by the following sed script:

    find test/ -name "*.ll" -o -name "*.mir" |
    xargs grep -l 'DILocalVariable' |
    xargs sed -i '' \
      -e 's/tag: DW_TAG_arg_variable, //' \
      -e 's/tag: DW_TAG_auto_variable, //'

There were only a handful of tests in `test/Assembly` that I needed to
update by hand.

(Note: a follow-up could change `DILocalVariable::DILocalVariable()` to
set the tag to `DW_TAG_formal_parameter` instead of `DW_TAG_variable`
(as appropriate), instead of having that logic magically in the backend
in `DbgVariable`.  I've added a FIXME to that effect.)

llvm-svn: 243774

8 years agoAdd missing 'override'.
Daniel Jasper [Fri, 31 Jul 2015 18:32:38 +0000 (18:32 +0000)]
Add missing 'override'.

llvm-svn: 243773

8 years agox86: check hasOpaqueSPAdjustment in canRealignStack
JF Bastien [Fri, 31 Jul 2015 18:28:09 +0000 (18:28 +0000)]
x86: check hasOpaqueSPAdjustment in canRealignStack

Summary:
@rnk pointed out in [1] that x86's canRealignStack logic should match that in CantUseSP from hasBasePointer.

  [1]: http://reviews.llvm.org/D11160?id=29713#inline-89350

Reviewers: rnk

Subscribers: rnk, llvm-commits

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

llvm-svn: 243772

8 years ago[UBSan] Test: Move coverage-levels.cc out of Linux directory
Filipe Cabecinhas [Fri, 31 Jul 2015 18:18:07 +0000 (18:18 +0000)]
[UBSan] Test: Move coverage-levels.cc out of Linux directory

Summary:
This test is working on other platforms.

Reviewers: samsonov, emaste

Subscribers: llvm-commits

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

llvm-svn: 243771

8 years agoWebAssembly: handle unused function arguments.
JF Bastien [Fri, 31 Jul 2015 18:13:27 +0000 (18:13 +0000)]
WebAssembly: handle unused function arguments.

Subscribers: llvm-commits, sunfish, jfb

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

llvm-svn: 243770

8 years agoAttempt to appease the MSVC build bots
David Majnemer [Fri, 31 Jul 2015 18:13:25 +0000 (18:13 +0000)]
Attempt to appease the MSVC build bots

They don't seem to care for initializing an ArrayRef with a
std::initializer_list.

llvm-svn: 243769

8 years ago[libFuzzer] record traces from the switch statements only when told to do so
Kostya Serebryany [Fri, 31 Jul 2015 18:09:08 +0000 (18:09 +0000)]
[libFuzzer] record traces from the switch statements only when told to do so

llvm-svn: 243768

8 years ago[MS ABI] Hook clang up to the new EH instructions
David Majnemer [Fri, 31 Jul 2015 17:58:45 +0000 (17:58 +0000)]
[MS ABI] Hook clang up to the new EH instructions

The new EH instructions make it possible for LLVM to generate .xdata
tables that the MSVC personality routines will be happy about.  Because
this is experimental, hide it behind a -cc1 flag (-fnew-ms-eh).

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

llvm-svn: 243767

8 years agoNew EH representation for MSVC compatibility
David Majnemer [Fri, 31 Jul 2015 17:58:14 +0000 (17:58 +0000)]
New EH representation for MSVC compatibility

This introduces new instructions neccessary to implement MSVC-compatible
exception handling support.  Most of the middle-end and none of the
back-end haven't been audited or updated to take them into account.

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

llvm-svn: 243766

8 years agoDI: Update for LLVM API change for local variables
Duncan P. N. Exon Smith [Fri, 31 Jul 2015 17:56:14 +0000 (17:56 +0000)]
DI: Update for LLVM API change for local variables

Adjust to LLVM DIBuilder API changes in r243764, using
`createAutoVariable()` and `createParameterVariable()` in place of
`createLocalVariable()`.  No real functionality change here.

llvm-svn: 243765

8 years agoDI: Rewrite the DIBuilder local variable API
Duncan P. N. Exon Smith [Fri, 31 Jul 2015 17:55:53 +0000 (17:55 +0000)]
DI: Rewrite the DIBuilder local variable API

Replace the general `createLocalVariable()` with two more specific
functions: `createParameterVariable()` and `createAutoVariable()`, and
rewrite the documentation.

Besides cleaning up the API, this avoids exposing the fake DWARF tags
`DW_TAG_arg_variable` and `DW_TAG_auto_variable` to frontends, and is
preparation for removing them completely.

llvm-svn: 243764

8 years agoWebAssembly: print basic integer assembly.
JF Bastien [Fri, 31 Jul 2015 17:53:38 +0000 (17:53 +0000)]
WebAssembly: print basic integer assembly.

Summary:
This prints assembly for int32 integer operations defined in WebAssemblyInstrInteger.td only, with major caveats:

  - The operation names are currently incorrect.
  - Other integer and floating-point types will be added later.
  - The printer isn't factored out to handle recursive AST code yet, since it can't even handle control flow anyways.
  - The assembly format isn't full s-expressions yet either, this will be added later.
  - This currently disables PrologEpilogCodeInserter as well as MachineCopyPropagation becasue they don't like virtual registers, which WebAssembly likes quite a bit. This will be fixed by factoring out NVPTX's change (currently a fork of PrologEpilogCodeInserter).

Reviewers: sunfish

Subscribers: llvm-commits, jfb

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

llvm-svn: 243763

8 years agoCOFF: Reenable the lld test disabled in r243758.
David Majnemer [Fri, 31 Jul 2015 17:41:11 +0000 (17:41 +0000)]
COFF: Reenable the lld test disabled in r243758.

llvm-svn: 243762

8 years ago[COFF] Consider the ImageBase when reporting section addresses
David Majnemer [Fri, 31 Jul 2015 17:40:24 +0000 (17:40 +0000)]
[COFF] Consider the ImageBase when reporting section addresses

This lets us reenable the lld test disabled in r243758.

llvm-svn: 243761

8 years ago[libFuzzer] support switch interception in dfsan mode
Kostya Serebryany [Fri, 31 Jul 2015 17:05:05 +0000 (17:05 +0000)]
[libFuzzer] support switch interception in dfsan mode

llvm-svn: 243760

8 years ago[CodeGenPrepare] Compress a pair. No functional change.
Benjamin Kramer [Fri, 31 Jul 2015 17:00:39 +0000 (17:00 +0000)]
[CodeGenPrepare] Compress a pair. No functional change.

llvm-svn: 243759

8 years agoDisable objdump disassembly test after r243755
Reid Kleckner [Fri, 31 Jul 2015 16:41:23 +0000 (16:41 +0000)]
Disable objdump disassembly test after r243755

Right now PE image section addresses are RVAs and symbol addresses are
VAs.  We should probably fix this by changing section addresses to match
symbol addresses. Fixing this might take a few hours, so temporarily
disable the objdump part of this test.

llvm-svn: 243758

8 years agoAdd some help strings for /dll and /debug so they show up in /?
Reid Kleckner [Fri, 31 Jul 2015 16:40:38 +0000 (16:40 +0000)]
Add some help strings for /dll and /debug so they show up in /?

llvm-svn: 243757

8 years ago[x86] reassociate integer multiplies using machine combiner pass
Sanjay Patel [Fri, 31 Jul 2015 16:21:55 +0000 (16:21 +0000)]
[x86] reassociate integer multiplies using machine combiner pass

Add i16, i32, i64 imul machine instructions to the list of reassociation
candidates.

A new bit of logic is needed to handle integer instructions: they have an
implicit EFLAGS operand, so we have to make sure it's dead in order to do
any reassociation with integer ops.

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

llvm-svn: 243756

8 years ago[COFF] Return symbol VAs instead of RVAs for PE files
Reid Kleckner [Fri, 31 Jul 2015 16:14:22 +0000 (16:14 +0000)]
[COFF] Return symbol VAs instead of RVAs for PE files

This makes llvm-nm consistent with binutils nm on executables and DLLs.
For a vanilla hello world executable, the address of main should include
the default image base of 0x400000.

llvm-svn: 243755

8 years agoAdd misc-unused-alias-decls check that currently finds unused namespace
Daniel Jasper [Fri, 31 Jul 2015 16:08:10 +0000 (16:08 +0000)]
Add misc-unused-alias-decls check that currently finds unused namespace
alias declarations. In the future, we might want to reuse it to also
fine unsed using declarations and such.

llvm-svn: 243754

8 years ago[AArch64] Favor extended reg patterns for sub
Geoff Berry [Fri, 31 Jul 2015 15:55:54 +0000 (15:55 +0000)]
[AArch64] Favor extended reg patterns for sub

Summary:
Favor the extended reg patterns over the shifted reg patterns that match
only the operand shift and not the full sign/zero extend and shift.

Reviewers: jmolloy, t.p.northover

Subscribers: mcrosier, aemerson, llvm-commits, rengolin

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

llvm-svn: 243753

8 years ago[libc++abi] Allow use just compiled clang++ for tests
Renato Golin [Fri, 31 Jul 2015 15:25:11 +0000 (15:25 +0000)]
[libc++abi] Allow use just compiled clang++ for tests

Currently, the tests assume the system compiler is the one we want
to test, but if we build libcxxabi together with LLVM+Clang, it'll
get the wrong compiler.

This patch allows us to test if we have clang++ in our /bin directory,
and if so, use it.

llvm-svn: 243752

8 years agodon't repeat function names in comments; NFC
Sanjay Patel [Fri, 31 Jul 2015 15:10:44 +0000 (15:10 +0000)]
don't repeat function names in comments; NFC

llvm-svn: 243751

8 years ago[CaptureTracker] Provide an ordered basic block to PointerMayBeCapturedBefore
Bruno Cardoso Lopes [Fri, 31 Jul 2015 14:31:35 +0000 (14:31 +0000)]
[CaptureTracker] Provide an ordered basic block to PointerMayBeCapturedBefore

This patch is a follow up from r240560 and is a step further into
mitigating the compile time performance issues in CaptureTracker.

By providing the CaptureTracker with a "cached ordered basic block"
instead of computing it every time, MemDepAnalysis can use this cache
throughout its calls to AA->callCapturesBefore, avoiding to recompute it
for every scanned instruction. In the same testcase used in r240560,
compile time is reduced from 2min to 30s.

This also fixes PR22348.

rdar://problem/19230319
Differential Revision: http://reviews.llvm.org/D11364

llvm-svn: 243750

8 years agoImprove man page markup
Ed Maste [Fri, 31 Jul 2015 14:26:15 +0000 (14:26 +0000)]
Improve man page markup

Patch by Baptiste Daroussin

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

llvm-svn: 243749

8 years agoReport original thread ID for FreeBSD core files
Ed Maste [Fri, 31 Jul 2015 14:24:32 +0000 (14:24 +0000)]
Report original thread ID for FreeBSD core files

On FreeBSD the tid is (somewhat unintuitively) found in the pr_pid
field of the NT_PRSTATUS note. Collect it when parsing the note and
store it in the thread data.

For Linux I've left the original behaviour of using sequential TIDs
(0, 1, 2...) as I don't yet have code to obtain it.

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

llvm-svn: 243748

8 years ago[clang-tidy] Support replacements in macro arguments in misc-inefficient-algorithm
Alexander Kornienko [Fri, 31 Jul 2015 13:34:58 +0000 (13:34 +0000)]
[clang-tidy] Support replacements in macro arguments in misc-inefficient-algorithm

Summary:
Support replacements in macro arguments in the
misc-inefficient-algorithm check.

Reviewers: klimek

Subscribers: cfe-commits

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

llvm-svn: 243747