platform/upstream/llvm.git
8 years ago[RegisterBankInfo] Use array instead of SmallVector for BreakDown.
Quentin Colombet [Fri, 23 Sep 2016 00:14:30 +0000 (00:14 +0000)]
[RegisterBankInfo] Use array instead of SmallVector for BreakDown.

This is another step toward TableGen'ed like structures. The BreakDown of
the mapping of the value will be statically computed by TableGen, thus
we only have to point to the right entry in the table instead of
dynamically allocate the mapping for each instruction.

We still support the dynamic allocation through a factory of
PartialMapping to ease the bring-up of the targets while the TableGen
backend is not available.

llvm-svn: 282213

8 years agoAdd the ability to append breakpoints to the save file.
Jim Ingham [Thu, 22 Sep 2016 23:42:42 +0000 (23:42 +0000)]
Add the ability to append breakpoints to the save file.

llvm-svn: 282212

8 years ago[libFuzzer] simplify the crash minimizer; split MaxLen into two: MaxInputLen and...
Kostya Serebryany [Thu, 22 Sep 2016 23:16:36 +0000 (23:16 +0000)]
[libFuzzer] simplify the crash minimizer; split MaxLen into two: MaxInputLen and MaxMutationLen, allow MaxMutationLen to be less than MaxInputLen

llvm-svn: 282211

8 years ago[InstCombine] fold X urem C -> X < C ? X : X - C when C is big (PR28672)
Sanjay Patel [Thu, 22 Sep 2016 22:36:26 +0000 (22:36 +0000)]
[InstCombine] fold X urem C -> X < C ? X : X - C when C is big (PR28672)

We already have the udiv variant of this transform, so I think this is ok for
InstCombine too even though there is an increase in IR instructions. As the
tests and TODO comments show, the transform can lead to follow-on combines.

This should fix: https://llvm.org/bugs/show_bug.cgi?id=28672

Differential Revision: https://reviews.llvm.org/D24527

llvm-svn: 282209

8 years agoAdd the ability to deserialize only breakpoints matching a given name.
Jim Ingham [Thu, 22 Sep 2016 22:20:28 +0000 (22:20 +0000)]
Add the ability to deserialize only breakpoints matching a given name.

Also tests for this and the ThreadSpec serialization.

llvm-svn: 282207

8 years ago[AsmParser] Remove unused partial template specialization.
Davide Italiano [Thu, 22 Sep 2016 22:02:59 +0000 (22:02 +0000)]
[AsmParser] Remove unused partial template specialization.

llvm-svn: 282206

8 years agoSerilize the thread options within the breakpoint options.
Jim Ingham [Thu, 22 Sep 2016 22:00:59 +0000 (22:00 +0000)]
Serilize the thread options within the breakpoint options.

llvm-svn: 282205

8 years ago[utils] Teach the code coverage prep script about --restrict
Vedant Kumar [Thu, 22 Sep 2016 21:49:49 +0000 (21:49 +0000)]
[utils] Teach the code coverage prep script about --restrict

Add two options to the code coverage artifact prep script:

  * --use-existing-profdata: Use an existing indexed profile instead of
    merging the same profiles again.
  * --restrict: Restrict the coverage reporting to the given list of
    source directories.

With this in place, we can teach the coverage bot how to prepare
separate reports for each of the llvm tools.

llvm-svn: 282204

8 years ago[llvm-cov] Document some fields in a class (NFC)
Vedant Kumar [Thu, 22 Sep 2016 21:49:47 +0000 (21:49 +0000)]
[llvm-cov] Document some fields in a class (NFC)

llvm-svn: 282203

8 years ago[llvm-cov] Add the ability to specify directories of input source files
Vedant Kumar [Thu, 22 Sep 2016 21:49:43 +0000 (21:49 +0000)]
[llvm-cov] Add the ability to specify directories of input source files

We've supported restricting coverage reports to a set of files for a
long time. Add support for being able to restrict by entire directories.

I suppose this supersedes D20803.

llvm-svn: 282202

8 years agoMachineScheduler: Slightly simplify release node
Matthias Braun [Thu, 22 Sep 2016 21:39:56 +0000 (21:39 +0000)]
MachineScheduler: Slightly simplify release node

llvm-svn: 282201

8 years agoMachineScheduler: Remove ineffective heuristic; NFC
Matthias Braun [Thu, 22 Sep 2016 21:39:52 +0000 (21:39 +0000)]
MachineScheduler: Remove ineffective heuristic; NFC

Currently all nodes get added to the NextSU list when they are released,
so any candidate must be in that list, making the heuristic ineffective.
Remove it for now, we can add it back later in a working fashion if
necessary.

llvm-svn: 282200

8 years agoRevert r282168 "GVN-hoist: fix store past load dependence analysis (PR30216)"
Hans Wennborg [Thu, 22 Sep 2016 21:20:53 +0000 (21:20 +0000)]
Revert r282168 "GVN-hoist: fix store past load dependence analysis (PR30216)"

and also the dependent r282175 "GVN-hoist: do not dereference null pointers"

It's causing compiler crashes building Harfbuzz (PR30499).

llvm-svn: 282199

8 years ago[Profile] Remove unused variable
Xinliang David Li [Thu, 22 Sep 2016 21:12:40 +0000 (21:12 +0000)]
[Profile] Remove unused variable

llvm-svn: 282198

