platform/upstream/llvm.git
8 years agoUpdate the website with lots of new info about building / testing.
Zachary Turner [Wed, 24 Feb 2016 22:19:23 +0000 (22:19 +0000)]
Update the website with lots of new info about building / testing.

llvm-svn: 261795

8 years ago[asan] Do not instrument globals in the special "LLVM" sections
Anna Zaks [Wed, 24 Feb 2016 22:12:18 +0000 (22:12 +0000)]
[asan] Do not instrument globals in the special "LLVM" sections

llvm-svn: 261794

8 years agoIntroduce ScopStmt::getRegionNode(). NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:28 +0000 (22:08 +0000)]
Introduce ScopStmt::getRegionNode(). NFC.

Replace an inline ternary operator pattern.

llvm-svn: 261793

8 years agoIntroduce ScopStmt::getEntryBlock(). NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:24 +0000 (22:08 +0000)]
Introduce ScopStmt::getEntryBlock(). NFC.

This replaces an ungly inline ternary operator pattern.

llvm-svn: 261792

8 years agoIntroduce Scop::getStmtFor. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:19 +0000 (22:08 +0000)]
Introduce Scop::getStmtFor. NFC.

Replace Scop::getStmtForBasicBlock and Scop::getStmtForRegionNode, and
add overloads for llvm::Instruction and llvm::RegionNode.

getStmtFor and overloads become the common interface to get the Stmt
that contains something. Named after LoopInfo::getLoopFor and
RegionInfo::getRegionFor.

llvm-svn: 261791

8 years agoAdd assertions checking def dominates use. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:14 +0000 (22:08 +0000)]
Add assertions checking def dominates use. NFC.

This is also be caught by the function verifier, but disconnected from
the place that produced it. Catch it already at creation to be able to
reason more directly about the cause.

llvm-svn: 261790

8 years agoAdd assertion to MemoryAccess::addIncoming. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:11 +0000 (22:08 +0000)]
Add assertion to MemoryAccess::addIncoming. NFC.

MemoryAccess::addIncoming exists to remember which values come from that
statement in PHI writes, relevant for subregions that have multiple
exiting edges to an exit block. The exit block can be separated from the
exiting block by regions simplifications. It should not be called for
any read accesses.

llvm-svn: 261789

8 years agoUse inline variable declaration. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:08 +0000 (22:08 +0000)]
Use inline variable declaration. NFC.

llvm-svn: 261788

8 years agoReplace std::auto_ptr with std::unique_ptr. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:05 +0000 (22:08 +0000)]
Replace std::auto_ptr with std::unique_ptr. NFC.

std::auto_ptr has been deprecated in C++11, which some compilers warn
about.

llvm-svn: 261787

8 years agoTidy test case. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:08:02 +0000 (22:08 +0000)]
Tidy test case. NFC.

The test style guide defines that opt should get its input from stdin.
(instead by file argument to avoid that the file name appears in its
output)

CHECK-FORCED is not recognized by FileCheck; remove it.

llvm-svn: 261786

8 years agoProofreading comments in DependenceInfo.h. NFC.
Michael Kruse [Wed, 24 Feb 2016 22:07:57 +0000 (22:07 +0000)]
Proofreading comments in DependenceInfo.h. NFC.

