platform/upstream/llvm.git
7 years agoRevert r285664, cxx-abi-dev chose to go in a different direction for the ABI here.
Richard Smith [Thu, 1 Dec 2016 03:04:07 +0000 (03:04 +0000)]
Revert r285664, cxx-abi-dev chose to go in a different direction for the ABI here.

llvm-svn: 288304

7 years agoUse trigrams to speed up SpecialCaseList.
Ivan Krasin [Thu, 1 Dec 2016 02:54:54 +0000 (02:54 +0000)]
Use trigrams to speed up SpecialCaseList.

Summary:
it's often the case when the rules in the SpecialCaseList
are of the form hel.o*bar. That gives us a chance to build
trigram index to quickly discard 99% of inputs without
running a full regex. A similar idea was used in Google Code Search
as described in the blog post:
https://swtch.com/~rsc/regexp/regexp4.html

The check is defeated, if there's at least one regex
more complicated than that. In this case, all inputs
will go through the regex. That said, the real-world
rules are often simple or can be simplied. That considerably
speeds up compiling Chromium with CFI and UBSan.

As measured on Chromium's content_message_generator.cc:

before, CFI: 44 s
after, CFI: 23 s
after, CFI, no blacklist: 23 s (~1% slower, but 3 runs were unable to show the difference)
after, regular compilation to bitcode: 23 s

Reviewers: pcc

Subscribers: mgorny, llvm-commits

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

llvm-svn: 288303

7 years agoLTO: Remove Symbol::getIRName().
Peter Collingbourne [Thu, 1 Dec 2016 02:51:12 +0000 (02:51 +0000)]
LTO: Remove Symbol::getIRName().

Its only use was in the LTO implementation. Also document
Symbol::getName().

llvm-svn: 288302

7 years agoPR31081: ignore exception specifications when deducing function template
Richard Smith [Thu, 1 Dec 2016 02:11:49 +0000 (02:11 +0000)]
PR31081: ignore exception specifications when deducing function template
arguments from a declaration; despite what the standard says, this form of
deduction should not be considering exception specifications.

llvm-svn: 288301

7 years agorevert r288283 as it causes debug info (line numbers) to be lost in instrumented...
Kostya Serebryany [Thu, 1 Dec 2016 02:06:56 +0000 (02:06 +0000)]
revert r288283 as it causes debug info (line numbers) to be lost in instrumented code. also revert r288299 which was a workaround for the problem.

llvm-svn: 288300

7 years ago[libFuzzer] temporary disable a part of the test broken by r288283
Kostya Serebryany [Thu, 1 Dec 2016 01:33:44 +0000 (01:33 +0000)]
[libFuzzer] temporary disable a part of the test broken by r288283

llvm-svn: 288299

7 years agoDump Codeview type information correctly.
Rui Ueyama [Thu, 1 Dec 2016 01:22:48 +0000 (01:22 +0000)]
Dump Codeview type information correctly.

llvm-svn: 288298

7 years ago[TableGen] Minor clean-ups. NFC.
George Burgess IV [Thu, 1 Dec 2016 00:13:18 +0000 (00:13 +0000)]
[TableGen] Minor clean-ups. NFC.

Primarily: try to use DenseSet<StringRef> instead of
std::set<std::string>, and use pretty range algos where we can.

Small sizes were arbitrarily chosen.

llvm-svn: 288297

7 years ago[WebAssembly] Emit .import_global assembler directives
Derek Schuff [Thu, 1 Dec 2016 00:11:15 +0000 (00:11 +0000)]
[WebAssembly] Emit .import_global assembler directives

Support a new assembler directive, .import_global, to declare imported
global variables (i.e. those with external linkage and no
initializer). The linker turns these into wasm imports.

Patch by Jacob Gravelle

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

llvm-svn: 288296

7 years agoClean up CGObjCMac's APIs for deriving class references. NFC.
John McCall [Wed, 30 Nov 2016 23:54:50 +0000 (23:54 +0000)]
Clean up CGObjCMac's APIs for deriving class references.  NFC.

llvm-svn: 288295

7 years ago[OpenMP] Sema and parsing for 'teams distribute parallel for simd' pragma
Kelvin Li [Wed, 30 Nov 2016 23:51:03 +0000 (23:51 +0000)]
[OpenMP] Sema and parsing for 'teams distribute parallel for simd' pragma

This patch is to implement sema and parsing for 'teams distribute parallel for simd' pragma.

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

llvm-svn: 288294

7 years agoMove most EH from MachineModuleInfo to MachineFunction
Matthias Braun [Wed, 30 Nov 2016 23:49:01 +0000 (23:49 +0000)]
Move most EH from MachineModuleInfo to MachineFunction

Most of the exception handling members in MachineModuleInfo is actually
per function data (talks about the "current function") so it is better
to keep it at the function instead of the module.

This is a necessary step to have machine module passes work properly.

Also:
- Rename TidyLandingPads() to tidyLandingPads()
- Use doxygen member groups instead of "//===- EH ---"... so it is clear
  where a group ends.
- I had to add an ugly const_cast at two places in the AsmPrinter
  because the available MachineFunction pointers are const, but the code
  wants to call tidyLandingPads() in between
  (markFunctionEnd()/endFunction()).

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

llvm-svn: 288293

7 years agoMove VariableDbgInfo from MachineModuleInfo to MachineFunction
Matthias Braun [Wed, 30 Nov 2016 23:48:50 +0000 (23:48 +0000)]
Move VariableDbgInfo from MachineModuleInfo to MachineFunction