8 years ago[ELF/GC] Don't crash while processing Discarded sections.
Davide Italiano [Thu, 22 Sep 2016 21:08:51 +0000 (21:08 +0000)]
[ELF/GC] Don't crash while processing Discarded sections.

The ELF spec doesn't allow relocations to point directly to
a deduplicated COMDAT section but this unfortunately happens in
practice. Bail out early instead of crashing.

Differential Revision:  https://reviews.llvm.org/D24750

llvm-svn: 282197

8 years ago[CMake] Fixing a small hack in add_lldb_library
Chris Bieneman [Thu, 22 Sep 2016 21:08:27 +0000 (21:08 +0000)]
[CMake] Fixing a small hack in add_lldb_library

This code was adding an explicit dependency on libclang because lldb needs clang headers, changing this to instead depend on the clang tablegen targets means we don't have to depend on building the clang bits in libclang that lldb doesn't need.

Note this is still a bit of a hack because we're adding the dependency to all lldb libraries, instead of just the ones that need it.

llvm-svn: 282196

8 years agoTry to fix build errors on Android.
Zachary Turner [Thu, 22 Sep 2016 21:06:13 +0000 (21:06 +0000)]
Try to fix build errors on Android.

It doesn't like the implicit conversion from T[] to ArrayRef<T>
so I'm using `llvm::makeArrayRef()`.  Hopefully I got everything.

llvm-svn: 282195

8 years ago[RDF] Add initial support for lane masks in the DFG
Krzysztof Parzyszek [Thu, 22 Sep 2016 21:01:24 +0000 (21:01 +0000)]
[RDF] Add initial support for lane masks in the DFG

Use lane masks for calculating covering and aliasing of register
references.

llvm-svn: 282194

8 years ago[Profile] suppress verbose rt message by default
Xinliang David Li [Thu, 22 Sep 2016 21:00:29 +0000 (21:00 +0000)]
[Profile] suppress verbose rt message by default

llvm-svn: 282193

8 years ago[Hexagon] Remove USR_OVF from CtrRegs register class
Krzysztof Parzyszek [Thu, 22 Sep 2016 20:59:41 +0000 (20:59 +0000)]
[Hexagon] Remove USR_OVF from CtrRegs register class

USR_OVF is a subregister of USR, which is a member of CtrRegs. Having both
a register and its proper subregister in the same register class has bad
consequences for lane mask calculation: based solely on the lane mask info,
USR_OVF would not appear to be a subregister of USR.

llvm-svn: 282192

8 years ago[RDF] Print the function name for calls in dumps
Krzysztof Parzyszek [Thu, 22 Sep 2016 20:58:19 +0000 (20:58 +0000)]
[RDF] Print the function name for calls in dumps

llvm-svn: 282191

8 years ago[RDF] Use uint32_t for register numbers instead of unsigned
Krzysztof Parzyszek [Thu, 22 Sep 2016 20:56:39 +0000 (20:56 +0000)]
[RDF] Use uint32_t for register numbers instead of unsigned

llvm-svn: 282190

8 years agocfi: Fixes for check-cfi when configured as an external project.
Peter Collingbourne [Thu, 22 Sep 2016 20:51:48 +0000 (20:51 +0000)]
cfi: Fixes for check-cfi when configured as an external project.

Differential Revision: https://reviews.llvm.org/D24817

llvm-svn: 282189

8 years agoConvert option tables to ArrayRefs.
Zachary Turner [Thu, 22 Sep 2016 20:22:55 +0000 (20:22 +0000)]
Convert option tables to ArrayRefs.

This change is very mechanical.  All it does is change the
signature of `Options::GetDefinitions()` and `OptionGroup::
GetDefinitions()` to return an `ArrayRef<OptionDefinition>`
instead of a `const OptionDefinition *`.  In the case of the
former, it deletes the sentinel entry from every table, and
in the case of the latter, it removes the `GetNumDefinitions()`
method from the interface.  These are no longer necessary as
`ArrayRef` carries its own length.

In the former case, iteration was done by using a sentinel
entry, so there was no knowledge of length.  Because of this
the individual option tables were allowed to be defined below
the corresponding class (after all, only a pointer was needed).
Now, however, the length must be known at compile time to
construct the `ArrayRef`, and as a result it is necessary to
move every option table before its corresponding class.  This
results in this CL looking very big, but in terms of substance
there is not much here.

Differential revision: https://reviews.llvm.org/D24834

llvm-svn: 282188

8 years ago[lld] Add llvm-pdbdump as a test dependency
Vedant Kumar [Thu, 22 Sep 2016 20:12:23 +0000 (20:12 +0000)]
[lld] Add llvm-pdbdump as a test dependency

Reviewed-by: rafael
llvm-svn: 282187

8 years agoi386 does not support optimized swifterror handling
Arnold Schwaighofer [Thu, 22 Sep 2016 20:06:25 +0000 (20:06 +0000)]
i386 does not support optimized swifterror handling

rdar://28432565

llvm-svn: 282186

8 years agoWin64: Don't emit unwind info for "leaf" functions (PR30337)
Hans Wennborg [Thu, 22 Sep 2016 19:50:05 +0000 (19:50 +0000)]
Win64: Don't emit unwind info for "leaf" functions (PR30337)

According to MSDN (see the PR), functions which don't touch any callee-saved
registers (including %rsp) don't need any unwind info.

This patch makes LLVM not emit unwind info for such functions, to save
binary size.