Typos, commas and other minor changes
(e.g. "dependences struct" -> "Dependences struct", because it is the
struct's name)

llvm-svn: 261785

8 years agoRevert "Don't convert a char to a const char *"
David Majnemer [Wed, 24 Feb 2016 22:07:26 +0000 (22:07 +0000)]
Revert "Don't convert a char to a const char *"

This reverts commit r261780.  It turns out the original code was just
fine.  An overload for ltrim which takes char was added but the Doxygen
docs haven't seemed to pick it up.

llvm-svn: 261784

8 years agoMark R_AARCH64_CALL26 as relative.
Rafael Espindola [Wed, 24 Feb 2016 22:07:12 +0000 (22:07 +0000)]
Mark R_AARCH64_CALL26 as relative.

llvm-svn: 261783

8 years agoFix build by using hasFlag instead of hasArg.
Peter Collingbourne [Wed, 24 Feb 2016 22:03:06 +0000 (22:03 +0000)]
Fix build by using hasFlag instead of hasArg.

llvm-svn: 261782

8 years agoPR26237: Fix iterator invalidation bug that occurs if serializing
Richard Smith [Wed, 24 Feb 2016 21:59:10 +0000 (21:59 +0000)]
PR26237: Fix iterator invalidation bug that occurs if serializing
specializations of a template manages to trigger deserialization of more
specializations of the same template.

No test case provided: this is hard to reliably test due to standard library
differences.

Patch by Vassil Vassilev!

llvm-svn: 261781

8 years agoDon't convert a char to a const char *
David Majnemer [Wed, 24 Feb 2016 21:55:58 +0000 (21:55 +0000)]
Don't convert a char to a const char *

This fixes PR26728.

llvm-svn: 261780

8 years ago[CUDA] Mark all CUDA device-side function defs, decls, and calls as convergent.
Justin Lebar [Wed, 24 Feb 2016 21:55:11 +0000 (21:55 +0000)]
[CUDA] Mark all CUDA device-side function defs, decls, and calls as convergent.

Summary:
This is important for e.g. the following case:

  void sync() { __syncthreads(); }
  void foo() {
    do_something();
    sync();
    do_something_else():
  }

Without this change, if the optimizer does not inline sync() (which it
won't because __syncthreads is also marked as noduplicate, for now
anyway), it is free to perform optimizations on sync() that it would not
be able to perform on __syncthreads(), because sync() is not marked as
convergent.

Similarly, we need a notion of convergent calls, since in the case when
we can't statically determine a call's target(s), we need to know
whether it's safe to perform optimizations around the call.

This change is conservative; the optimizer will remove these attrs where
it can, see r260318, r260319.

Reviewers: majnemer

Subscribers: cfe-commits, jhen, echristo, tra

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

llvm-svn: 261779

8 years ago[CUDA] do not allow attribute-based overloading for __global__ functions.
Artem Belevich [Wed, 24 Feb 2016 21:54:45 +0000 (21:54 +0000)]
[CUDA] do not allow attribute-based overloading for __global__ functions.

__global__ functions are present on both host and device side,
so providing __host__ or __device__ overloads is not going to
do anything useful.

llvm-svn: 261778

8 years ago[CUDA] Add conversion operators for threadIdx, blockIdx, gridDim, and blockDim to...
Justin Lebar [Wed, 24 Feb 2016 21:49:33 +0000 (21:49 +0000)]
[CUDA] Add conversion operators for threadIdx, blockIdx, gridDim, and blockDim to uint3 and dim3.

Summary:
This lets you write, e.g.

  uint3 a = threadIdx;
  uint3 b = blockIdx;
  dim3 c = gridDim;
  dim3 d = blockDim;

which is legal in nvcc, but was not legal in clang.

The fact that e.g. the type of threadIdx is not actually uint3 is still
observable, but now you have to try to observe it.

Reviewers: tra

Subscribers: echristo, cfe-commits

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

llvm-svn: 261777

8 years ago[CUDA] Add hack so code which includes "curand.h" doesn't break.
Justin Lebar [Wed, 24 Feb 2016 21:49:31 +0000 (21:49 +0000)]
[CUDA] Add hack so code which includes "curand.h" doesn't break.

Summary:
curand.h includes curand_mtgp32_kernel.h.  In host mode, this header
redefines threadIdx and blockDim, giving them their "proper" types of
uint3 and dim3, respectively.

clang has its own plan for these variables -- their types are magic
builtin classes.  So these redefinitions are incompatible.

As a hack, we force-include the offending CUDA header and use #defines
to get the right types for threadIdx and blockDim.

Reviewers: tra

Subscribers: echristo, cfe-commits

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

llvm-svn: 261776

8 years ago[CUDA] Don't specify exact line numbers in cuda-builtin-vars.cu.
Justin Lebar [Wed, 24 Feb 2016 21:49:30 +0000 (21:49 +0000)]
[CUDA] Don't specify exact line numbers in cuda-builtin-vars.cu.

This makes the test less fragile to changes to cuda_builtin_vars.h.

Test-only change.

llvm-svn: 261775

8 years agoBail on compilation as soon as a job fails.
Justin Lebar [Wed, 24 Feb 2016 21:49:28 +0000 (21:49 +0000)]
Bail on compilation as soon as a job fails.

Summary:
(Re-land of r260448, which was reverted in r260522 due to a test failure
in Driver/output-file-cleanup.c that only showed up in fresh builds.)

Previously we attempted to be smart; if one job failed, we'd run all
jobs that didn't depend on the failing job.

Problem is, this doesn't work well for e.g. CUDA compilation without
-save-temps.  In this case, the device-side and host-side Assemble
actions (which actually are responsible for preprocess, compile,
backend, and assemble, since we're not saving temps) are necessarily
distinct.  So our clever heuristic doesn't help us, and we repeat every
error message once for host and once for each device arch.

The main effect of this change, other than fixing CUDA, is that if you
pass multiple cc files to one instance of clang and you get a compile
error, we'll stop when the first cc1 job fails.

Reviewers: echristo

Subscribers: cfe-commits, jhen, echristo, tra, rafael

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

llvm-svn: 261774

8 years agoMake test/Driver/output-file-cleanup.c hermetic.
Justin Lebar [Wed, 24 Feb 2016 21:49:26 +0000 (21:49 +0000)]
Make test/Driver/output-file-cleanup.c hermetic.

Summary:
It checks that certain files do and exist, so make sure that they don't
exist at the beginning of the test.

This hid a failure in r260448; to see the failure, you had to run the test with
a clean-ish objdir.

Subscribers: cfe-commits

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

llvm-svn: 261773

8 years agoMark R_AARCH64_ADD_ABS_LO12_NC as relative.
Rafael Espindola [Wed, 24 Feb 2016 21:48:06 +0000 (21:48 +0000)]
Mark R_AARCH64_ADD_ABS_LO12_NC as relative.

llvm-svn: 261772

8 years agoSome fixes for case insensitive paths on Windows.
Zachary Turner [Wed, 24 Feb 2016 21:26:47 +0000 (21:26 +0000)]
Some fixes for case insensitive paths on Windows.

Paths on Windows are not case-sensitive.  Because of this, if a file
is called main.cpp, you should be able to set a breakpoint on it
by using the name Main.cpp.  In an ideal world, you could just
tell people to match the case, but in practice this can be a real
problem as it requires you to know whether the person who compiled
the program ran "clang++ main.cpp" or "clang++ Main.cpp", both of
which would work, regardless of what the file was actually called.

This fixes http://llvm.org/pr22667

Patch by Petr Hons

Differential Revision: http://reviews.llvm.org/D17492
Reviewed by: zturner

llvm-svn: 261771

8 years agoFix rejects-valid caused by r261297.
Nico Weber [Wed, 24 Feb 2016 20:58:14 +0000 (20:58 +0000)]
Fix rejects-valid caused by r261297.

r261297 called hasUserProvidedDefaultConstructor() to check if defining a
const object is ok.  This is incorrect for this example:

  struct X { template<typename ...T> X(T...); int n; };
  const X x; // formerly OK, now bogus error

Instead, track if a class has a defaulted default constructor, and disallow
a const object for classes that either have defaulted default constructors or
if they need an implicit constructor.

Bug report and fix approach by Richard Smith, thanks!

llvm-svn: 261770

8 years agoMark R_AARCH64_LDST64_ABS_LO12_NC as relative.
Rafael Espindola [Wed, 24 Feb 2016 20:52:58 +0000 (20:52 +0000)]
Mark R_AARCH64_LDST64_ABS_LO12_NC as relative.

llvm-svn: 261769

8 years agoRemoved unused functions.
Greg Clayton [Wed, 24 Feb 2016 20:47:13 +0000 (20:47 +0000)]
Removed unused functions.

llvm-svn: 261768

8 years agoAdd whole-program vtable optimization feature to Clang.
Peter Collingbourne [Wed, 24 Feb 2016 20:46:36 +0000 (20:46 +0000)]
Add whole-program vtable optimization feature to Clang.

This patch introduces the -fwhole-program-vtables flag, which enables the
whole-program vtable optimization feature (D16795) in Clang.

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

llvm-svn: 261767

8 years agoMark R_AARCH64_LDST32_ABS_LO12_NC as relative.
Rafael Espindola [Wed, 24 Feb 2016 20:18:06 +0000 (20:18 +0000)]
Mark R_AARCH64_LDST32_ABS_LO12_NC as relative.

llvm-svn: 261766

8 years agoR_AARCH64_LDST8_ABS_LO12_NC is effectivelly relative.
Rafael Espindola [Wed, 24 Feb 2016 19:58:50 +0000 (19:58 +0000)]
R_AARCH64_LDST8_ABS_LO12_NC is effectivelly relative.

It only sets the low bits and given the page alignment of PT_LOAD the
dynamic linker can only change the high ones.

llvm-svn: 261765

8 years agoR_AARCH64_ADR_PREL_PG_HI21 is relative.
Rafael Espindola [Wed, 24 Feb 2016 19:36:30 +0000 (19:36 +0000)]
R_AARCH64_ADR_PREL_PG_HI21 is relative.

llvm-svn: 261764

8 years agoMachineInstr: Respect register aliases in clearRegiserKills()
Matthias Braun [Wed, 24 Feb 2016 19:21:48 +0000 (19:21 +0000)]
MachineInstr: Respect register aliases in clearRegiserKills()

This fixes bugs in copy elimination code in llvm. It slightly changes the
semantics of clearRegisterKills(). This is appropriate because:
- Users in lib/CodeGen/MachineCopyPropagation.cpp and
  lib/Target/AArch64RedundantCopyElimination.cpp and
  lib/Target/SystemZ/SystemZElimCompare.cpp are incorrect without it
  (see included testcase).
- All other users in llvm are unaffected (they pass TRI==nullptr)
- (Kill flags are optional anyway so removing too many shouldn't hurt.)

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

llvm-svn: 261763

8 years agoFix typo in test/CodeGen/object-size.c CHECK line.
Bob Wilson [Wed, 24 Feb 2016 18:38:35 +0000 (18:38 +0000)]
Fix typo in test/CodeGen/object-size.c CHECK line.

llvm-svn: 261762

8 years agoELF: Do not instantiate InputSectionBase::Discarded.
Rui Ueyama [Wed, 24 Feb 2016 18:33:35 +0000 (18:33 +0000)]
ELF: Do not instantiate InputSectionBase::Discarded.

"Discarded" section is a marker for discarded sections, and we do not
use the instance except for checking its identity. In that sense, it
is just another type of a "null" pointer for InputSectionBase. So,
it doesn't have to be a real instance of InputSectionBase class.

In this patch, we no longer instantiate Discarded section but instead
use -1 as a pointer value. This eliminates a global variable which
needed initialization at startup.

llvm-svn: 261761

8 years agoMove target independent code out of x86_64 only path.
Rafael Espindola [Wed, 24 Feb 2016 18:24:23 +0000 (18:24 +0000)]
Move target independent code out of x86_64 only path.

The logic for deciding if an undefined symbol should have the value of a
got entry is not target specific.

llvm-svn: 261760

8 years agoAArch64: remove CRC feature from Cyclone.
Tim Northover [Wed, 24 Feb 2016 18:10:17 +0000 (18:10 +0000)]
AArch64: remove CRC feature from Cyclone.

Turns out we don't actually support those instructions.

llvm-svn: 261759

8 years agoAArch64: fix Cyclone CPU features list.
Tim Northover [Wed, 24 Feb 2016 17:57:48 +0000 (17:57 +0000)]
AArch64: fix Cyclone CPU features list.

It turns out we don't have CRC after all. Who knew?

llvm-svn: 261758

8 years ago[ThinLTO] Add missing breaks when parsing summaries (NFC)
Teresa Johnson [Wed, 24 Feb 2016 17:57:28 +0000 (17:57 +0000)]
[ThinLTO] Add missing breaks when parsing summaries (NFC)

This wasn't causing a correctness issue, but was causing extra duplicate
entries to be added to the SummaryMap.

llvm-svn: 261757

8 years agoObjective-C: Add a size field to non-fragile category metadata.
Manman Ren [Wed, 24 Feb 2016 17:49:50 +0000 (17:49 +0000)]
Objective-C: Add a size field to non-fragile category metadata.

This is mainly for extensibility. Note that fragile category metadata,
metadata for classes and protocols all have a size field.

Initial patch was provided by Greg Parker.

rdar://problem/24804226

llvm-svn: 261756

8 years ago[CLANG] [AVX512] [BUILTIN] Adding PSHUF{L|H}W{128|256|512} builtin to clang .
Michael Zuckerman [Wed, 24 Feb 2016 17:39:35 +0000 (17:39 +0000)]
[CLANG] [AVX512] [BUILTIN] Adding PSHUF{L|H}W{128|256|512} builtin to clang .

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

llvm-svn: 261755

8 years ago[SimplifyCFG] Use a more elegant solution than r261731
David Majnemer [Wed, 24 Feb 2016 17:30:48 +0000 (17:30 +0000)]
[SimplifyCFG] Use a more elegant solution than r261731

The cleanupret instruction has an invariant that it's 'from' operand be
a cleanuppad.  This invariant was violated when we removed a dead block
which removed a cleanuppad leaving behind a cleanupret with an undef
'from' operand.

This was solved in r261731 by staving off the removal of the dead block
to a later pass.

However, it occured to me that we do not need to do this.
Instead, we can simply avoid processing the cleanupret if it has an
undef 'from' operand because we know that it will be removed soon.

llvm-svn: 261754

8 years ago[X86][SSSE3] Added target shuffle combine tests for SSE3/SSSE3 specific shuffles.
Simon Pilgrim [Wed, 24 Feb 2016 17:08:59 +0000 (17:08 +0000)]
[X86][SSSE3] Added target shuffle combine tests for SSE3/SSSE3 specific shuffles.

Allows us to test SSSE3 PSHUFB intrinsic.

llvm-svn: 261753

8 years agoremove fixme comment that was fixed with r261750
Sanjay Patel [Wed, 24 Feb 2016 17:08:29 +0000 (17:08 +0000)]
remove fixme comment that was fixed with r261750

llvm-svn: 261752

8 years ago[WinEH] Make sure terminate handlers have funclet operands
David Majnemer [Wed, 24 Feb 2016 17:02:45 +0000 (17:02 +0000)]
[WinEH] Make sure terminate handlers have funclet operands

Calls to the terminate handler must be annotated within the exception
region they are within.

llvm-svn: 261751

8 years ago[InstCombine] enable optimization of casted vector xor instructions
Sanjay Patel [Wed, 24 Feb 2016 17:00:34 +0000 (17:00 +0000)]
[InstCombine] enable optimization of casted vector xor instructions

This is part of the payoff for the refactoring in:
http://reviews.llvm.org/rL261649
http://reviews.llvm.org/rL261707

In addition to removing a pile of duplicated code, the xor case was
missing the optimization for vector types because it checked
"SrcTy->isIntegerTy()" rather than "SrcTy->isIntOrIntVectorTy()"
like 'and' and 'or' were already doing.

This solves part of:
https://llvm.org/bugs/show_bug.cgi?id=26702

llvm-svn: 261750

8 years agoCreate implicit plt entries for R_X86_64_32S.
Rafael Espindola [Wed, 24 Feb 2016 16:37:47 +0000 (16:37 +0000)]
Create implicit plt entries for R_X86_64_32S.

llvm-svn: 261749

8 years agoadd test to show missing bitcasted vector xor fold
Sanjay Patel [Wed, 24 Feb 2016 16:34:29 +0000 (16:34 +0000)]
add test to show missing bitcasted vector xor fold

llvm-svn: 261748

8 years agoMark R_AARCH64_PREL32 as relative.
Rafael Espindola [Wed, 24 Feb 2016 16:15:13 +0000 (16:15 +0000)]
Mark R_AARCH64_PREL32 as relative.

llvm-svn: 261747

8 years ago`MSP430InstrInfo::loadRegFromStackSlot` forgets to set register def.
Anton Korobeynikov [Wed, 24 Feb 2016 15:15:02 +0000 (15:15 +0000)]
`MSP430InstrInfo::loadRegFromStackSlot` forgets to set register def.

Summary:
For instance, compiling the below results in a panic:

```
llc: ../lib/CodeGen/InlineSpiller.cpp:1140: bool (anonymous namespace)::InlineSpiller::foldMemoryOperand(ArrayRef<std::pair<MachineInstr *, unsigned int> >, llvm::MachineInstr *): Assertion `MO->isDead() && "Cannot fold physreg def"' failed.
#0 0x00007f50fbcf353e llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/h/3rd/llvm/build/../lib/Support/Unix/Signals.inc:321:15
#1 0x00007f50fbcf3929 PrintStackTraceSignalHandler(void*) /home/h/3rd/llvm/build/../lib/Support/Unix/Signals.inc:380:1
#2 0x00007f50fbcf22a3 llvm::sys::RunSignalHandlers() /home/h/3rd/llvm/build/../lib/Support/Signals.cpp:45:5
#3 0x00007f50fbcf3bb4 SignalHandler(int) /home/h/3rd/llvm/build/../lib/Support/Unix/Signals.inc:210:1
#4 0x00007f50fa87a180 (/lib/x86_64-linux-gnu/libc.so.6+0x35180)
#5 0x00007f50fa87a107 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35107)
#6 0x00007f50fa87b4e8 abort (/lib/x86_64-linux-gnu/libc.so.6+0x364e8)
#7 0x00007f50fa873226 (/lib/x86_64-linux-gnu/libc.so.6+0x2e226)
#8 0x00007f50fa8732d2 (/lib/x86_64-linux-gnu/libc.so.6+0x2e2d2)
#9 0x00007f50fddd9287 (anonymous namespace)::InlineSpiller::foldMemoryOperand(llvm::ArrayRef<std::pair<llvm::MachineInstr*, unsigned int> >, llvm::MachineInstr*) /home/h/3rd/llvm/build/../lib/CodeGen/InlineSpiller.cpp:1141:21
#10 0x00007f50fddd9ee9 (anonymous namespace)::InlineSpiller::spillAroundUses(unsigned int) /home/h/3rd/llvm/build/../lib/CodeGen/InlineSpiller.cpp:1286:9
#11 0x00007f50fddd388b (anonymous namespace)::InlineSpiller::spillAll() /home/h/3rd/llvm/build/../lib/CodeGen/InlineSpiller.cpp:1338:21
#12 0x00007f50fddd221d (anonymous namespace)::InlineSpiller::spill(llvm::LiveRangeEdit&) /home/h/3rd/llvm/build/../lib/CodeGen/InlineSpiller.cpp:1391:3
#13 0x00007f50fdfd921b (anonymous namespace)::RAGreedy::selectOrSplitImpl(llvm::LiveInterval&, llvm::SmallVectorImpl<unsigned int>&, llvm::SmallSet<unsigned int, 16u, std::less<unsigned int> >&, unsigned int) /home/h/3rd/llvm/build/../lib/CodeGen/RegAllocGreedy.cpp:2555:5
#14 0x00007f50fdfd647b (anonymous namespace)::RAGreedy::selectOrSplit(llvm::LiveInterval&, llvm::SmallVectorImpl<unsigned int>&) /home/h/3rd/llvm/build/../lib/CodeGen/RegAllocGreedy.cpp:2221:12
#15 0x00007f50fdfc89f9 llvm::RegAllocBase::allocatePhysRegs() /home/h/3rd/llvm/build/../lib/CodeGen/RegAllocBase.cpp:110:14
#16 0x00007f50fdfd6337 (anonymous namespace)::RAGreedy::runOnMachineFunction(llvm::MachineFunction&) /home/h/3rd/llvm/build/../lib/CodeGen/RegAllocGreedy.cpp:2611:3
#17 0x00007f50fded33ee llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/h/3rd/llvm/build/../lib/CodeGen/MachineFunctionPass.cpp:43:3
#18 0x00007f50fd6cdc6f llvm::FPPassManager::runOnFunction(llvm::Function&) /home/h/3rd/llvm/build/../lib/IR/LegacyPassManager.cpp:1550:23
#19 0x00007f50fd6cdf85 llvm::FPPassManager::runOnModule(llvm::Module&) /home/h/3rd/llvm/build/../lib/IR/LegacyPassManager.cpp:1571:16
#20 0x00007f50fd6ce71a (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/h/3rd/llvm/build/../lib/IR/LegacyPassManager.cpp:1627:23
#21 0x00007f50fd6ce246 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/h/3rd/llvm/build/../lib/IR/LegacyPassManager.cpp:1730:16
#22 0x00007f50fd6cec31 llvm::legacy::PassManager::run(llvm::Module&) /home/h/3rd/llvm/build/../lib/IR/LegacyPassManager.cpp:1761:3
#23 0x0000000000415bdc compileModule(char**, llvm::LLVMContext&) /home/h/3rd/llvm/build/../tools/llc/llc.cpp:405:5
#24 0x0000000000414571 main /home/h/3rd/llvm/build/../tools/llc/llc.cpp:211:13
#25 0x00007f50fa866b45 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b45)
#26 0x0000000000414296 _start (/home/h/3rd/llvm/build/bin/llc+0x414296)
Stack dump:
0. Program arguments: ./bin/llc -mtriple msp430 loadstore.ll
1. Running pass 'Function Pass Manager' on module 'loadstore.ll'.
2. Running pass 'Greedy Register Allocator' on function '@inc'
```

Original IR:

```llvm
%struct.VeryLarge = type { i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

; Function Attrs: norecurse nounwind
define void @inc(%struct.VeryLarge* noalias nocapture sret %agg.result, %struct.VeryLarge* byval align 1 %s) #0 {
entry:
  %p0 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 0
  %0 = load i8, i8* %p0, align 1, !tbaa !1
  %p1 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 1
  %1 = load i32, i32* %p1, align 1, !tbaa !6
  %p2 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 2
  %2 = load i32, i32* %p2, align 1, !tbaa !7
  %p3 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 3
  %3 = load i32, i32* %p3, align 1, !tbaa !8
  %p4 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 4
  %4 = load i32, i32* %p4, align 1, !tbaa !9
  %p5 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 5
  %5 = load i32, i32* %p5, align 1, !tbaa !10
  %p6 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 6
  %6 = load i32, i32* %p6, align 1, !tbaa !11
  %p7 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 7
  %7 = load i32, i32* %p7, align 1, !tbaa !12
  %p8 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 8
  %8 = load i32, i32* %p8, align 1, !tbaa !13
  %p9 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 9
  %9 = load i32, i32* %p9, align 1, !tbaa !14
  %p10 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 10
  %10 = load i32, i32* %p10, align 1, !tbaa !15
  %p11 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 11
  %11 = load i32, i32* %p11, align 1, !tbaa !16
  %p12 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 12
  %12 = load i32, i32* %p12, align 1, !tbaa !17
  %p13 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 13
  %13 = load i32, i32* %p13, align 1, !tbaa !18
  %p14 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 14
  %14 = load i32, i32* %p14, align 1, !tbaa !19
  %p15 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 15
  %15 = load i32, i32* %p15, align 1, !tbaa !20
  %p16 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 16
  %16 = load i32, i32* %p16, align 1, !tbaa !21
  %p17 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 17
  %17 = load i32, i32* %p17, align 1, !tbaa !22
  %p18 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 18
  %18 = load i32, i32* %p18, align 1, !tbaa !23
  %p19 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 19
  %19 = load i32, i32* %p19, align 1, !tbaa !24
  %p20 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 20
  %20 = load i32, i32* %p20, align 1, !tbaa !25
  %p21 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 21
  %21 = load i32, i32* %p21, align 1, !tbaa !26
  %p22 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 22
  %22 = load i32, i32* %p22, align 1, !tbaa !27
  %p23 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 23
  %23 = load i32, i32* %p23, align 1, !tbaa !28
  %p24 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 24
  %24 = load i32, i32* %p24, align 1, !tbaa !29
  %p25 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 25
  %25 = load i32, i32* %p25, align 1, !tbaa !30
  %p26 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 26
  %26 = load i32, i32* %p26, align 1, !tbaa !31
  %p27 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 27
  %27 = load i32, i32* %p27, align 1, !tbaa !32
  %p28 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 28
  %28 = load i32, i32* %p28, align 1, !tbaa !33
  %p29 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 29
  %29 = load i32, i32* %p29, align 1, !tbaa !34
  %p30 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 30
  %30 = load i32, i32* %p30, align 1, !tbaa !35
  %p31 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 31
  %31 = load i32, i32* %p31, align 1, !tbaa !36
  %p32 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %s, i32 0, i32 32
  %32 = load i32, i32* %p32, align 1, !tbaa !37
  %add = add i8 %0, 1
  store i8 %add, i8* %p0, align 1, !tbaa !1
  %add2 = add i32 %1, 2
  store i32 %add2, i32* %p1, align 1, !tbaa !6
  %add3 = add i32 %2, 3
  store i32 %add3, i32* %p2, align 1, !tbaa !7
  %add4 = add i32 %3, 4
  store i32 %add4, i32* %p3, align 1, !tbaa !8
  %add5 = add i32 %4, 5
  store i32 %add5, i32* %p4, align 1, !tbaa !9
  %add6 = add i32 %5, 6
  store i32 %add6, i32* %p5, align 1, !tbaa !10
  %add7 = add i32 %6, 7
  store i32 %add7, i32* %p6, align 1, !tbaa !11
  %add8 = add i32 %7, 8
  store i32 %add8, i32* %p7, align 1, !tbaa !12
  %add9 = add i32 %8, 9
  store i32 %add9, i32* %p8, align 1, !tbaa !13
  %add10 = add i32 %9, 10
  store i32 %add10, i32* %p9, align 1, !tbaa !14
  %add11 = add i32 %10, 11
  store i32 %add11, i32* %p10, align 1, !tbaa !15
  %add12 = add i32 %11, 12
  store i32 %add12, i32* %p11, align 1, !tbaa !16
  %add13 = add i32 %12, 13
  store i32 %add13, i32* %p12, align 1, !tbaa !17
  %add14 = add i32 %13, 14
  store i32 %add14, i32* %p13, align 1, !tbaa !18
  %add15 = add i32 %14, 15
  store i32 %add15, i32* %p14, align 1, !tbaa !19
  %add16 = add i32 %15, 16
  store i32 %add16, i32* %p15, align 1, !tbaa !20
  %add17 = add i32 %16, 17
  store i32 %add17, i32* %p16, align 1, !tbaa !21
  %add18 = add i32 %17, 18
  store i32 %add18, i32* %p17, align 1, !tbaa !22
  %add19 = add i32 %18, 19
  store i32 %add19, i32* %p18, align 1, !tbaa !23
  %add20 = add i32 %19, 20
  store i32 %add20, i32* %p19, align 1, !tbaa !24
  %add21 = add i32 %20, 21
  store i32 %add21, i32* %p20, align 1, !tbaa !25
  %add22 = add i32 %21, 22
  store i32 %add22, i32* %p21, align 1, !tbaa !26
  %add23 = add i32 %22, 23
  store i32 %add23, i32* %p22, align 1, !tbaa !27
  %add24 = add i32 %23, 24
  store i32 %add24, i32* %p23, align 1, !tbaa !28
  %add25 = add i32 %24, 25
  store i32 %add25, i32* %p24, align 1, !tbaa !29
  %add26 = add i32 %25, 26
  store i32 %add26, i32* %p25, align 1, !tbaa !30
  %add27 = add i32 %26, 27
  store i32 %add27, i32* %p26, align 1, !tbaa !31
  %add28 = add i32 %27, 28
  store i32 %add28, i32* %p27, align 1, !tbaa !32
  %add29 = add i32 %28, 29
  store i32 %add29, i32* %p28, align 1, !tbaa !33
  %add30 = add i32 %29, 30
  store i32 %add30, i32* %p29, align 1, !tbaa !34
  %add31 = add i32 %30, 31
  store i32 %add31, i32* %p30, align 1, !tbaa !35
  %add32 = add i32 %31, 32
  store i32 %add32, i32* %p31, align 1, !tbaa !36
  %add33 = add i32 %32, 33
  store i32 %add33, i32* %p32, align 1, !tbaa !37
  %33 = getelementptr inbounds %struct.VeryLarge, %struct.VeryLarge* %agg.result, i32 0, i32 0
  call void @llvm.memcpy.p0i8.p0i8.i32(i8* %33, i8* %p0, i32 129, i32 1, i1 false), !tbaa.struct !38
  ret void
}

; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i32, i1) #1

attributes #0 = { norecurse nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { argmemonly nounwind }

!llvm.ident = !{!0}

!0 = !{!"clang version 3.8.0 (git://github.com/llvm-mirror/clang 40ef2b7531472c41212c4719a9294aeb7bddebbc) (git://github.com/llvm-mirror/llvm c601eaf55606dfb9ad372b514b77aa00d1409be1)"}
!1 = !{!2, !3, i64 0}
!2 = !{!"", !3, i64 0, !5, i64 1, !5, i64 5, !5, i64 9, !5, i64 13, !5, i64 17, !5, i64 21, !5, i64 25, !5, i64 29, !5, i64 33, !5, i64 37, !5, i64 41, !5, i64 45, !5, i64 49, !5, i64 53, !5, i64 57, !5, i64 61, !5, i64 65, !5, i64 69, !5, i64 73, !5, i64 77, !5, i64 81, !5, i64 85, !5, i64 89, !5, i64 93, !5, i64 97, !5, i64 101, !5, i64 105, !5, i64 109, !5, i64 113, !5, i64 117, !5, i64 121, !5, i64 125}
!3 = !{!"omnipotent char", !4, i64 0}
!4 = !{!"Simple C/C++ TBAA"}
!5 = !{!"int", !3, i64 0}
!6 = !{!2, !5, i64 1}
!7 = !{!2, !5, i64 5}
!8 = !{!2, !5, i64 9}
!9 = !{!2, !5, i64 13}
!10 = !{!2, !5, i64 17}
!11 = !{!2, !5, i64 21}
!12 = !{!2, !5, i64 25}
!13 = !{!2, !5, i64 29}
!14 = !{!2, !5, i64 33}
!15 = !{!2, !5, i64 37}
!16 = !{!2, !5, i64 41}
!17 = !{!2, !5, i64 45}
!18 = !{!2, !5, i64 49}
!19 = !{!2, !5, i64 53}
!20 = !{!2, !5, i64 57}
!21 = !{!2, !5, i64 61}
!22 = !{!2, !5, i64 65}
!23 = !{!2, !5, i64 69}
!24 = !{!2, !5, i64 73}
!25 = !{!2, !5, i64 77}
!26 = !{!2, !5, i64 81}
!27 = !{!2, !5, i64 85}
!28 = !{!2, !5, i64 89}
!29 = !{!2, !5, i64 93}
!30 = !{!2, !5, i64 97}
!31 = !{!2, !5, i64 101}
!32 = !{!2, !5, i64 105}
!33 = !{!2, !5, i64 109}
!34 = !{!2, !5, i64 113}
!35 = !{!2, !5, i64 117}
!36 = !{!2, !5, i64 121}
!37 = !{!2, !5, i64 125}
!38 = !{i64 0, i64 1, !39, i64 1, i64 4, !40, i64 5, i64 4, !40, i64 9, i64 4, !40, i64 13, i64 4, !40, i64 17, i64 4, !40, i64 21, i64 4, !40, i64 25, i64 4, !40, i64 29, i64 4, !40, i64 33, i64 4, !40, i64 37, i64 4, !40, i64 41, i64 4, !40, i64 45, i64 4, !40, i64 49, i64 4, !40, i64 53, i64 4, !40, i64 57, i64 4, !40, i64 61, i64 4, !40, i64 65, i64 4, !40, i64 69, i64 4, !40, i64 73, i64 4, !40, i64 77, i64 4, !40, i64 81, i64 4, !40, i64 85, i64 4, !40, i64 89, i64 4, !40, i64 93, i64 4, !40, i64 97, i64 4, !40, i64 101, i64 4, !40, i64 105, i64 4, !40, i64 109, i64 4, !40, i64 113, i64 4, !40, i64 117, i64 4, !40, i64 121, i64 4, !40, i64 125, i64 4, !40}
!39 = !{!3, !3, i64 0}
!40 = !{!5, !5, i64 0}
```

Reviewers: asl

Subscribers: qcolombet

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

llvm-svn: 261746

8 years ago[X86][SSE41] Combine vector blends with zero
Simon Pilgrim [Wed, 24 Feb 2016 15:14:21 +0000 (15:14 +0000)]
[X86][SSE41] Combine vector blends with zero

Part 2 of 2
This patch add support for combining target shuffles into blends-with-zero.

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

llvm-svn: 261745

8 years ago[docs] Change non-c++ code blocks to 'text' format to fix a sphinx warning.
Alexander Kornienko [Wed, 24 Feb 2016 15:07:48 +0000 (15:07 +0000)]
[docs] Change non-c++ code blocks to 'text' format to fix a sphinx warning.

llvm-svn: 261744

8 years ago[X86][SSE41] Combine insertion of zero scalars into vector blends with zero
Simon Pilgrim [Wed, 24 Feb 2016 14:53:27 +0000 (14:53 +0000)]
[X86][SSE41] Combine insertion of zero scalars into vector blends with zero

Part 1 of 2
This patch attempts to replace the insertion of zero scalars with a vector blend with zero, avoiding the use of the integer insertion instructions (which are particularly slow on many targets).
(Part 2 will add support for combining multiple blends-with-zero).

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

llvm-svn: 261743

8 years ago[AMDGPU] Assembler: Simplify handling of optional operands
Nikolay Haustov [Wed, 24 Feb 2016 14:22:47 +0000 (14:22 +0000)]
[AMDGPU] Assembler: Simplify handling of optional operands

Prepare to support DPP encodings.

For DPP encodings, we want row_mask/bank_mask/bound_ctrl to be optional operands. However this means that when parsing instruction which has no mnemonic prefix, we cannot add both default values for VOP3 and for DPP optional operands to OperandVector - neither instructions would match. So add default values for optional operands to MCInst during conversion instead.

Mark more operands as IsOptional = 1 in .td files.
Do not add default values for optional operands to OperandVector in AMDGPUAsmParser.
Add default values for optional operands during conversion using new helper addOptionalImmOperand.
Change to cvtVOP3_2_mod to check instruction flag instead of presence of modifiers. In the future, cvtVOP3* functions can be combined into one.
Separate cvtFlat and cvtFlatAtomic.
Fix CNDMASK_B32 definition to have no modifiers.

Review: http://reviews.llvm.org/D17445

Reviewers: tstellarAMD
llvm-svn: 261742

8 years ago[Renderscript] Change expression strings to use portable format specifiers.
Aidan Dodds [Wed, 24 Feb 2016 14:17:33 +0000 (14:17 +0000)]
[Renderscript] Change expression strings to use portable format specifiers.

Mips64 tests were failing on windows because the sscanf implementation differs between clang/gcc/msvc such that on windows %lx specifies a 32bits parameter and %llx is for 64bits. For us this meant that 64bit pointers were being truncated to 32bits on their way into a JIT'd expression.

llvm-svn: 261741

8 years ago[MSAN] Fix memcmp_test on MIPS
Sagar Thakur [Wed, 24 Feb 2016 13:48:14 +0000 (13:48 +0000)]
[MSAN] Fix memcmp_test on MIPS

Summary: As per the test the 4th element of both arrays are not initialized and hence will contain garbage values. Memcmp returns the difference between the garbage values of the 4th element which will be different on every run of the test. And since the return value of memcmp is returned from main, we are getting random exit code every time.

Reviewers: kcc, eugenis
Subscribers: mohit.bhakkad, jaydeep, llvm-commits
Differential: http://reviews.llvm.org/D17534
llvm-svn: 261739

8 years ago[clang-tidy] introduce modernize-deprecated-headers check
Alexander Kornienko [Wed, 24 Feb 2016 13:36:34 +0000 (13:36 +0000)]
[clang-tidy] introduce modernize-deprecated-headers check

Summary:
This patch introduces the modernize-deprecated-headers check, which is supposed to replace deprecated C library headers with the C++ STL-ones.

For information see documentation; for exmaples see the test cases.

Reviewers: Eugene.Zelenko, LegalizeAdulthood, alexfh

Subscribers: cfe-commits

Patch by Kirill Bobyrev!

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

llvm-svn: 261738

8 years ago[clang-tidy] Added a check for forward declaration in the potentially wrong namespace
Alexander Kornienko [Wed, 24 Feb 2016 13:35:32 +0000 (13:35 +0000)]
[clang-tidy] Added a check for forward declaration in the potentially wrong namespace

Adds a new check "misc-forward-declaration-namespace".
In check, A forward declaration is considerred in a potentially wrong namespace
if there is any definition/declaration with the same name exists in a different
namespace.

Reviewers: akuegel, hokein, alexfh

Patch by Eric Liu!

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

llvm-svn: 261737

8 years agoNFC. Move isDereferenceable to Loads.h/cpp
Artur Pilipenko [Wed, 24 Feb 2016 12:49:04 +0000 (12:49 +0000)]
NFC. Move isDereferenceable to Loads.h/cpp

This is a part of the refactoring to unify isSafeToLoadUnconditionally and isDereferenceablePointer functions. In subsequent change I'm going to eliminate isDerferenceableAndAlignedPointer from Loads API, leaving isSafeToLoadSpecualtively the only function to check is load instruction can be speculated.

Reviewed By: hfinkel

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

llvm-svn: 261736

8 years agoNFC. Move getAlignment helper function from ValueTracking to Value class.
Artur Pilipenko [Wed, 24 Feb 2016 12:25:10 +0000 (12:25 +0000)]
NFC. Move getAlignment helper function from ValueTracking to Value class.

Reviewed By: reames, hfinkel

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

llvm-svn: 261735

8 years agoFix test for homogeneity in case of aggregate consisting of containerized vector...
Omair Javaid [Wed, 24 Feb 2016 12:17:43 +0000 (12:17 +0000)]
Fix test for homogeneity in case of aggregate consisting of containerized vector types

Details can be found here:

Differential revision: http://reviews.llvm.org/D17501

llvm-svn: 261734

8 years ago[X86][SSE] Fixed vector rotation test name typo
Simon Pilgrim [Wed, 24 Feb 2016 11:39:13 +0000 (11:39 +0000)]
[X86][SSE] Fixed vector rotation test name typo

Rotation of 16i6 vector not 8i16 vector - copy+paste is not your friend

llvm-svn: 261733

8 years ago[AMDGPU] fix amd_kernel_code_t bit field position as per spec (added missing reserved...
Nikolay Haustov [Wed, 24 Feb 2016 10:54:25 +0000 (10:54 +0000)]
[AMDGPU] fix amd_kernel_code_t bit field position as per spec (added missing reserved fields)

lit tests passed before and after because it doesn't test the binary representation of amd_kernel_code_t.

Patch by: Valery Pykhtin (Valery.Pykhtin@amd.com)

Reviewers: arsenm
llvm-svn: 261732

8 years ago[SimplifyCFG] Do not blindly remove unreachable blocks
David Majnemer [Wed, 24 Feb 2016 10:02:16 +0000 (10:02 +0000)]
[SimplifyCFG] Do not blindly remove unreachable blocks

DeleteDeadBlock was called indiscriminately, leading to cleanuprets with
undef cleanuppad references.

Instead, try to drain the BB of most of it's instructions if it is
unreachable.  We can then remove the BB if it solely consists of a
terminator (and maybe some phis).

llvm-svn: 261731

8 years ago[CodeView] Describe variables live in x87 registers
David Majnemer [Wed, 24 Feb 2016 10:01:24 +0000 (10:01 +0000)]
[CodeView] Describe variables live in x87 registers

We didn't have a mapping from LLVM's x87 floating point registers to
CodeView's encoding.

llvm-svn: 261730

8 years ago[ELF] - replaced std::function with raw pointers in LinkerScript.cpp
George Rimar [Wed, 24 Feb 2016 09:21:47 +0000 (09:21 +0000)]
[ELF] - replaced std::function with raw pointers in LinkerScript.cpp

Change as was proposed by David Blaikie.

Differential revision: http://reviews.llvm.org/D17499

llvm-svn: 261729

8 years agotsan: disable ignore_lib4.cc test on powerpc64 and aarch64
Dmitry Vyukov [Wed, 24 Feb 2016 09:14:46 +0000 (09:14 +0000)]
tsan: disable ignore_lib4.cc test on powerpc64 and aarch64

Fails on bots:
http://lab.llvm.org:8011/builders/clang-ppc64be-linux/builds/1555/steps/ninja%20check%201/logs/FAIL%3A%20ThreadSanitizer-powerpc64%3A%3A%20ignore_lib4.cc
http://lab.llvm.org:8011/builders/sanitizer-ppc64be-linux/builds/725/steps/ninja%20check-tsan/logs/stdio
http://lab.llvm.org:8011/builders/clang-cmake-aarch64-full/builds/1468/steps/ninja%20check%202/logs/FAIL%3A%20ThreadSanitizer-aarch64%3A%3A%20ignore_lib4.cc
http://lab.llvm.org:8011/builders/clang-native-aarch64-full/builds/2787/steps/ninja%20check%202/logs/FAIL%3A%20ThreadSanitizer-aarch64%3A%3A%20ignore_lib4.cc

llvm-svn: 261728

8 years ago[X86][SSE] Don't get target shuffle operands prematurely.
Simon Pilgrim [Wed, 24 Feb 2016 09:07:47 +0000 (09:07 +0000)]
[X86][SSE] Don't get target shuffle operands prematurely.

PerformShuffleCombine should be usable by unary and binary target shuffles, but was attempting to get the first two operands whatever the instruction type. Since these are only used for VECTOR_SHUFFLE instructions for one particular combine I've moved them inside the relevant if statement.

llvm-svn: 261727

8 years ago[ELF] - Teach input section wildcard patterns to recognize '?' meta character.
George Rimar [Wed, 24 Feb 2016 08:49:50 +0000 (08:49 +0000)]
[ELF] - Teach input section wildcard patterns to recognize '?' meta character.

`?' - matches any single character
https://sourceware.org/binutils/docs/ld/Input-Section-Wildcards.html

This is used in linker scripts.

Differential revision: http://reviews.llvm.org/D17290

llvm-svn: 261726

8 years ago[LLVM][AVX512][PSHUFHW ][PSHUFLW ] Change imm8 to int
Michael Zuckerman [Wed, 24 Feb 2016 08:39:05 +0000 (08:39 +0000)]
[LLVM][AVX512][PSHUFHW ][PSHUFLW ] Change imm8 to int

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

llvm-svn: 261725

8 years agoAVX512: Add vpmovzxbw/d/q ,vpmovzxw/d/q ,vpmovzxbdq lowering patterns that support...
Igor Breger [Wed, 24 Feb 2016 08:15:20 +0000 (08:15 +0000)]
AVX512: Add vpmovzxbw/d/q ,vpmovzxw/d/q ,vpmovzxbdq lowering patterns that support 256bit inputs like AVX patterns ( that are disable in case HasVLX , see SS41I_pmovx_avx2_patterns).

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

llvm-svn: 261724

8 years ago[MSan] fix process_vm_readv test: Exit silently if syscall is not implemeted
Mohit K. Bhakkad [Wed, 24 Feb 2016 08:14:41 +0000 (08:14 +0000)]
[MSan] fix process_vm_readv test: Exit silently if syscall is not implemeted

Reviewers: eugenis

Subscribers: jaydeep, sagar, llvm-commits

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

llvm-svn: 261723

8 years agoX86: Wrap a helper for an assert in #ifndef NDEBUG
Justin Bogner [Wed, 24 Feb 2016 07:58:02 +0000 (07:58 +0000)]
X86: Wrap a helper for an assert in #ifndef NDEBUG

This function is used in exactly one place, and only in asserts
builds. Move it a few lines up before the use and only define it when
asserts are enabled. Fixes the release build under -Werror.

Also remove the forward declaration and commentary that was basically
identical to the code itself.

llvm-svn: 261722

8 years ago[MSan] Mark dlerror.cc expected failure for MIPS
Mohit K. Bhakkad [Wed, 24 Feb 2016 07:08:33 +0000 (07:08 +0000)]
[MSan] Mark dlerror.cc expected failure for MIPS

Reviewers: samsonov

Subscribers: jaydeep, sagar, llvm-commits, aemerson

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

llvm-svn: 261721

8 years agoAMDGPU: Check cheaper condition before SignBitIsZero
Matt Arsenault [Wed, 24 Feb 2016 04:55:29 +0000 (04:55 +0000)]
AMDGPU: Check cheaper condition before SignBitIsZero

Don't do an expensive computeKnownBits call when we
can do the cheap check for legal offsets first.

llvm-svn: 261720

8 years ago[OpenCL] Add Sema checks for OpenCL 2.0 block
Xiuli Pan [Wed, 24 Feb 2016 04:29:36 +0000 (04:29 +0000)]
[OpenCL] Add Sema checks for OpenCL 2.0 block

Summary:
Add Sema checks for opencl 2.0 new features: Block.
This patch is partitioned from http://reviews.llvm.org/D16047

Reviewers: Anastasia

Subscribers: pekka.jaaskelainen, cfe-commits

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

llvm-svn: 261719

8 years agoFix TestCStrings for Linux with i386 inferiors.
Chaoren Lin [Wed, 24 Feb 2016 03:15:21 +0000 (03:15 +0000)]
Fix TestCStrings for Linux with i386 inferiors.

Summary: Temporarily revert part of r261704.

Reviewers: spyffe

Subscribers: lldb-commits

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

llvm-svn: 261718

8 years agoDefault vaarg lowering should support indirect struct types.
James Y Knight [Wed, 24 Feb 2016 02:59:33 +0000 (02:59 +0000)]
Default vaarg lowering should support indirect struct types.

Fixes PR11517 for SPARC.

On most targets, clang lowers va_arg itself, eschewing the use of the
llvm vaarg instruction. This is necessary (at least for now) as the type
argument to the vaarg instruction cannot represent all the ABI
information that is needed to support complex calling conventions.

However, on targets with a simpler varrags ABIs, the LLVM instruction
can work just fine, and clang can simply lower to it. Unfortunately,
even on such targets, vaarg with a struct argument would fail, because
the default lowering to vaarg was naive: it didn't take into account the
ABI attribute computed by classifyArgumentType. In particular, for the
DefaultABIInfo, structs are supposed to be passed indirectly and so
llvm's vaarg instruction should be emitted with a pointer argument.

Now, vaarg instruction emission is able to use computed ABIArgInfo for
the provided argument type, which allows the default ABI support to work
for structs too.

I haven't touched the EmitVAArg implementation for PPC32_SVR4 or XCore,
although I believe both are now redundant, and could be switched over to
use the default implementation as well.

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

llvm-svn: 261717

8 years agoFix Clang-tidy modernize-use-nullptr and modernize-use-default warnings in some files...
Eugene Zelenko [Wed, 24 Feb 2016 02:05:55 +0000 (02:05 +0000)]
Fix Clang-tidy modernize-use-nullptr and modernize-use-default warnings in some files in source/Commands; other minor fixes.

llvm-svn: 261716

8 years ago[tests] Portability fixup for r261713.
Alexey Samsonov [Wed, 24 Feb 2016 01:28:51 +0000 (01:28 +0000)]
[tests] Portability fixup for r261713.

llvm-svn: 261715

8 years agomath: Fix ilogb(double) return type
Aaron Watry [Wed, 24 Feb 2016 00:52:15 +0000 (00:52 +0000)]
math: Fix ilogb(double) return type

Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
llvm-svn: 261714

8 years ago[tests] Resolve old TODOs in ASan unit tests.
Alexey Samsonov [Wed, 24 Feb 2016 00:41:29 +0000 (00:41 +0000)]
[tests] Resolve old TODOs in ASan unit tests.

llvm-svn: 261713

8 years agoELF: Remove InputSectionBase::getAlign and instead add Align member.
Rui Ueyama [Wed, 24 Feb 2016 00:38:18 +0000 (00:38 +0000)]
ELF: Remove InputSectionBase::getAlign and instead add Align member.

This is a preparation for ICF. If we merge two sections, we want to
align the merged section at the largest alignment requirement.
That means we want to update the alignment value, which was
impossible before this patch because Header is a const value.

llvm-svn: 261712

8 years agoELF: Remove InputSectionBase::isLive and use Live member instead. NFC.
Rui Ueyama [Wed, 24 Feb 2016 00:23:15 +0000 (00:23 +0000)]
ELF: Remove InputSectionBase::isLive and use Live member instead. NFC.

This is also a preparation for ICF.

llvm-svn: 261711

8 years agoELF: Make some functions constant. NFC.
Rui Ueyama [Wed, 24 Feb 2016 00:23:13 +0000 (00:23 +0000)]
ELF: Make some functions constant. NFC.

This is a preparation for ICF.

llvm-svn: 261710

8 years agoCOFF: Temporarily remove flaky a test.
Rui Ueyama [Wed, 24 Feb 2016 00:23:11 +0000 (00:23 +0000)]
COFF: Temporarily remove flaky a test.

This test is flaky for more than half a year or so on buildbots
and has been causing confusion. Remove it while I'm investing the
cause.

llvm-svn: 261709

8 years ago[tests] Don't compile CFI C tests in C++ mode.
Alexey Samsonov [Wed, 24 Feb 2016 00:16:57 +0000 (00:16 +0000)]
[tests] Don't compile CFI C tests in C++ mode.

llvm-svn: 261708

8 years ago[InstCombine] refactor visitOr() to use foldCastedBitwiseLogic()
Sanjay Patel [Tue, 23 Feb 2016 23:56:23 +0000 (23:56 +0000)]
[InstCombine] refactor visitOr() to use foldCastedBitwiseLogic()

Note: The 'and' case in foldCastedBitwiseLogic() is inheriting one extra
check from the nearly identical 'or' case:
  if ((!isa<ICmpInst>(Cast0Src) || !isa<ICmpInst>(Cast1Src))

But I'm not sure how to expose that difference in a regression test.
Without that check, the 'or' path will infinite loop on:
test/Transforms/InstCombine/zext-or-icmp.ll
because the zext-or-icmp fold is attempting a reverse transform.

The refactoring should extend to the 'xor' case next to solve part of
PR26702.

llvm-svn: 261707

8 years ago[doc] Obtaining help on LLVM's CUDA support.
Jingyue Wu [Tue, 23 Feb 2016 23:34:49 +0000 (23:34 +0000)]
[doc] Obtaining help on LLVM's CUDA support.

llvm-svn: 261706

8 years agoPR24667: fix quadratic runtime if textually-included modular headers define large...
Richard Smith [Tue, 23 Feb 2016 23:20:51 +0000 (23:20 +0000)]
PR24667: fix quadratic runtime if textually-included modular headers define large numbers of macros.

llvm-svn: 261705

8 years agoWhen looking for symbols, find load addresses in a more robust way.
Sean Callanan [Tue, 23 Feb 2016 23:09:06 +0000 (23:09 +0000)]
When looking for symbols, find load addresses in a more robust way.

IRExecutionUnit previously replicated a bunch of logic that already
existed elsewhere for the purpose of getting a load address for a
symbol.  This approach failed to resolve certain types of symbols.
Instead, we now use functions on SymbolContext to do the address
resolution.

This is a cleanup of IRExecutionUnit::FindInSymbols, and also fixes a
latent bug where we looked at the wrong SymbolContext to determine
whether or not it is external.

<rdar://problem/24770829>

llvm-svn: 261704

8 years ago[analyzer] Find ObjC 'self' decl even when block captures local named 'self'.
Devin Coughlin [Tue, 23 Feb 2016 22:26:04 +0000 (22:26 +0000)]
[analyzer] Find ObjC 'self' decl even when block captures local named 'self'.

When looking up the 'self' decl in block captures, make sure to find the actual
self declaration even when the block captures a local variable named 'self'.

rdar://problem/24751280

llvm-svn: 261703

8 years agoRevert "[WebAssembly] Stackify code emitted by eliminateFrameIndex"
Derek Schuff [Tue, 23 Feb 2016 22:13:21 +0000 (22:13 +0000)]
Revert "[WebAssembly] Stackify code emitted by eliminateFrameIndex"

This reverts r261685 due to wasm test breakage.

llvm-svn: 261702

8 years agominimize test and use FileCheck
Sanjay Patel [Tue, 23 Feb 2016 22:03:44 +0000 (22:03 +0000)]
minimize test and use FileCheck

llvm-svn: 261701

8 years ago[CMake] Support component-based installation for runtime libraries
Chris Bieneman [Tue, 23 Feb 2016 21:55:38 +0000 (21:55 +0000)]
[CMake] Support component-based installation for runtime libraries

This enables targets like "install-ubsan" and "install-asan" to install all associated runtime libraries.

llvm-svn: 261700

8 years ago[CMake] Assign components and dependencies during add_compiler_rt_resource_file
Chris Bieneman [Tue, 23 Feb 2016 21:50:39 +0000 (21:50 +0000)]
[CMake] Assign components and dependencies during add_compiler_rt_resource_file

This makes it so that component-based installations will include resource files (i.e. blacklists). My next patch will add support for component-based installations.

llvm-svn: 261699

8 years agoAArch64: rename compact unwind forms back to UNWIND_ARM64_*. NFC.
Tim Northover [Tue, 23 Feb 2016 21:49:05 +0000 (21:49 +0000)]
AArch64: rename compact unwind forms back to UNWIND_ARM64_*. NFC.

Looks like the global rename last year was a bit over-zealous. These things
really are referred to with ARM64 elsewhere (ld64, libunwind, ...).

llvm-svn: 261698

8 years ago[WebAssembly] Stackify code emitted by eliminateFrameIndex
Derek Schuff [Tue, 23 Feb 2016 21:25:17 +0000 (21:25 +0000)]
[WebAssembly] Stackify code emitted by eliminateFrameIndex

llvm-svn: 261685

8 years ago[profile] Fix iteration over profile data entries
Vedant Kumar [Tue, 23 Feb 2016 20:46:14 +0000 (20:46 +0000)]
[profile] Fix iteration over profile data entries

Fix a crash when gathering value profile data on i386 Darwin.

The Darwin linker shrinks sections containing aligned structures when
padding is not explicitly added to the end of the structure. When
iterating over these structures, be sure to not walk past the end of the
section.

No tests added, since running `ninja check-profile` on i386 Darwin is
enough to reproduce the original crash.

llvm-svn: 261683

8 years agoUse a different error in test.
Rafael Espindola [Tue, 23 Feb 2016 20:36:20 +0000 (20:36 +0000)]
Use a different error in test.

This opens the way for -r being implemented.

llvm-svn: 261682