VariableDbgInfo is per function data, so it makes sense to have it with
the function instead of the module.

This is a necessary step to have machine module passes work properly.

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

llvm-svn: 288292

7 years agoMove FrameInstructions from MachineModuleInfo to MachineFunction
Matthias Braun [Wed, 30 Nov 2016 23:48:42 +0000 (23:48 +0000)]
Move FrameInstructions from MachineModuleInfo to MachineFunction

This is per function data so it is better kept at the function instead
of the module.

This is a necessary step to have machine module passes work properly.

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

llvm-svn: 288291

7 years agoMCStreamer: Use "cfi" for CFI related temp labels.
Matthias Braun [Wed, 30 Nov 2016 23:48:26 +0000 (23:48 +0000)]
MCStreamer: Use "cfi" for CFI related temp labels.

Choosing a "cfi" name makes the intend a bit clearer in an assembly dump
and more importantly the assembly dumps are slightly more stable as the
numbers don't move around anymore when unrelated code calls
createTempSymbol() more or less often.
As they are temp labels the name doesn't influence the generated object
code.

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

llvm-svn: 288290

7 years agoIntroduce a type-safe enum for ForDefinition.
John McCall [Wed, 30 Nov 2016 23:25:13 +0000 (23:25 +0000)]
Introduce a type-safe enum for ForDefinition.

llvm-svn: 288289

7 years agollvm-lto2: Simpler workaround for PR30396.
Peter Collingbourne [Wed, 30 Nov 2016 23:19:05 +0000 (23:19 +0000)]
llvm-lto2: Simpler workaround for PR30396.

Maintain the command line resolutions as a map to a list of resolutions
rather than a single resolution, and apply the resolutions in the order
observed. This is not only simpler but allows us to test the scenario where
the two symbols have different resolutions.

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

llvm-svn: 288288

7 years agoFix some layering violations where CGObjCMac's NSString emission was
John McCall [Wed, 30 Nov 2016 23:15:55 +0000 (23:15 +0000)]
Fix some layering violations where CGObjCMac's NSString emission was
performed at the CodeGenModule level.

Would be NFC except we now also use a different uniquing structure so
that we don't get spurious conflicts if you ask for both an NSString
and a CFString for the same content (which is possible with builtins).

llvm-svn: 288287

7 years ago[PS4] Tighten up a triple check.
Paul Robinson [Wed, 30 Nov 2016 23:14:27 +0000 (23:14 +0000)]
[PS4] Tighten up a triple check.

llvm-svn: 288286

7 years agoFix some Clang-tidy modernize-use-default and Include What You Use warnings; other...
Eugene Zelenko [Wed, 30 Nov 2016 23:10:42 +0000 (23:10 +0000)]
Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 288285

7 years agoAdd another address to look for the kernel load addr in
Jason Molenda [Wed, 30 Nov 2016 23:00:52 +0000 (23:00 +0000)]
Add another address to look for the kernel load addr in
DynamicLoaderDarwinKernel::SearchForKernelWithDebugHints
on 32-bit devices.

<rdar://problem/29423290>

llvm-svn: 288284

7 years agoRecommit r288212: Emit 'no line' information for interesting 'orphan' instructions.
Paul Robinson [Wed, 30 Nov 2016 22:49:55 +0000 (22:49 +0000)]
Recommit r288212: Emit 'no line' information for interesting 'orphan' instructions.
The LLDB tests are now ready for this patch.

DWARF specifies that "line 0" really means "no appropriate source
location" in the line table.  Use this for branch targets and some
other cases that have no specified source location, to prevent
inheriting unfortunate line numbers from physically preceding
instructions (which might be from completely unrelated source).

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

llvm-svn: 288283

7 years agoPR31214: Make a test tolerate "line 0" when stepping by instruction.
Paul Robinson [Wed, 30 Nov 2016 22:47:25 +0000 (22:47 +0000)]
PR31214: Make a test tolerate "line 0" when stepping by instruction.

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

llvm-svn: 288282

7 years ago[libFuzzer] extend -rss_limit_mb to crash instantly on a single malloc that exceeds...
Kostya Serebryany [Wed, 30 Nov 2016 22:39:35 +0000 (22:39 +0000)]
[libFuzzer] extend -rss_limit_mb to crash instantly on a single malloc that exceeds the limit

llvm-svn: 288281

7 years agoOnly computeRelativePath() on new members
David Callahan [Wed, 30 Nov 2016 22:32:58 +0000 (22:32 +0000)]
Only computeRelativePath() on new members

Summary:
When using thin archives, and processing the same archive multiple times, we were mangling existing entries.  The root cause is that we were calling computeRelativePath() more than once.   Here, we only call it when adding new members to an archive.

Note that D27218 changes the way thin archives are printed, and will break the new unit test included here.  Depending on which one lands first, the other will need to be slightly modified.

Reviewers: rafael, davide

Subscribers: llvm-commits

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

llvm-svn: 288280

7 years ago[AArch64] Refactor LSE support as feature separate from V8.1a support.
Joel Jones [Wed, 30 Nov 2016 22:25:24 +0000 (22:25 +0000)]
[AArch64] Refactor LSE support as feature separate from V8.1a support.

Summary:
This is preparation for ThunderX processors that have Large
System Extension (LSE) atomic instructions, but not the
other instructions introduced by V8.1a.
This will mimic changes to GCC as described here:
https://gcc.gnu.org/ml/gcc-patches/2015-06/msg00388.html

LSE instructions are: LD/ST<op>, CAS*, SWP

Reviewers: t.p.northover, echristo, jmolloy, rengolin