Differential Revision: https://reviews.llvm.org/D24748

llvm-svn: 282185

8 years ago[OpenBSD] Add type sign information for OpenBSD
Renato Golin [Thu, 22 Sep 2016 19:28:20 +0000 (19:28 +0000)]
[OpenBSD] Add type sign information for OpenBSD

Like NetBSD, OpenBSD prefers having a consistent set of typedefs
across the architectures it supports over strictly following the ARM
ABIs.  The diff below makes sure that clang's view of those types
matches OpenBSD's system header files.  It also adds a test that
checks the relevant types on all OpenBSD platforms that clang works
on.  Hopefully we can add mips64 and powerpc to that list in the
future.

Patch by Mark Kettenis <mark.kettenis@xs4all.nl>

llvm-svn: 282184

8 years agoFix build breakage due to typo in cast.
Zachary Turner [Thu, 22 Sep 2016 19:21:32 +0000 (19:21 +0000)]
Fix build breakage due to typo in cast.

llvm-svn: 282183

8 years ago[PowerPC] Sign extend sub-word values for atomic comparisons
Nemanja Ivanovic [Thu, 22 Sep 2016 19:06:38 +0000 (19:06 +0000)]
[PowerPC] Sign extend sub-word values for atomic comparisons

Atomic comparison instructions use the sub-word load instruction on
Power8 and up but the value is not sign extended prior to the signed word
compare instruction. This patch adds that sign extension.

llvm-svn: 282182

8 years agoRemove extra \
Rafael Espindola [Thu, 22 Sep 2016 18:36:46 +0000 (18:36 +0000)]
Remove extra \

Should fix the windows bots.

llvm-svn: 282181

8 years agoDon't move orphan sections past assignments.
Rafael Espindola [Thu, 22 Sep 2016 18:05:49 +0000 (18:05 +0000)]
Don't move orphan sections past assignments.

This fixes a case where we would produce an unaligned PT_LOAD.

llvm-svn: 282180

8 years agoActually, do it this way because I will want to know if I am in a host build elsewher...
Enrico Granata [Thu, 22 Sep 2016 17:59:58 +0000 (17:59 +0000)]
Actually, do it this way because I will want to know if I am in a host build elsewhere too

llvm-svn: 282179

8 years agoThe host version of lldb always builds for macosx
Enrico Granata [Thu, 22 Sep 2016 17:47:33 +0000 (17:47 +0000)]
The host version of lldb always builds for macosx

llvm-svn: 282178

8 years ago[DAG] Fix incorrect alignment of ext load.
Nirav Dave [Thu, 22 Sep 2016 17:28:43 +0000 (17:28 +0000)]
[DAG] Fix incorrect alignment of ext load.

Correctly use alignment size from loaded size not output value size.

Reviewers: jyknight, tstellarAMD, arsenm

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D23356

llvm-svn: 282177

8 years agoSimplify. NFC.
Rafael Espindola [Thu, 22 Sep 2016 17:23:53 +0000 (17:23 +0000)]
Simplify. NFC.

With the recent changes there should always be a 1:1 correspondence in
the correct order between OutputSections and OutputSectionCommands.

llvm-svn: 282176

8 years agoGVN-hoist: do not dereference null pointers
Sebastian Pop [Thu, 22 Sep 2016 17:22:58 +0000 (17:22 +0000)]
GVN-hoist: do not dereference null pointers

there may be basic blocks without memory accesses, in which case the
list of accesses is a null pointer.

llvm-svn: 282175

8 years ago[PPC] Set SP after loading data from stack frame, if no red zone is present
Krzysztof Parzyszek [Thu, 22 Sep 2016 17:22:43 +0000 (17:22 +0000)]
[PPC] Set SP after loading data from stack frame, if no red zone is present

Follow-up to r280705: Make sure that the SP is only restored after all data
is loaded from the stack frame, if there is no red zone.

This completes the fix for https://llvm.org/bugs/show_bug.cgi?id=26519.

Differential Revision: https://reviews.llvm.org/D24466

llvm-svn: 282174

8 years agoAvoid duplicated code.
Rafael Espindola [Thu, 22 Sep 2016 16:47:21 +0000 (16:47 +0000)]
Avoid duplicated code.

This also fixes the linker script accounting for the ELF header in
some places but not in others.

llvm-svn: 282173

8 years agofix DarwinLog no-info/no-debug case
Todd Fiala [Thu, 22 Sep 2016 16:29:48 +0000 (16:29 +0000)]
fix DarwinLog no-info/no-debug case

This started failing recently:
TestDarwinLogSourceDebug.py

It looks like the behavior of specifying the OS_ACTIVITY_MODE
env var with no value used to work for no-info/no-debug content.
That doesn't appear to be the case now.  Switch to specifying
the proper value ('default') when no info-level and no debug-level
content is expected.

llvm-svn: 282172

8 years agoadded environment variable-related Args gtests
Todd Fiala [Thu, 22 Sep 2016 16:00:01 +0000 (16:00 +0000)]
added environment variable-related Args gtests

Also fixed up a couple misbehaving functions.  It is perfectly
legal to have env vars with no values (i.e. the '=' and following
need not be present).

llvm-svn: 282171

8 years agoSpeculative fix for build failures due to consumeInteger.
Zachary Turner [Thu, 22 Sep 2016 15:55:05 +0000 (15:55 +0000)]
Speculative fix for build failures due to consumeInteger.

A recent patch added support for consumeInteger() and made
getAsInteger delegate to this function.  A few buildbots are
failing as a result with an assertion failure.  On a hunch,
I tested what happens if I call getAsInteger() on an empty
string, and sure enough it crashes the same way that the
buildbots are crashing.

I confirmed that getAsInteger() on an empty string did not
crash before my patch, so I suspect this to be the cause.

I also added a unit test for the empty string.

llvm-svn: 282170

8 years ago[docs] Touch up the coverage docs some more
Vedant Kumar [Thu, 22 Sep 2016 15:34:33 +0000 (15:34 +0000)]
[docs] Touch up the coverage docs some more

llvm-svn: 282169

8 years agoGVN-hoist: fix store past load dependence analysis (PR30216)
Sebastian Pop [Thu, 22 Sep 2016 15:33:51 +0000 (15:33 +0000)]
GVN-hoist: fix store past load dependence analysis (PR30216)

To hoist stores past loads, we used to search for potential
conflicting loads on the hoisting path by following a MemorySSA
def-def link from the store to be hoisted to the previous
defining memory access, and from there we followed the def-use
chains to all the uses that occur on the hoisting path. The
problem is that the def-def link may point to a store that does
not alias with the store to be hoisted, and so the loads that are
walked may not alias with the store to be hoisted, and even as in
the testcase of PR30216, the loads that may alias with the store
to be hoisted are not visited.

The current patch visits all loads on the path from the store to
be hoisted to the hoisting position and uses the alias analysis
to ask whether the store may alias the load. I was not able to
use the MemorySSA functionality to ask for whether load and
store are clobbered: I'm not sure which function to call, so I
used a call to AA->isNoAlias().

Store past store is still working as before using a MemorySSA
query: I added an extra test to pr30216.ll to make sure store
past store does not regress.

Differential Revision: https://reviews.llvm.org/D24517

llvm-svn: 282168

8 years agoFix TestBreakpointSerialization on windows
Pavel Labath [Thu, 22 Sep 2016 15:26:43 +0000 (15:26 +0000)]
Fix TestBreakpointSerialization on windows

The test exposed a bug in the StructuredData Serialization code, which did not
escape the backslash properly. This manifested itself as windows breakpoint
serialization roundtrip test not succeeding (as windows paths included
backslashes).

llvm-svn: 282167

8 years agoSimplify. NFC.
Rafael Espindola [Thu, 22 Sep 2016 15:25:21 +0000 (15:25 +0000)]
Simplify. NFC.

It doesn't matter which direction we rotate and we haven't really
started optimizing the linker script code, so keep this simple.

llvm-svn: 282166

8 years agoGVN-hoist: fix typo
Sebastian Pop [Thu, 22 Sep 2016 15:08:09 +0000 (15:08 +0000)]
GVN-hoist: fix typo

llvm-svn: 282165

8 years ago[Support] Add StringRef::consumeInteger.
Zachary Turner [Thu, 22 Sep 2016 15:05:19 +0000 (15:05 +0000)]
[Support] Add StringRef::consumeInteger.

StringRef::getInteger() exists and treats the entire string as
an integer of the specified radix, failing if any invalid characters
are encountered or the number overflows.

Sometimes you might have something like "123456foo" and you want
to get the number 123456 and leave the string "foo" remaining.
This is similar to what would be possible by using the standard
runtime library functions strtoul et al and specifying an end
pointer.

This patch adds consumeInteger(), which does exactly that.  It
consumes as much as possible until an invalid character is found,
and modifies the StringRef in place so that upon return only
the portion of the StringRef after the number remains.

Differential Revision: https://reviews.llvm.org/D24778

llvm-svn: 282164

8 years ago[compiler-rt] fix typo in option description [NFC]
Etienne Bergeron [Thu, 22 Sep 2016 14:57:24 +0000 (14:57 +0000)]
[compiler-rt] fix typo in option description [NFC]

llvm-svn: 282163

8 years agoGVN-hoist: move hoist testcase to GVNHoist dir
Sebastian Pop [Thu, 22 Sep 2016 14:45:46 +0000 (14:45 +0000)]
GVN-hoist: move hoist testcase to GVNHoist dir

llvm-svn: 282161

8 years agoGVN-hoist: only hoist relevant scalar instructions
Sebastian Pop [Thu, 22 Sep 2016 14:45:40 +0000 (14:45 +0000)]
GVN-hoist: only hoist relevant scalar instructions

Without this patch, GVN-hoist would think that a branch instruction is a scalar instruction
and would try to value number it. The patch filters out all such kind of irrelevant instructions.

A bit frustrating is that there is no easy way to discard all those very infrequent instructions,
a bit like isa<TerminatorInst> that stands for a large family of instructions. I'm thinking that
checking for those very infrequent other instructions would cost us more in compilation time
than just letting those instructions getting numbered, so I'm still thinking that a simpler check:

  if (isa<TerminatorInst>(I))
    return false;

is better than listing all the other less frequent instructions.

Differential Revision: https://reviews.llvm.org/D23929

llvm-svn: 282160

8 years agoHandle empty sections with symbol assignments.
Rafael Espindola [Thu, 22 Sep 2016 14:40:50 +0000 (14:40 +0000)]
Handle empty sections with symbol assignments.

Before the symbols were becoming undefined.