Subscribers: aemerson, mehdi_amini

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

llvm-svn: 288279

7 years agoFix LSR best register search algorithm.
Evgeny Stupachenko [Wed, 30 Nov 2016 22:23:51 +0000 (22:23 +0000)]
Fix LSR best register search algorithm.

Summary:
Fix a case when first register in a search has maximum
RegUses.getUsedByIndices(Reg).count()

Reviewers: qcolombet

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

From: Evgeny Stupachenko <evstupac@gmail.com>
llvm-svn: 288278

7 years agoClarify rules for reserved regs, fix aarch64 ones.
Matthias Braun [Wed, 30 Nov 2016 22:17:10 +0000 (22:17 +0000)]
Clarify rules for reserved regs, fix aarch64 ones.

No test case necessary as the problematic condition is checked with the
newly introduced assertAllSuperRegsMarked() function.

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

llvm-svn: 288277

7 years ago[libFuzzer] extend -print_coverage to print the comma-separated list of covered dirs...
Kostya Serebryany [Wed, 30 Nov 2016 21:53:32 +0000 (21:53 +0000)]
[libFuzzer] extend -print_coverage to print the comma-separated list of covered dirs. Note: the Windows stub for DirName is left unimplemented

llvm-svn: 288276

7 years ago[LibFuzzer] Add Windows implementations of some IO functions.
Zachary Turner [Wed, 30 Nov 2016 21:44:26 +0000 (21:44 +0000)]
[LibFuzzer] Add Windows implementations of some IO functions.

This patch moves some posix specific file i/o code into a new
file, FuzzerIOPosix.cpp, and provides implementations for these
functions on Windows in FuzzerIOWindows.cpp.  This is another
incremental step towards getting libfuzzer working on Windows,
although it still should not be expected to be fully working.

Patch by Marcos Pividori
Differential Revision: https://reviews.llvm.org/D27233

llvm-svn: 288275

7 years ago[LoopUnroll] Implement profile-based loop peeling
Michael Kuperstein [Wed, 30 Nov 2016 21:13:57 +0000 (21:13 +0000)]
[LoopUnroll] Implement profile-based loop peeling

This implements PGO-driven loop peeling.

The basic idea is that when the average dynamic trip-count of a loop is known,
based on PGO, to be low, we can expect a performance win by peeling off the
first several iterations of that loop.
Unlike unrolling based on a known trip count, or a trip count multiple, this
doesn't save us the conditional check and branch on each iteration. However,
it does allow us to simplify the straight-line code we get (constant-folding,
etc.). This is important given that we know that we will usually only hit this
code, and not the actual loop.

This is currently disabled by default.

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

llvm-svn: 288274

7 years ago[InstCombine] allow more narrowing transforms for logic ops
Sanjay Patel [Wed, 30 Nov 2016 20:48:54 +0000 (20:48 +0000)]
[InstCombine] allow more narrowing transforms for logic ops

We had a limited version of this for scalar 'and'; this expands
the transform to 'or' and 'xor' and allows vectors types too.

llvm-svn: 288273

7 years agoProspective MSVC workaround.
John McCall [Wed, 30 Nov 2016 20:46:55 +0000 (20:46 +0000)]
Prospective MSVC workaround.

llvm-svn: 288272

7 years agoRelease memory to OS only when the requested range covers the entire page
Evgeniy Stepanov [Wed, 30 Nov 2016 20:41:59 +0000 (20:41 +0000)]
Release memory to OS only when the requested range covers the entire page

Summary:
The current code was sometimes attempting to release huge chunks of
memory due to undesired RoundUp/RoundDown interaction when the requested
range is fully contained within one memory page.

Reviewers: eugenis

Subscribers: kubabrecka, llvm-commits

Patch by Aleksey Shlyapnikov.

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

llvm-svn: 288271

7 years ago[InstCombine] add tests to show potentially missed logic+trunc transforms; NFC
Sanjay Patel [Wed, 30 Nov 2016 20:20:49 +0000 (20:20 +0000)]
[InstCombine] add tests to show potentially missed logic+trunc transforms; NFC

llvm-svn: 288270

7 years agoFinish adopting ConstantInitBuilder in CGObjCGNU. NFC.
John McCall [Wed, 30 Nov 2016 20:19:46 +0000 (20:19 +0000)]
Finish adopting ConstantInitBuilder in CGObjCGNU.  NFC.

llvm-svn: 288269

7 years agoCODE_OWNERS: Take ownership of Loop Strenght Reduce.
Quentin Colombet [Wed, 30 Nov 2016 19:55:49 +0000 (19:55 +0000)]
CODE_OWNERS: Take ownership of Loop Strenght Reduce.

llvm-svn: 288268

7 years ago[Sema] Teach -Wcast-align to look at the aligned attribute of the
Akira Hatanaka [Wed, 30 Nov 2016 19:42:03 +0000 (19:42 +0000)]
[Sema] Teach -Wcast-align to look at the aligned attribute of the
declared variables.

Teach Sema to check the aligned attribute attached to variable
declarations so that it doesn't issue spurious warnings.

rdar://problem/26517471

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

llvm-svn: 288267

7 years ago[git-llvm] Use --force-interactive when commiting to enable SVN to prompt password
Mehdi Amini [Wed, 30 Nov 2016 19:12:53 +0000 (19:12 +0000)]
[git-llvm] Use --force-interactive when commiting to enable SVN to prompt password

When svn does not know the password and it has to prompt, it needs to query.
However it won't when invoked from the Python script and instead fails with:

svn: E215004: Authentication failed and interactive prompting is disabled; see the --force-interactive option

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

llvm-svn: 288266

7 years agoFix macro check for ABI breacking check: should use #if instead of #ifndef
Mehdi Amini [Wed, 30 Nov 2016 19:08:41 +0000 (19:08 +0000)]
Fix macro check for ABI breacking check: should use #if instead of #ifndef

llvm-svn: 288265

7 years ago[LibFuzzer] Split up some functions among different headers.
Zachary Turner [Wed, 30 Nov 2016 19:06:14 +0000 (19:06 +0000)]
[LibFuzzer] Split up some functions among different headers.

In an effort to get libfuzzer working on Windows, we need to make
a distinction between what functions require platform specific
code (e.g. different code on Windows vs Linux) and what code
doesn't.  IO functions, for example, tend to be platform
specific.

This patch separates out some of the functions which will need
to have platform specific implementations into different headers,
so that we can then provide different implementations for each
platform.

Aside from that, this patch contains no functional change.  It
is purely a re-organization.

Patch by Marcos Pividori
Differential Revision: https://reviews.llvm.org/D27230

llvm-svn: 288264

7 years ago[analyzer] Construct temporary objects of correct types, destroy them properly.
Artem Dergachev [Wed, 30 Nov 2016 19:02:44 +0000 (19:02 +0000)]
[analyzer] Construct temporary objects of correct types, destroy them properly.

When constructing a temporary object region, which represents the result of
MaterializeTemporaryExpr, track down the sub-expression for which the temporary
is necessary with a trick similar to the approach used in CodeGen, namely
by using Expr::skipRValueSubobjectAdjustments().

Then, create the temporary object region with type of that sub-expression.
That type would propagate further in a path-sensitive manner.

During destruction of lifetime-extened temporaries, consult the type of
the temporary object region, rather than the type of the lifetime-extending
variable, in order to call the correct destructor (fixes pr17001) and,
at least, not to crash by trying to call a destructor of a plain type
(fixes pr19539).

rdar://problem/29131302
rdar://problem/29131576

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

llvm-svn: 288263

7 years agoAMDGPU: Move mir tests into mir test directory
Matt Arsenault [Wed, 30 Nov 2016 18:50:26 +0000 (18:50 +0000)]
AMDGPU: Move mir tests into mir test directory

llvm-svn: 288262

7 years ago[InstCombine] update test to use FileCheck and auto-generate checks; NFC
Sanjay Patel [Wed, 30 Nov 2016 18:49:56 +0000 (18:49 +0000)]
[InstCombine] update test to use FileCheck and auto-generate checks; NFC

llvm-svn: 288261

7 years ago[analyzer] SValExplainer: Support ObjC ivars and __block variables.
Artem Dergachev [Wed, 30 Nov 2016 18:26:43 +0000 (18:26 +0000)]
[analyzer] SValExplainer: Support ObjC ivars and __block variables.

Additionally, explain the difference between normal and heap-based
symbolic regions.

llvm-svn: 288260

7 years ago[X86][SSE] Added tests showing missed combines of ANDs with shuffles.
Simon Pilgrim [Wed, 30 Nov 2016 18:15:10 +0000 (18:15 +0000)]
[X86][SSE] Added tests showing missed combines of ANDs with shuffles.

llvm-svn: 288259

7 years ago[clang-tidy] Make format style customizable
Jonas Devlieghere [Wed, 30 Nov 2016 18:06:42 +0000 (18:06 +0000)]
[clang-tidy] Make format style customizable

Summary: I came across an outstanding FIXME to make the format style customizable. Inspired by the include fixer, I added an new option `-style` to configure the fallback style in case no clang-format configuration file is found. The default remains "llvm".

Reviewers: Prazek, aaron.ballman, hokein, alexfh

Subscribers: cfe-commits, malcolm.parsons

Tags: #clang-tools-extra

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

llvm-svn: 288258

7 years ago[analyzer] Minor fixes and improvements to debug.ExprInspection
Artem Dergachev [Wed, 30 Nov 2016 17:57:18 +0000 (17:57 +0000)]
[analyzer] Minor fixes and improvements to debug.ExprInspection

- Fix the bug with transition handling in ExprInspectionChecker's
  checkDeadSymbols implementation.

- Test this bug by adding a new function clang_analyzer_numTimesReached() to
  catch number of passes through the code, which should be handy for testing
  against unintended state splits.

- Add two more functions should help debugging issues quickly without running
  the debugger or dumping exploded graphs - clang_analyzer_dump() which dump()s
  an SVal argument to a warning message, and clang_analyzer_printState(), which
  dump()s the current program state to stderr.

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

llvm-svn: 288257

7 years agoFix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC).
Eugene Zelenko [Wed, 30 Nov 2016 17:48:10 +0000 (17:48 +0000)]
Fix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC).

This preparation to remove SetVector.h dependency on SmallSet.h.

llvm-svn: 288256

7 years ago[scudo] 32-bit and hardware agnostic support
Kostya Kortchinsky [Wed, 30 Nov 2016 17:32:20 +0000 (17:32 +0000)]
[scudo] 32-bit and hardware agnostic support

Summary:
This update introduces i386 support for the Scudo Hardened Allocator, and
offers software alternatives for functions that used to require hardware
specific instruction sets. This should make porting to new architectures
easier.