llvm-svn: 282159

8 years ago[clang-tidy] Add doc for `explain-config` option.
Haojian Wu [Thu, 22 Sep 2016 14:36:43 +0000 (14:36 +0000)]
[clang-tidy] Add doc for `explain-config` option.

llvm-svn: 282158

8 years agotsan: fix bug introduced in 282152
Dmitry Vyukov [Thu, 22 Sep 2016 14:33:43 +0000 (14:33 +0000)]
tsan: fix bug introduced in 282152

In ShadowToMem we call MemToShadow potentially for incorrect addresses.
So DCHECK(IsAppMem(p)) can fire in debug mode.
Fix this by swapping range and MemToShadow checks.

llvm-svn: 282157

8 years agoFix Wbitfield-constant-conversion false positives
Daniel Marjamaki [Thu, 22 Sep 2016 14:13:46 +0000 (14:13 +0000)]
Fix Wbitfield-constant-conversion false positives

Summary:
The diagnostic did not handle ~ well. An expression such as ~0 is often used when 'all ones' is needed.

Differential Revision: https://reviews.llvm.org/D24232

llvm-svn: 282156

8 years agoReapplying r281895 (and follow-up r281964) after fixing pr30468.
Keith Walker [Thu, 22 Sep 2016 14:13:25 +0000 (14:13 +0000)]
Reapplying r281895 (and follow-up  r281964) after fixing pr30468.

The additional fix is:

When adding debug information to a lowered phi node in mem2reg
check that we have a valid insertion point after the phi for adding
the debug information.

This change addresses the issue in pr30468 where a lowered phi was
added before a catchswitch and no debug information should be added
after the phi in this case.

Differential Revision: https://reviews.llvm.org/D24797

llvm-svn: 282155

8 years agoThird attempt to fix Sphinx bot
Teresa Johnson [Thu, 22 Sep 2016 13:58:33 +0000 (13:58 +0000)]
Third attempt to fix Sphinx bot

Bot now complaining about -flto=thin reference, used similar workaround
for that failure.

llvm-svn: 282154

8 years agoGlobalISel: handle stack-based parameters on AArch64.
Tim Northover [Thu, 22 Sep 2016 13:49:25 +0000 (13:49 +0000)]
GlobalISel: handle stack-based parameters on AArch64.

llvm-svn: 282153

8 years agotsan: support pie binaries on newer kernels
Dmitry Vyukov [Thu, 22 Sep 2016 13:42:02 +0000 (13:42 +0000)]
tsan: support pie binaries on newer kernels