Among the changes:
- The chunk header has been changed to accomodate the size limitations
  encountered on 32-bit architectures. We now fit everything in 64-bit. This
  was achieved by storing the amount of unused bytes in an allocation rather
  than the size itself, as one can be deduced from the other with the help
  of the GetActuallyAllocatedSize function. As it turns out, this header can
  be used for both 64 and 32 bit, and as such we dropped the requirement for
  the 128-bit compare and exchange instruction support (cmpxchg16b).
- Add 32-bit support for the checksum and the PRNG functions: if the SSE 4.2
  instruction set is supported, use the 32-bit CRC32 instruction, and in the
  XorShift128, use a 32-bit based state instead of 64-bit.
- Add software support for CRC32: if SSE 4.2 is not supported, fallback on a
  software implementation.
- Modify tests that were not 32-bit compliant, and expand them to cover more
  allocation and alignment sizes. The random shuffle test has been deactivated
  for linux-i386 & linux-i686 as the 32-bit sanitizer allocator doesn't
  currently randomize chunks.

Reviewers: alekseyshl, kcc

Subscribers: filcab, llvm-commits, tberghammer, danalbert, srhines, mgorny, modocache

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

llvm-svn: 288255

7 years ago[InstCombine] auto-generate checks for select+bitwise logic tests; NFC
Sanjay Patel [Wed, 30 Nov 2016 17:07:21 +0000 (17:07 +0000)]
[InstCombine] auto-generate checks for select+bitwise logic tests; NFC

llvm-svn: 288254

7 years ago[AArch64] Fix useful bits detection for BFM instructions
Silviu Baranga [Wed, 30 Nov 2016 17:04:22 +0000 (17:04 +0000)]
[AArch64] Fix useful bits detection for BFM instructions

Summary:
When computing useful bits for a BFM instruction, we need
to take into consideration the case where both operands
of the BFM are equal and provide data that we need to track.

Not doing this can cause us to miss useful bits.

Fixes PR31138 (https://llvm.org/bugs/show_bug.cgi?id=31138)

Reviewers: t.p.northover, jmolloy

Subscribers: evandro, gberry, srhines, pirama, mcrosier, aemerson, llvm-commits, rengolin

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

llvm-svn: 288253

7 years ago[WebAssembly] Add llvm-objdump support for wasm file format
Derek Schuff [Wed, 30 Nov 2016 16:49:11 +0000 (16:49 +0000)]
[WebAssembly] Add llvm-objdump support for wasm file format

This is the first part of an effort to add wasm binary
support across all llvm tools.

Patch by Sam Clegg

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

llvm-svn: 288251

7 years ago[X86][SSE] Add support for target shuffle constant folding
Simon Pilgrim [Wed, 30 Nov 2016 16:33:46 +0000 (16:33 +0000)]
[X86][SSE] Add support for target shuffle constant folding

Initial support for target shuffle constant folding in cases where all shuffle inputs are constant. We may be able to relax this and merge shuffles with only some constant inputs in the future.

I've added the helper function getTargetConstantBitsFromNode (based off a similar function in X86ShuffleDecodeConstantPool.cpp) that could be reused for other cases requiring constant vector extraction.

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

llvm-svn: 288250

7 years ago[LibFuzzer] Add macro flags for Posix and Windows.
Zachary Turner [Wed, 30 Nov 2016 16:32:54 +0000 (16:32 +0000)]
[LibFuzzer] Add macro flags for Posix and Windows.

This is the beginning of an effort to get libfuzzer working on
Windows.  This is a NFC to just add some macros for platform
detection on Windows.

Patch by Marcos Pividori
Differential Revision: https://reviews.llvm.org/D27229

llvm-svn: 288249

7 years ago[SelectionDAG] Refactor TargetLowering::expandMUL (NFC)
Nicolai Haehnle [Wed, 30 Nov 2016 16:26:33 +0000 (16:26 +0000)]
[SelectionDAG] Refactor TargetLowering::expandMUL (NFC)

Summary: Further preparation for the expansion of MUL_LOHI added in D24956.

Reviewers: efriedma, RKSimon

Subscribers: llvm-commits

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

llvm-svn: 288248

7 years agoFix handling of consecutive slashes in FileSpec::GetNormalizedPath()
Pavel Labath [Wed, 30 Nov 2016 16:08:45 +0000 (16:08 +0000)]
Fix handling of consecutive slashes in FileSpec::GetNormalizedPath()

The core of the function was actually handling them correctly. However, the
early exit was being too optimistic and did not give the function a chance to
fire if the path did not contain dots as well.

Fix that and add a couple of unit tests.

llvm-svn: 288247

7 years ago[Support] Use HAVE_DLOPEN to guard dlopen(3) usage
Pavel Labath [Wed, 30 Nov 2016 15:34:29 +0000 (15:34 +0000)]
[Support] Use HAVE_DLOPEN to guard dlopen(3) usage

Summary:
The usage was previously guarded by HAVE_DLFCN. This breaks on Android with
LLVM_BUILD_STATIC as the platform does not provide a static version of libdl.
Using HAVE_DLOPEN fixes it as the code will only get used if we are actually able
to link an executable using dlopen.

Reviewers: rafael, beanz

Subscribers: tberghammer, danalbert, llvm-commits

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

llvm-svn: 288246

7 years ago[AArch64] use exact checks; NFC
Sanjay Patel [Wed, 30 Nov 2016 15:00:43 +0000 (15:00 +0000)]
[AArch64] use exact checks; NFC

llvm-svn: 288245

7 years ago[include-fixer] Don't skip repeated lookups in plugin mode.
Benjamin Kramer [Wed, 30 Nov 2016 14:37:40 +0000 (14:37 +0000)]
[include-fixer] Don't skip repeated lookups in plugin mode.

In this mode not all the errors are fixed so it doesn't make sense to
ignore later ones.

llvm-svn: 288244

7 years ago[PowerPC] Preserve machine dominator tree in PPCVSXFMAMutate
Krzysztof Parzyszek [Wed, 30 Nov 2016 13:31:09 +0000 (13:31 +0000)]
[PowerPC] Preserve machine dominator tree in PPCVSXFMAMutate

It is needed by LiveIntervalAnalysis.

llvm-svn: 288243

7 years agoUpdated test with -verify-machineinstrs to check for PR21931
Simon Pilgrim [Wed, 30 Nov 2016 13:21:12 +0000 (13:21 +0000)]
Updated test with -verify-machineinstrs to check for PR21931

llvm-svn: 288242

7 years agoConvert most of the Process class to Timeout<>
Pavel Labath [Wed, 30 Nov 2016 11:56:32 +0000 (11:56 +0000)]
Convert most of the Process class to Timeout<>

This changes most of the class to use the new Timeout class. The one function
left is RunThreadPlan, which I left for a separate change as the function is
massive. A couple of things to call out:
- I've renamed the affected functions to match the listener interface names. This
  should also help catch any places I did not convert at compile time.
- I've deleted the WaitForState function as it was unused.

llvm-svn: 288241

7 years ago[X86][SSE] Add tests demonstrating missed opportunities to combine 64-bit element...
Simon Pilgrim [Wed, 30 Nov 2016 11:30:33 +0000 (11:30 +0000)]
[X86][SSE] Add tests demonstrating missed opportunities to combine 64-bit element unpacks with horizontal pair ops.

llvm-svn: 288240

7 years agoFix OSX build for r288238
Pavel Labath [Wed, 30 Nov 2016 11:09:47 +0000 (11:09 +0000)]
Fix OSX build for r288238

llvm-svn: 288239

7 years agoUse Timeout<> in the Listener class
Pavel Labath [Wed, 30 Nov 2016 10:41:42 +0000 (10:41 +0000)]
Use Timeout<> in the Listener class

Summary:
Communication classes use the Timeout<> class to specify the timeout. Listener
class was converted to chrono some time ago, but it used a different meaning for
a timeout of zero (Listener: infinite wait, Communication: no wait). Instead,
Listener provided separate functions which performed a non-blocking event read.

This converts the Listener class to the new Timeout class, to improve
consistency. It also allows us to get merge the different GetNextEvent*** and
WaitForEvent*** functions into one. No functional change intended.

Reviewers: jingham, clayborg, zturner

Subscribers: lldb-commits

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

llvm-svn: 288238

7 years agoRemove a spurious reference to ProcessElfCore
Pavel Labath [Wed, 30 Nov 2016 10:25:02 +0000 (10:25 +0000)]
Remove a spurious reference to ProcessElfCore

We were referencing a the process class from a register context, which seems
intuitively wrong. Also, the comment above that code is now definitely incorrect,
as ProcessElfCore now does support floating point registers. Also, the code
wasn't really doing anything, as it was just skipping a zero-initialization of a
field that was most likely zero-initialized anyway. Linux elf core FPR test still
passes after this.

llvm-svn: 288237

7 years agoRemove an x86-ism from RegisterInfoInterface
Pavel Labath [Wed, 30 Nov 2016 10:17:58 +0000 (10:17 +0000)]
Remove an x86-ism from RegisterInfoInterface

Summary:
While adding FPR support to x86 elf core files (D26300), we ended up adding a
very x86-specific function to the general RegisterInfoInterface class, which I
didn't catch in review. This removes that function. The only reason we needed
it was to find the offset of the FXSAVE area. This is the same as the offset of
the first register within that area, so we might as well use that.

Reviewers: clayborg, dvlahovski

Subscribers: lldb-commits

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

llvm-svn: 288236

7 years agoApply clang-tidy's 'performance-faster-string-find' check to LLVM.
Benjamin Kramer [Wed, 30 Nov 2016 10:01:11 +0000 (10:01 +0000)]
Apply clang-tidy's 'performance-faster-string-find' check to LLVM.

No functionality change intended.

llvm-svn: 288235

7 years ago[asan] Avoid redundant poisoning checks in __sanitizer_contiguous_container_find_bad_...
Maxim Ostapenko [Wed, 30 Nov 2016 09:11:47 +0000 (09:11 +0000)]
[asan] Avoid redundant poisoning checks in __sanitizer_contiguous_container_find_bad_address.

__sanitizer_contiguous_container_find_bad_address computes three regions of a
container to check for poisoning: begin, middle, end. The issue is that in current
design the first region can be significantly larger than kMaxRangeToCheck.

Proposed patch fixes a typo to calculate the first region properly.

Patch by Ivan Baravy.

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

llvm-svn: 288234

7 years agoRevert 'Test commit as per developer policy'
Jonas Devlieghere [Wed, 30 Nov 2016 08:24:43 +0000 (08:24 +0000)]
Revert 'Test commit as per developer policy'

llvm-svn: 288233

7 years agoTest commit as per developer policy
Jonas Devlieghere [Wed, 30 Nov 2016 08:06:23 +0000 (08:06 +0000)]
Test commit as per developer policy

llvm-svn: 288232

7 years agoProspective GCC build fix: the unelaborated form of this friend
John McCall [Wed, 30 Nov 2016 04:18:19 +0000 (04:18 +0000)]
Prospective GCC build fix: the unelaborated form of this friend
declaration should find the right type, assuming it's supported
evenly across all our hosts.

llvm-svn: 288231

7 years agomake -fprofile-instr-generate and -fprofile-instr-use work with clang-cl
Bob Haarman [Wed, 30 Nov 2016 03:25:36 +0000 (03:25 +0000)]
make -fprofile-instr-generate and -fprofile-instr-use work with clang-cl

Summary: Makes -fprofile-instr-generate and -fprofile-instr-use work
with clang-cl so that profile-guided optimization can be used.

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

llvm-svn: 288230

7 years agoSwitch CGObjCMac to use ConstantInitBuilder. Whew.
John McCall [Wed, 30 Nov 2016 02:39:18 +0000 (02:39 +0000)]
Switch CGObjCMac to use ConstantInitBuilder.  Whew.

Not strictly NFC because I did change the order of emission of
some global constants, but it shouldn't make any difference.

llvm-svn: 288229

7 years agoChange how we manage groups in ICF.
Rui Ueyama [Wed, 30 Nov 2016 01:50:03 +0000 (01:50 +0000)]
Change how we manage groups in ICF.

Previously, on each iteration in ICF, we scan the entire vector of
input sections to find boundaries of groups having the same ID.

This patch changes the algorithm so that we now have a vector of ranges.
Each range contains a starting index and an ending index of the group.
So we no longer have to search boundaries on each iteration.

Performance-wise, this seems neutral. Instead of searching boundaries,
we now have to maintain ranges. But I think this is more readable
than the previous implementation.

Moreover, this makes easy to parallelize the main loop of ICF,
which I'll do in a follow-up patch.

llvm-svn: 288228

7 years agoFix -Winconsistent-missing-override in CodeGenAction.cpp
Reid Kleckner [Wed, 30 Nov 2016 01:32:53 +0000 (01:32 +0000)]
Fix -Winconsistent-missing-override in CodeGenAction.cpp

llvm-svn: 288227

7 years agoRevert "[GVN] Basic optimization remark support"
Adam Nemet [Wed, 30 Nov 2016 01:14:35 +0000 (01:14 +0000)]
Revert "[GVN] Basic optimization remark support"

This reverts commit r288210.

The failure on the stage2 LTO build is back.

llvm-svn: 288226

7 years ago[RuntimeDyld] Skip undefined symbols when building the symbol table.
Lang Hames [Wed, 30 Nov 2016 01:12:07 +0000 (01:12 +0000)]
[RuntimeDyld] Skip undefined symbols when building the symbol table.

Storing these in the symbol table (with zero values) is just wasted space.

llvm-svn: 288225

7 years ago[asan] Allow re-exec in instrumented unit tests on Darwin (fix unit tests on macOS...
Kuba Mracek [Wed, 30 Nov 2016 00:46:04 +0000 (00:46 +0000)]
[asan] Allow re-exec in instrumented unit tests on Darwin (fix unit tests on macOS <=10.10)

This fixes https://llvm.org/bugs/show_bug.cgi?id=30285. On macOS 10.10 and lower, instrumented unit tests still need to be able to re-exec to make interceptors work.

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

llvm-svn: 288224

7 years agoFix formatting issue from r288207
Hans Wennborg [Wed, 30 Nov 2016 00:31:39 +0000 (00:31 +0000)]
Fix formatting issue from r288207

llvm-svn: 288223

7 years agoGive this test that uses Itanium mangling a triple
Reid Kleckner [Wed, 30 Nov 2016 00:31:16 +0000 (00:31 +0000)]
Give this test that uses Itanium mangling a triple

llvm-svn: 288222

7 years agoStop handling interesting deserialized decls after HandleTranslationUnit
Reid Kleckner [Wed, 30 Nov 2016 00:25:36 +0000 (00:25 +0000)]
Stop handling interesting deserialized decls after HandleTranslationUnit

Other AST consumers can deserialize interesting decls that we might
codegen, but they won't make it to the final object file and can trigger
assertions in debug information generation after finalization.

llvm-svn: 288221

7 years ago[c++1z] Improve support for -fno-exceptions: we can't just ignore exception
Richard Smith [Wed, 30 Nov 2016 00:13:55 +0000 (00:13 +0000)]
[c++1z] Improve support for -fno-exceptions: we can't just ignore exception
specifications in this mode in C++17, since they're part of the function type,
so check and diagnose them like we would if exceptions were enabled.

Better ideas welcome.

llvm-svn: 288220

7 years ago[PowerPC] Improvements for BUILD_VECTOR Vol. 2
Nemanja Ivanovic [Tue, 29 Nov 2016 23:57:54 +0000 (23:57 +0000)]
[PowerPC] Improvements for BUILD_VECTOR Vol. 2

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

This patch adds support for converting a vector of loads into a single load if
the loads are consecutive (in either direction).

llvm-svn: 288219

7 years ago[PowerPC] Improvements for BUILD_VECTOR Vol. 2
Nemanja Ivanovic [Tue, 29 Nov 2016 23:36:03 +0000 (23:36 +0000)]
[PowerPC] Improvements for BUILD_VECTOR Vol. 2

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

This is the 2nd patch in a series of 4 that improve the lowering and combining
for BUILD_VECTOR nodes on PowerPC. This particular patch combines a build vector
of fp-to-int conversions into an fp-to-int conversion of a build vector of fp
values. For example:
Converts (build_vector (fp_to_[su]i $A), (fp_to_[su]i $B), ...)
Into (fp_to_[su]i (build_vector $A, $B, ...))).
Which is a natural match for much cleaner code.

llvm-svn: 288218

7 years agoAdd another missing dependency.
Peter Collingbourne [Tue, 29 Nov 2016 23:22:55 +0000 (23:22 +0000)]
Add another missing dependency.

llvm-svn: 288217

7 years agoRevert r288212 due to lldb failure.
Paul Robinson [Tue, 29 Nov 2016 23:20:35 +0000 (23:20 +0000)]
Revert r288212 due to lldb failure.

llvm-svn: 288216

7 years ago[lanai] Manually match 0/-1 with R0/R1.
Jacques Pienaar [Tue, 29 Nov 2016 23:01:09 +0000 (23:01 +0000)]
[lanai] Manually match 0/-1 with R0/R1.

Summary: Previously 0 and -1 was matched via tablegen rules. But this could cause problems where a physical register was being used where a virtual register was expected (seen in optimizeSelect and TwoAddressInstructionPass). Instead follow AArch64 and match in DAGToDAGISel.

Reviewers: eliben, majnemer

Subscribers: llvm-commits, aemerson

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

llvm-svn: 288215

7 years agoRevert https://reviews.llvm.org/rL287679
Nemanja Ivanovic [Tue, 29 Nov 2016 23:00:33 +0000 (23:00 +0000)]
Revert https://reviews.llvm.org/rL287679

This commit caused some miscompiles that did not show up on any of the bots.
Reverting until we can investigate the cause of those failures.

llvm-svn: 288214

7 years agoFix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC).
Eugene Zelenko [Tue, 29 Nov 2016 22:44:24 +0000 (22:44 +0000)]
Fix some Clang-tidy and Include What You Use warnings; other minor fixes (NFC).