4.1+ Linux kernels map pie binaries at 0x55:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d1fd836dcf00d2028c700c7e44d2c23404062c90
Currently tsan does not support app memory at 0x55 (https://github.com/google/sanitizers/issues/503).
Older kernels also map pie binaries at 0x55 when ASLR is disables (most notably under gdb).

This change extends tsan mapping for linux/x86_64 to cover 0x554-0x568 app range and fixes both 4.1+ kernels and gdb.

This required to slightly shrink low and high app ranges and move heap. The mapping become even more non-linear, since now we xor lower bits. Now even a continuous app range maps to split, intermixed shadow ranges. This breaks ShadowToMemImpl as it assumes linear mapping at least within a continuous app range (however it turned out to be already broken at least on arm64/42-bit vma as uncovered by r281970). So also change ShadowToMemImpl to hopefully a more robust implementation that does not assume a linear mapping.

llvm-svn: 282152

8 years agoSecond attempt to fix Sphinx bot
Teresa Johnson [Thu, 22 Sep 2016 13:41:10 +0000 (13:41 +0000)]
Second attempt to fix Sphinx bot

The fix in r282148 was not enough to fix the following error:
/home/llvmbb/llvm-build-dir/clang-sphinx-docs/llvm/src/tools/clang/docs/CommandGuide/clang.rst:338:
WARNING: unknown option: -flto=full

on the sphinx bot:
  http://lab.llvm.org:8011/builders/clang-sphinx-docs/builds/16313

(not reproducible locally).

This time, simply remove the option reference.

llvm-svn: 282151

8 years ago[RS4GC] Remat in presence of phi and use live value
Anna Thomas [Thu, 22 Sep 2016 13:13:06 +0000 (13:13 +0000)]
[RS4GC] Remat in presence of phi and use live value

Summary:

Reviewers:

Subscribers:

llvm-svn: 282150

8 years agoFix VA computation for tbss.
Rafael Espindola [Thu, 22 Sep 2016 12:35:44 +0000 (12:35 +0000)]
Fix VA computation for tbss.

llvm-svn: 282149

8 years agoFixing sphinx build due to diagnostic:
Aaron Ballman [Thu, 22 Sep 2016 12:15:18 +0000 (12:15 +0000)]
Fixing sphinx build due to diagnostic:

/opt/llvm/build.attributes.src/tools/clang/docs/CommandGuide/clang.rst:338: WARNING: unknown option: -flto=full

llvm-svn: 282148

8 years agoHandle multiple .tbss sections.
Rafael Espindola [Thu, 22 Sep 2016 12:00:08 +0000 (12:00 +0000)]
Handle multiple .tbss sections.

llvm-svn: 282147

8 years ago[change-namespace] fix qualifier of function references.
Eric Liu [Thu, 22 Sep 2016 11:54:00 +0000 (11:54 +0000)]
[change-namespace] fix qualifier of function references.

Reviewers: hokein

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D24803

llvm-svn: 282146

8 years ago[AMDGPU][mc] Add support for absolute expressions in DPP modifiers.
Artem Tamazov [Thu, 22 Sep 2016 11:47:21 +0000 (11:47 +0000)]
[AMDGPU][mc] Add support for absolute expressions in DPP modifiers.

Also added range checking for DPP attributes.
Assembler tests added as well.

Differential Revision: https://reviews.llvm.org/D24755

llvm-svn: 282145

8 years ago[PowerPC] Remove LE patterns matching generic stores/loads to VSX permuting ops
Nemanja Ivanovic [Thu, 22 Sep 2016 10:32:03 +0000 (10:32 +0000)]
[PowerPC] Remove LE patterns matching generic stores/loads to VSX permuting ops

This patch corresponds to:
https://reviews.llvm.org/D21409

The LXVD2X, LXVW4X, STXVD2X and STXVW4X instructions permute the two doublewords
in the vector register when in little-endian mode. Custom code ensures that the
necessary swaps are inserted for these. This patch simply removes the possibilty
that a load/store node will match one of these instructions in the SDAG as that
would not insert the necessary swaps.

llvm-svn: 282144

8 years ago[Power9] Add exploitation of non-permuting memory ops
Nemanja Ivanovic [Thu, 22 Sep 2016 09:52:19 +0000 (09:52 +0000)]
[Power9] Add exploitation of non-permuting memory ops

This patch corresponds to review:
https://reviews.llvm.org/D19825

The new lxvx/stxvx instructions do not require the swaps to line the elements
up correctly. In order to select them over the lxvd2x/lxvw4x instructions which
require swaps, the patterns for the old instruction have a predicate that
ensures they won't be selected on Power9 and newer CPUs.

llvm-svn: 282143

8 years ago[ESan][MIPS] Fix tests struct-simple.cpp on MIPS
Sagar Thakur [Thu, 22 Sep 2016 08:36:54 +0000 (08:36 +0000)]
[ESan][MIPS] Fix tests struct-simple.cpp on MIPS

For mips assember '#' is the start of comment. We get assembler error messages if # is used in the struct names. Therefore using '$' which works for all architectures.

Differential: D24335
Reviewed by: zhaoqin

llvm-svn: 282142

8 years ago[EfficiencySanitizer] Using '$' instead of '#' for struct counter name
Sagar Thakur [Thu, 22 Sep 2016 08:33:06 +0000 (08:33 +0000)]
[EfficiencySanitizer] Using '$' instead of '#' for struct counter name

For MIPS '#' is the start of comment line. Therefore we get assembler errors if # is used in the structure names.

Differential: D24334
Reviewed by: zhaoqin

llvm-svn: 282141

8 years agoFix revision 281960
Dorit Nuzman [Thu, 22 Sep 2016 07:56:23 +0000 (07:56 +0000)]
Fix revision 281960

llvm-svn: 282139

8 years agoclang-format: [JS] reserved words in method names.
Martin Probst [Thu, 22 Sep 2016 07:18:00 +0000 (07:18 +0000)]
clang-format: [JS] reserved words in method names.

Summary:
Before:
    class X {
      delete () {
        ...
      }
    }

After:
    class X {
      delete() {
        ...
      }
    }

Reviewers: djasper

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D24804

llvm-svn: 282138

8 years ago[X86] Fix some illegal rounding modes in some builtin test cases to ones that would...
Craig Topper [Thu, 22 Sep 2016 06:13:33 +0000 (06:13 +0000)]
[X86] Fix some illegal rounding modes in some builtin test cases to ones that would properly compile to valid assembly.

llvm-svn: 282137

8 years agoclang-format: Add an option to git-clang-format to diff between to commits
Stephen Hines [Thu, 22 Sep 2016 05:52:55 +0000 (05:52 +0000)]
clang-format: Add an option to git-clang-format to diff between to commits

Summary:
When building pre-upload hooks using git-clang-format, it is useful to limit the scope to a diff of two commits (instead of from a commit against the working tree) to allow for less false positives in dependent commits.

This change adds the option of specifying two git commits to git-clang-format when using the `--diff` flag, which uses a different strategy to diff (using `git-diff-tree` instead of `git-diff-index`), and runs clang-format against the second commit instead of the working directory.

There is a slight backwards-incompatibility introduced with this change: if a filename matches a branch name or other commit-ish, then `git clang-format <commit> <file>` will no longer work as expected; use `git clang-format <commit> -- <file>` instead.

Patch by Luis Hector Chavez!

Reviewers: djasper, lodato

Subscribers: lodato, cfe-commits, srhines

Projects: #clang-c

Differential Revision: https://reviews.llvm.org/D24319

llvm-svn: 282136

8 years agoFix parsing expressions to evaluate with spaces and optional args (MI)
Ilia K [Thu, 22 Sep 2016 05:08:41 +0000 (05:08 +0000)]
Fix parsing expressions to evaluate with spaces and optional args (MI)

Summary:
When extracting options for long options (starting with `--`), the use of
`MIUtilString::SplitConsiderQuotes` to split all the arguments was being
conditioned on the option type to be expected. This was wrong as this caused
other options to be parsed incorrectly since it was not taking into account the
presence of quotes.

Patch by Ed Munoz <edmunoz@microsoft.com>

Reviewers: edmunoz, ki.stfu

Subscribers: ki.stfu, lldb-commits

Projects: #lldb

Differential Revision: https://reviews.llvm.org/D24202

llvm-svn: 282135

8 years agoFix failure on 03 bot
Marshall Clow [Thu, 22 Sep 2016 03:25:22 +0000 (03:25 +0000)]
Fix failure on 03 bot

llvm-svn: 282134

8 years ago[AVX-512] Add support for commuting VPTERNLOG instructions.
Craig Topper [Thu, 22 Sep 2016 03:00:50 +0000 (03:00 +0000)]
[AVX-512] Add support for commuting VPTERNLOG instructions.

VPTERNLOG is a ternary instruction with an immediate specifying the logical operation to perform. For each bit position in the 3 source vectors the bit from each source is concatenated together and the resulting 3-bit value is used to select a bit in the immediate. This bit value is written to the result vector.

We can commute this by swapping operands and modifying the immediate. To modify the immediate we need to swap two pairs of bits. The pairs correspond to the locations in the immediate where the commuted operands bits have opposite values and the uncommuted operand has the same value. Bits 0 and 7 will never be swapped since the relevant bits from all sources are the same value.

This refactors and reuses parts of the FMA3 commuting code which is also a three operand instruction.

llvm-svn: 282132

8 years ago[RegisterBankInfo] Move to statically allocated RegisterBank.
Quentin Colombet [Thu, 22 Sep 2016 02:10:37 +0000 (02:10 +0000)]
[RegisterBankInfo] Move to statically allocated RegisterBank.

This commit is basically the first step toward what will
RegisterBankInfo look when it gets TableGen'ed.

It introduces a XXXGenRegisterBankInfo.def file that is what TableGen
will issue at some point. Moreover, the RegBanks field in
RegisterBankInfo changed to reflect the static (compile time) aspect of
the information.

llvm-svn: 282131

8 years ago[RegisterBankInfo] Take advantage of the extra argument of SmallVector::resize.
Quentin Colombet [Thu, 22 Sep 2016 02:10:32 +0000 (02:10 +0000)]
[RegisterBankInfo] Take advantage of the extra argument of SmallVector::resize.

When initializing an instance of OperandsMapper, instead of using
SmallVector::resize followed by std::fill, use the function that
directly does that in SmallVector.

llvm-svn: 282130

8 years ago[libFuzzer] add 'features' to the corpus elements, allow mutations with Size > MaxSiz...
Kostya Serebryany [Thu, 22 Sep 2016 01:34:58 +0000 (01:34 +0000)]
[libFuzzer] add 'features' to the corpus elements, allow mutations with Size > MaxSize, fix sha1 in corpus stats; various refactorings

llvm-svn: 282129

8 years agofix Args function broken in r281942
Todd Fiala [Thu, 22 Sep 2016 00:59:23 +0000 (00:59 +0000)]
fix Args function broken in r281942

The method was hard-coded to check only the 0th element of the array.
This manifested as NSLog messages behaving incorrectly on macOS.
(This is independent of the broken DarwinLog feature).

llvm-svn: 282128

8 years ago[libFuzzer] one more test
Kostya Serebryany [Thu, 22 Sep 2016 00:57:29 +0000 (00:57 +0000)]
[libFuzzer] one more test

llvm-svn: 282127

8 years agoAdd missing _v traits. is_bind_expression_v, is_placeholder_v and uses_allocator_v
Marshall Clow [Thu, 22 Sep 2016 00:23:15 +0000 (00:23 +0000)]
Add missing _v traits. is_bind_expression_v, is_placeholder_v and uses_allocator_v

llvm-svn: 282126

8 years ago[CMake] More robust handling for bootstrap variables
Chris Bieneman [Thu, 22 Sep 2016 00:18:12 +0000 (00:18 +0000)]
[CMake] More robust handling for bootstrap variables

Checking defined isn't good enough we also need to handle defined to empty string.

llvm-svn: 282125

8 years ago[Sema] Fix PR30481: crash on checking printf args.
George Burgess IV [Thu, 22 Sep 2016 00:00:26 +0000 (00:00 +0000)]
[Sema] Fix PR30481: crash on checking printf args.

We were falling through from one case to another in a switch statement.
Oops.

llvm-svn: 282124

8 years agoFix typo in lldb --help
Ed Maste [Wed, 21 Sep 2016 23:30:36 +0000 (23:30 +0000)]
Fix typo in lldb --help

Patch by Yacine Belkadi

Differential Revision: https://reviews.llvm.org/D12158

llvm-svn: 282123

8 years ago[CMake] Check if passthrough variables are defined
Chris Bieneman [Wed, 21 Sep 2016 23:24:15 +0000 (23:24 +0000)]
[CMake] Check if passthrough variables are defined

Checking if they evaluate to true cases prevents passing values that evaluate to false cases. Instead we should check if the variables are defined.

llvm-svn: 282122

8 years ago[libFuzzer] add stats to the corpus; more refactoring
Kostya Serebryany [Wed, 21 Sep 2016 22:42:17 +0000 (22:42 +0000)]
[libFuzzer] add stats to the corpus; more refactoring

llvm-svn: 282121

8 years agoFix for loop sign fix in r282112 for column = 0
Ed Maste [Wed, 21 Sep 2016 22:36:51 +0000 (22:36 +0000)]
Fix for loop sign fix in r282112 for column = 0

llvm-svn: 282119

8 years agoOnce more unto the strict weak ordering, once more.
Rafael Espindola [Wed, 21 Sep 2016 22:36:19 +0000 (22:36 +0000)]
Once more unto the strict weak ordering, once more.

This should finally give a stable sorting over all implementations.

llvm-svn: 282118

8 years agoFix an incorrect nullptr conversion.
Zachary Turner [Wed, 21 Sep 2016 22:33:30 +0000 (22:33 +0000)]
Fix an incorrect nullptr conversion.

llvm-svn: 282117

8 years ago=delete the StringRef(nullptr_t) constructor.
Zachary Turner [Wed, 21 Sep 2016 22:29:36 +0000 (22:29 +0000)]
=delete the StringRef(nullptr_t) constructor.

It's a guaranteed crash if you construct a StringRef with
nullptr, so might as well delete the constructor that allows
it.

llvm-svn: 282116

8 years ago[libFuzzer] more refactoring; don't compute sha1sum every time we mutate a unit from...
Kostya Serebryany [Wed, 21 Sep 2016 21:41:48 +0000 (21:41 +0000)]
[libFuzzer] more refactoring; don't compute sha1sum every time we mutate a unit from the corpus, use the stored one.

llvm-svn: 282115

8 years ago[libFuzzer] more refactoring
Kostya Serebryany [Wed, 21 Sep 2016 21:17:23 +0000 (21:17 +0000)]
[libFuzzer] more refactoring

llvm-svn: 282113

8 years agoFix integer sign warning from r282105
Ed Maste [Wed, 21 Sep 2016 21:14:31 +0000 (21:14 +0000)]
Fix integer sign warning from r282105

llvm-svn: 282112

8 years agoFix -Wcovered-switch-default warning in StackFrame.cpp
Ed Maste [Wed, 21 Sep 2016 21:08:30 +0000 (21:08 +0000)]
Fix -Wcovered-switch-default warning in StackFrame.cpp

The switch coveres all possible values. If a new one is added in the
future the compiler will start warning, providing a notification that
the switch needs updating.

llvm-svn: 282111

8 years ago[CMake] Initial support for LLDB.framework
Chris Bieneman [Wed, 21 Sep 2016 21:02:16 +0000 (21:02 +0000)]
[CMake] Initial support for LLDB.framework

Summary:
This patch adds a CMake option LLDB_BUILD_FRAMEWORK, which builds libLLDB as a macOS framework instead of as a *nix shared library.

With this patch any LLDB executable that has the INCLUDE_IN_FRAMEWORK option set will be built into the Framework's resources directory, and a symlink to the exeuctable will be placed under the build directory's bin folder. Creating the symlinks allows users to run commands from the build directory without altering the workflow.

The framework generated by this patch passes the LLDB test suite, but has not been tested beyond that. It is not expected to be fully ready to ship, but it is a first step.

With this patch binaries that are placed inside the framework aren't being properly installed. Fixing that would increase the patch size significantly, so I'd like to do that in a follow-up.

Reviewers: zturner, tfiala

Subscribers: beanz, lldb-commits, mgorny

Differential Revision: https://reviews.llvm.org/D24749

llvm-svn: 282110

8 years ago[CMake] Pass CLANG_VERSION_* variables into later stages
Chris Bieneman [Wed, 21 Sep 2016 20:43:43 +0000 (20:43 +0000)]
[CMake] Pass CLANG_VERSION_* variables into later stages

When supporting overriding clang versions we also need to pass those through to the next stage so they remain overridden.

llvm-svn: 282109

8 years agoAdd -Wignored-pragma-intrinsic flag
Albert Gutowski [Wed, 21 Sep 2016 20:19:21 +0000 (20:19 +0000)]
Add -Wignored-pragma-intrinsic flag

Summary: People might want to receive warnings about pragmas but not about intrinsics that are implemented in intrin.h.

Reviewers: thakis, hans

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D24775

llvm-svn: 282108

8 years ago[asan] Reify ErrorGeneric
Filipe Cabecinhas [Wed, 21 Sep 2016 20:18:18 +0000 (20:18 +0000)]
[asan] Reify ErrorGeneric

Summary:
Finish work on PR30351 (last one, after D24551, D24552, and D24554 land)

Also replace the old ReportData structure/variable with the current_error_ static
member of the ScopedInErrorReport class.

This has the following side-effects:
  - Move ASAN_ON_ERROR(); call to the start of the destructor, instead
    of in StartReporting().
      - We only generate the error structure after the
        ScopedInErrorReport constructor finishes, so we can't call
        ASAN_ON_ERROR() during the constructor. I think this makes more
        sense, since we end up never running two of the ASAN_ON_ERROR()
        callback. This also works the same way as error reporting, since
        we end up having a lock around it. Otherwise we could end up
        with the ASAN_ON_ERROR() call for error 1, then the
        ASAN_ON_ERROR() call for error 2, and then lock the mutex for
        reporting error 1.
  - The __asan_get_report_* functions will be able to, in the future,
    provide information about other errors that aren't a "generic
    error". But we might want to rethink that API, since it's too
    restricted. Ideally we teach lldb about the current_error_ member of
    ScopedInErrorReport.

Reviewers: vitalybuka, kcc, eugenis

Subscribers: kubabrecka, llvm-commits

Differential Revision: https://reviews.llvm.org/D24555

llvm-svn: 282107