This preparation to remove SetVector.h dependency on SmallSet.h.

llvm-svn: 288213

7 years agoEmit 'no line' information for interesting 'orphan' instructions.
Paul Robinson [Tue, 29 Nov 2016 22:41:16 +0000 (22:41 +0000)]
Emit 'no line' information for interesting 'orphan' instructions.

DWARF specifies that "line 0" really means "no appropriate source
location" in the line table.  Use this for branch targets and some
other cases that have no specified source location, to prevent
inheriting unfortunate line numbers from physically preceding
instructions (which might be from completely unrelated source).

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

llvm-svn: 288212

7 years ago[X86][AVX512VL] Improved testing of vcvtpd2ps, vcvtpd2dq/vcvtpd2udq and vcvttpd2dq...
Simon Pilgrim [Tue, 29 Nov 2016 22:38:30 +0000 (22:38 +0000)]
[X86][AVX512VL] Improved testing of vcvtpd2ps, vcvtpd2dq/vcvtpd2udq and vcvttpd2dq/vcvttpd2udq implicit zeroing of upper 64-bits of xmm result

Ensure that masked instruction doesn't assume implicit zeroing.

llvm-svn: 288211

7 years ago[GVN] Basic optimization remark support
Adam Nemet [Tue, 29 Nov 2016 22:37:01 +0000 (22:37 +0000)]
[GVN] Basic optimization remark support

[recommiting patches one-by-one to see which breaks the stage2 LTO bot]

Follow-on patches will add more interesting cases.

The goal of this patch-set is to get the GVN messages printed in
opt-viewer from Dhrystone as was presented in my Dev Meeting talk.  This
is the optimization view for the function (the last remark in the
function has a bug which is fixed in this series):
http://lab.llvm.org:8080/artifacts/opt-view_test-suite/build/SingleSource/Benchmarks/Dhrystone/CMakeFiles/dry.dir/html/_org_test-suite_SingleSource_Benchmarks_Dhrystone_dry.c.html#L430

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

llvm-svn: 288210

7 years ago[X86][AVX512DQVL] Improved testing of vcvtqq2ps/vcvtuqq2ps implicit zeroing of upper...
Simon Pilgrim [Tue, 29 Nov 2016 22:36:28 +0000 (22:36 +0000)]
[X86][AVX512DQVL] Improved testing of vcvtqq2ps/vcvtuqq2ps implicit zeroing of upper 64-bits of xmm result

Ensure that masked instruction doesn't assume implicit zeroing.

llvm-svn: 288209

7 years ago[c++1z] PR31210: ignore exception specification when matching the type of a
Richard Smith [Tue, 29 Nov 2016 22:32:05 +0000 (22:32 +0000)]
[c++1z] PR31210: ignore exception specification when matching the type of a
builtin with the type of an explicit declaration of the same function.

llvm-svn: 288208

7 years agoDon't try to merge DLL attributes on redeclaration of invalid decl (PR31069)
Hans Wennborg [Tue, 29 Nov 2016 22:31:00 +0000 (22:31 +0000)]
Don't try to merge DLL attributes on redeclaration of invalid decl (PR31069)

llvm-svn: 288207

7 years ago[AArch64] allow and-not-compare transform to form 'bics'
Sanjay Patel [Tue, 29 Nov 2016 22:28:58 +0000 (22:28 +0000)]
[AArch64] allow and-not-compare transform to form 'bics'

This target hook was added with D19087:
https://reviews.llvm.org/D19087

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

llvm-svn: 288206

7 years agoAdd documentation for the PDB Module Info stream.
Zachary Turner [Tue, 29 Nov 2016 22:14:56 +0000 (22:14 +0000)]
Add documentation for the PDB Module Info stream.

llvm-svn: 288205

7 years ago[Profile] Fix value profiler eviction bug
Xinliang David Li [Tue, 29 Nov 2016 22:00:54 +0000 (22:00 +0000)]
[Profile] Fix value profiler eviction bug

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

llvm-svn: 288204