platform/upstream/llvm.git
8 years ago[InstCombine] auto-generate checks
Sanjay Patel [Tue, 25 Oct 2016 00:41:00 +0000 (00:41 +0000)]
[InstCombine] auto-generate checks

llvm-svn: 285045

8 years ago[WebAssembly] Reorder load/store operands to match binary encoding.
Dan Gohman [Tue, 25 Oct 2016 00:17:11 +0000 (00:17 +0000)]
[WebAssembly] Reorder load/store operands to match binary encoding.

The p2align operand of a load/store is encoded before the offset
operand; reorder the MachineInstr operands accordingly.

llvm-svn: 285044

8 years ago[llvm-cov] Do not print out the filename of the object file
Vedant Kumar [Tue, 25 Oct 2016 00:08:33 +0000 (00:08 +0000)]
[llvm-cov] Do not print out the filename of the object file

When we load coverage data from multiple objects, we don't have a way to
attribute a source object to a function record. Printing out the object
filename next to the source filename is already not very useful: soon,
it'll actually become misleading. Stop printing out the filename now.

llvm-svn: 285043

8 years agoAdd dependency from clangCodeGen to clangAnalysis
Mehdi Amini [Mon, 24 Oct 2016 23:38:32 +0000 (23:38 +0000)]
Add dependency from clangCodeGen to clangAnalysis

This is unbreaking the build with shared library after r285019.

llvm-svn: 285042

8 years agotest/CodeGen/builtins.c: reinstate #ifdef __x86_64__ around __builtin_longjmp
Mehdi Amini [Mon, 24 Oct 2016 23:38:24 +0000 (23:38 +0000)]
test/CodeGen/builtins.c: reinstate #ifdef __x86_64__ around __builtin_longjmp

Unadvertently removed in r285019

llvm-svn: 285041

8 years ago[WebAssembly] Implement more WebAssembly binary encoding.
Dan Gohman [Mon, 24 Oct 2016 23:27:49 +0000 (23:27 +0000)]
[WebAssembly] Implement more WebAssembly binary encoding.

This changes locals from being declared by the emitLocal hook in
WebAssemblyTargetStreamer, rather than with an instruction. After exploring
the infastructure in LLVM more, this seems to make more sense since
declaring locals doesn't use an encoded opcode.

This also adds more 0xd opcodes, type encodings, and miscellaneous
binary encoding bits.

llvm-svn: 285040

8 years agoCodeGen/Passes: Pass MachineFunction as functor arg; NFC
Matthias Braun [Mon, 24 Oct 2016 23:23:02 +0000 (23:23 +0000)]
CodeGen/Passes: Pass MachineFunction as functor arg; NFC

Passing a MachineFunction as argument is more natural and avoids an
unnecessary round-trip through the logic determining the correct
Subtarget because MachineFunction already has a reference anyway.

llvm-svn: 285039

8 years ago[Basic] Support 32-bit x86 and ARM targets for Fuchsia
Petr Hosek [Mon, 24 Oct 2016 22:55:57 +0000 (22:55 +0000)]
[Basic] Support 32-bit x86 and ARM targets for Fuchsia

Fuchsia has experimental support for 32-bit x86 and ARM targets, add
them to the list of supported targets.

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

llvm-svn: 285038

8 years agoLink clangCodeGen with clangAnalysis required after r284990.
Artem Belevich [Mon, 24 Oct 2016 22:52:39 +0000 (22:52 +0000)]
Link clangCodeGen with clangAnalysis required after r284990.

Fixes build break for configurations that use shared libraries.

llvm-svn: 285037

8 years ago[InstCombine] regenerate some checks
Sanjay Patel [Mon, 24 Oct 2016 22:50:26 +0000 (22:50 +0000)]
[InstCombine] regenerate some checks

llvm-svn: 285036

8 years agocmake: Rename installhdrs to install-llvm-headers and fix the dependencies
Justin Bogner [Mon, 24 Oct 2016 21:58:58 +0000 (21:58 +0000)]
cmake: Rename installhdrs to install-llvm-headers and fix the dependencies

The installhdrs target was inconsistently named and would behave
differently depending on whether or not you ran a build first. This
renames it to install-llvm-headers to match other target names and
adds a dependency on intrinsics_gen so that it will always install the
same set of things.

llvm-svn: 285035

8 years agoFix regression from my recent GlobalsAA fix.
Eli Friedman [Mon, 24 Oct 2016 21:47:44 +0000 (21:47 +0000)]
Fix regression from my recent GlobalsAA fix.

There are two fixes here: one, AnalyzeUsesOfPointer can't return
false until it has checked all the uses of the pointer. Two, if a
global uses another global, we have to assume the address of the
first global escapes.

Fixes https://llvm.org/bugs/show_bug.cgi?id=30707 .

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

llvm-svn: 285034

8 years ago[SelectionDAG] Update ComputeNumSignBits SRA/SHL handlers to accept scalar or vector...
Simon Pilgrim [Mon, 24 Oct 2016 21:47:19 +0000 (21:47 +0000)]
[SelectionDAG] Update ComputeNumSignBits SRA/SHL handlers to accept scalar or vector splats

Use isConstOrConstSplat helper.

Also use APInt instead of getZExtValue directly to avoid out of range issues.

llvm-svn: 285033

8 years agoremove xfail from TestObjCNewSyntax.py test_expr_gmodules()
Todd Fiala [Mon, 24 Oct 2016 21:46:46 +0000 (21:46 +0000)]
remove xfail from TestObjCNewSyntax.py test_expr_gmodules()

Fixes:
rdar://27792848

llvm-svn: 285032

8 years ago[Sema][ObjC] Warn about implicitly autoreleasing out-parameters captured
Akira Hatanaka [Mon, 24 Oct 2016 21:45:54 +0000 (21:45 +0000)]
[Sema][ObjC] Warn about implicitly autoreleasing out-parameters captured
by blocks.

Add a new warning "-Wblock-capture-autoreleasing". The warning warns
about implicitly autoreleasing out-parameters captured by blocks which
can introduce use-after-free bugs that are hard to debug.

rdar://problem/15377548

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

llvm-svn: 285031

8 years agocmake: Make /usr/share/cmake installable with LLVM_DISTRIBUTION_COMPONENTS
Justin Bogner [Mon, 24 Oct 2016 21:40:15 +0000 (21:40 +0000)]
cmake: Make /usr/share/cmake installable with LLVM_DISTRIBUTION_COMPONENTS

Add a cmake-exports install component and appropriate targets for
LLVM_DISTRIBUTION_COMPONENTS to work with.

llvm-svn: 285030

8 years agoUse MachineInstr::mop_iterator instead of MIOperands; NFC
Matthias Braun [Mon, 24 Oct 2016 21:36:43 +0000 (21:36 +0000)]
Use MachineInstr::mop_iterator instead of MIOperands; NFC

(Const)?MIOperands is equivalent to the C++ style
MachineInstr::mop_iterator. Use the latter for consistency except for a
few callers of MIOperands::analyzePhysReg().

llvm-svn: 285029

8 years agoCodeGen: remove incorrect temporary Twine
Saleem Abdulrasool [Mon, 24 Oct 2016 21:25:57 +0000 (21:25 +0000)]
CodeGen: remove incorrect temporary Twine

Twines should not be stack allocated.  This somehow managed to get past me.

llvm-svn: 285028

8 years agoFix test on non-X86 platforms
Mehdi Amini [Mon, 24 Oct 2016 21:22:01 +0000 (21:22 +0000)]
Fix test on non-X86 platforms

This is a fixup for r285019, adding an `#ifdef __x86_64__` since
the os_log builtin is platform specific.

llvm-svn: 285027

8 years agonother additional error check for an invalid Mach-O file
Kevin Enderby [Mon, 24 Oct 2016 21:15:11 +0000 (21:15 +0000)]
nother additional error check for an invalid Mach-O file
when contained in a Mach-O universal file and the
cputypes in both headers don’t match.

llvm-svn: 285026

8 years agoUse SDValue::getConstantOperandVal() helper. NFCI.
Simon Pilgrim [Mon, 24 Oct 2016 20:56:52 +0000 (20:56 +0000)]
Use SDValue::getConstantOperandVal() helper. NFCI.

llvm-svn: 285025

8 years ago[pbqp] unique_ptr-ify (Vector|Matrix)::Data, NFC.
Vedant Kumar [Mon, 24 Oct 2016 20:51:46 +0000 (20:51 +0000)]
[pbqp] unique_ptr-ify (Vector|Matrix)::Data, NFC.

Suggested by David Blaikie.

llvm-svn: 285024

8 years agoCodeGen: centralise label construction for method lists
Saleem Abdulrasool [Mon, 24 Oct 2016 20:47:58 +0000 (20:47 +0000)]
CodeGen: centralise label construction for method lists

Move all the label construction for the various method list emission into
EmitMethodList.  Rather than have all the names be constructed in pieces in all
of the callers of EmitMethodList, have this occur in one site.  This also makes
the calls much easier to understand as we simplify identify the type of the
method list being emitted and the interface name for which it is being emitted.
NFC.

llvm-svn: 285023

8 years agoFix bug where one of the cases where we mangle a <bare-unresolved-name> failed
Richard Smith [Mon, 24 Oct 2016 20:47:04 +0000 (20:47 +0000)]
Fix bug where one of the cases where we mangle a <bare-unresolved-name> failed
to emit the <template-args> portion. Refactor so that mangleUnresolvedName
actually emits the entire <unresolved-name>, so this mistake is harder to make
again.

llvm-svn: 285022

8 years agoELF: Simplify handling of *_start/*_end symbols.
Peter Collingbourne [Mon, 24 Oct 2016 20:46:21 +0000 (20:46 +0000)]
ELF: Simplify handling of *_start/*_end symbols.

We were previously using the (static) addSynthetic function to create
*_start/*_end symbols. This function was doing almost the same thing as
addOptionalSynthetic, except that it would also create the symbol in the
case where it is unreferenced. Because the symbol has hidden visibility,
creating it in that case would have no effect other than adding another
entry to the static symbol table. Remove addSynthetic and change callers to
use addOptionalSynthetic instead.

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

llvm-svn: 285021

8 years agoFix non-portable tests for temp_directory_path(...)
Eric Fiselier [Mon, 24 Oct 2016 20:40:35 +0000 (20:40 +0000)]
Fix non-portable tests for temp_directory_path(...)

llvm-svn: 285020

8 years agoAdd support for __builtin_os_log_format[_buffer_size]
Mehdi Amini [Mon, 24 Oct 2016 20:39:34 +0000 (20:39 +0000)]
Add support for __builtin_os_log_format[_buffer_size]

This reverts commit r285007 and reapply r284990, with a fix for the
opencl test that I broke. Original commit message follows:

These new builtins support a mechanism for logging OS events, using a
printf-like format string to specify the layout of data in a buffer.
The _buffer_size version of the builtin can be used to determine the size
of the buffer to allocate to hold the data, and then __builtin_os_log_format
can write data into that buffer. This implements format checking to report
mismatches between the format string and the data arguments. Most of this
code was written by Chris Willmore.

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

llvm-svn: 285019

8 years ago[pbqp] Delete some dead code, NFC.
Vedant Kumar [Mon, 24 Oct 2016 20:35:35 +0000 (20:35 +0000)]
[pbqp] Delete some dead code, NFC.

I took the opportunity to replace some copy|move constructors|assignment
operators with default implementations.

As a follow-up, I plan on threading unique_ptr<T []> through a few areas
per David Blaikie's advice.

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

llvm-svn: 285018

8 years ago[WebAssembly] Fix a broken URL.
Dan Gohman [Mon, 24 Oct 2016 20:35:17 +0000 (20:35 +0000)]
[WebAssembly] Fix a broken URL.

llvm-svn: 285017

8 years ago[WebAssembly] Define the `end` opcode value.
Dan Gohman [Mon, 24 Oct 2016 20:32:04 +0000 (20:32 +0000)]
[WebAssembly] Define the `end` opcode value.

CFGStackify differentiates between END_LOOP and END_BLOCK, but wasm
itself doesn't. For now, just use the same opcode for both.

llvm-svn: 285016

8 years agoFix mangling of implicit calls to operator-> to only include a single "pt",
Richard Smith [Mon, 24 Oct 2016 20:29:40 +0000 (20:29 +0000)]
Fix mangling of implicit calls to operator-> to only include a single "pt",
rather than including an extra one for each level of 'operator->()' invoked.

llvm-svn: 285015

8 years ago[WebAssembly] Update opcode values according to recent spec changes.
Dan Gohman [Mon, 24 Oct 2016 20:21:49 +0000 (20:21 +0000)]
[WebAssembly] Update opcode values according to recent spec changes.

This corresponds to the "0xd" opcode renumbering.

llvm-svn: 285014

8 years agoscripts: Document existing problems with the symbolizer build script.
Peter Collingbourne [Mon, 24 Oct 2016 20:15:39 +0000 (20:15 +0000)]
scripts: Document existing problems with the symbolizer build script.

Reviewers: eugenis, vitalybuka

Subscribers: llvm-commits, kubabrecka

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

llvm-svn: 285013

8 years agoAdd missing include in string_view tests. Patch from Billy ONeil @ microsoft
Eric Fiselier [Mon, 24 Oct 2016 20:11:17 +0000 (20:11 +0000)]
Add missing include in string_view tests. Patch from Billy ONeil @ microsoft

llvm-svn: 285012

8 years agoFix shadow warnings in string_view tests. Patch from STL@microsoft.com
Eric Fiselier [Mon, 24 Oct 2016 20:10:00 +0000 (20:10 +0000)]
Fix shadow warnings in string_view tests. Patch from STL@microsoft.com

llvm-svn: 285011

8 years ago[compiler-rt] moved __asan_schedule_unregister_globals out of anonymous namespace
Bob Haarman [Mon, 24 Oct 2016 19:56:18 +0000 (19:56 +0000)]
[compiler-rt] moved __asan_schedule_unregister_globals out of anonymous namespace

Summary: Newer versions of clang complain that __asan_schedule_unregister_globals is unused. Moving it outside the anonymous namespace gets rid of that warning.

Reviewers: rnk, timurrrr

Subscribers: kubabrecka, dberris

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

llvm-svn: 285010

8 years ago[WebAssembly] Add an option to make get_local/set_local explicit.
Dan Gohman [Mon, 24 Oct 2016 19:49:43 +0000 (19:49 +0000)]
[WebAssembly] Add an option to make get_local/set_local explicit.

This patch adds a pass, controlled by an option and off by default for
now, for making implicit get_local/set_local explicit. This simplifies
emitting wasm with MC.

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

llvm-svn: 285009

8 years agoMerge two if conditions into one. NFCI.
Davide Italiano [Mon, 24 Oct 2016 19:41:47 +0000 (19:41 +0000)]
Merge two if conditions into one. NFCI.

llvm-svn: 285008

8 years agoRevert "Add support for __builtin_os_log_format[_buffer_size]"
Mehdi Amini [Mon, 24 Oct 2016 19:41:36 +0000 (19:41 +0000)]
Revert "Add support for __builtin_os_log_format[_buffer_size]"

This reverts commit r284990, two opencl test are broken

llvm-svn: 285007

8 years agoTarget: Change various section classifiers in TargetLoweringObjectFile to take a...
Peter Collingbourne [Mon, 24 Oct 2016 19:23:39 +0000 (19:23 +0000)]
Target: Change various section classifiers in TargetLoweringObjectFile to take a GlobalObject.

These functions are about classifying a global which will actually be
emitted, so it does not make sense for them to take a GlobalValue which may
for example be an alias.

Change the Mach-O object writer and the Hexagon, Lanai and MIPS backends to
look through aliases before using TargetLoweringObjectFile interfaces. These
are functional changes but all appear to be bug fixes.

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

llvm-svn: 285006

8 years ago[x86] add tests for {-1,0,1} select of constants
Sanjay Patel [Mon, 24 Oct 2016 19:13:29 +0000 (19:13 +0000)]
[x86] add tests for {-1,0,1} select of constants

llvm-svn: 285005

8 years ago[asan] relax strstr tests.
Tim Northover [Mon, 24 Oct 2016 19:07:27 +0000 (19:07 +0000)]
[asan] relax strstr tests.

Darwin's implementation of strstr seems to trigger slightly different failure
modes from Linux since it calls strncmp. All messages seem about equally useful
and correct, so I relaxed the tests so Darwin can pass.

llvm-svn: 285004

8 years ago[llvm] Remove redundant --check-prefix=CHECK from tests
Mandeep Singh Grang [Mon, 24 Oct 2016 18:57:55 +0000 (18:57 +0000)]
[llvm] Remove redundant --check-prefix=CHECK from tests

Reviewers: MatzeB, mcrosier, rengolin

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

llvm-svn: 285003

8 years agoCodeGen: Do not add a global's address space to the folding set profile.
Peter Collingbourne [Mon, 24 Oct 2016 18:56:09 +0000 (18:56 +0000)]
CodeGen: Do not add a global's address space to the folding set profile.

It is already part of the type (which is part of the global, which is already
being added), so there's no need to do it.

llvm-svn: 285002

8 years ago[clang] Remove redundant --check-prefix=CHECK from tests
Mandeep Singh Grang [Mon, 24 Oct 2016 18:53:43 +0000 (18:53 +0000)]
[clang] Remove redundant --check-prefix=CHECK from tests

Reviewers: mkuper, rengolin, hans

Subscribers: cfe-commits

Tags: #clang-c

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

llvm-svn: 285001

8 years ago[analyzer] Use unsigned integers to rely on well-defined overflow semantics.
Artem Dergachev [Mon, 24 Oct 2016 18:49:04 +0000 (18:49 +0000)]
[analyzer] Use unsigned integers to rely on well-defined overflow semantics.

Found by the UBSan buildbot.

llvm-svn: 285000

8 years agoFix crash if StmtProfile finds a type-dependent member access for which we have
Richard Smith [Mon, 24 Oct 2016 18:47:04 +0000 (18:47 +0000)]
Fix crash if StmtProfile finds a type-dependent member access for which we have
resolved the -> to a call to a specific operator-> function. The particular
test case added here is actually being mishandled: the implicit member access
should not be type-dependent (because it's accessing a non-type-dependent
member of the current instantiation), but calls to a type-dependent operator->
that is a member of the current instantiation would be liable to hit the same
codepath.

llvm-svn: 284999

8 years agoadd-discriminators: Fix handling of lexical scopes.
Adrian Prantl [Mon, 24 Oct 2016 18:23:51 +0000 (18:23 +0000)]
add-discriminators: Fix handling of lexical scopes.

This fixes a bug in the handling of lexical scopes, when more than one
scope is defined on the same line or functions are inlined into call
sites that are on the same line as the function definition. This
situation can easily happen in macro expansions.

The problem is solved by introducing a SmallDenseMap<DIScope *,
DILexicalBlockFile *, 1> that keeps track of all the different lexical
scopes that share a line/file location.

Fixes PR30681.

llvm-svn: 284998

8 years agoClarify that MSVC is not the issue here anymore.
Benjamin Kramer [Mon, 24 Oct 2016 18:11:05 +0000 (18:11 +0000)]
Clarify that MSVC is not the issue here anymore.

llvm-svn: 284997

8 years agoRevert r284972 and remove other defaulted copy/move constructors/=
Krzysztof Parzyszek [Mon, 24 Oct 2016 17:40:46 +0000 (17:40 +0000)]
Revert r284972 and remove other defaulted copy/move constructors/=

David Blaikie pointed out that we get them for free without having to
write anything.

llvm-svn: 284996

8 years ago[PPC] Generate positive FP zero using xor insn instead of loading from constant area
Ehsan Amiri [Mon, 24 Oct 2016 17:31:09 +0000 (17:31 +0000)]
[PPC] Generate positive FP zero using xor insn instead of loading from constant area

https://reviews.llvm.org/D23614

Currently we load +0.0 from constant area. That can change to be generated using
XOR instruction.

llvm-svn: 284995

8 years agoReleaseNotes: mention new compiler requirements
Hans Wennborg [Mon, 24 Oct 2016 17:29:52 +0000 (17:29 +0000)]
ReleaseNotes: mention new compiler requirements

llvm-svn: 284994

8 years agoRevert r284580+r284917. ("Synthesize TBB/TBH instructions")
Eli Friedman [Mon, 24 Oct 2016 17:20:50 +0000 (17:20 +0000)]
Revert r284580+r284917. ("Synthesize TBB/TBH instructions")

The optimization has correctness issues, so reverting for now to fix tests
on thumb1 targets.

llvm-svn: 284993

8 years ago[clang-tidy] Fix identifier naming in macro args.
Jason Henline [Mon, 24 Oct 2016 17:20:32 +0000 (17:20 +0000)]
[clang-tidy] Fix identifier naming in macro args.

Summary:
clang-tidy should fix identifier naming even when the identifier is
referenced inside a macro expansion, provided that the identifier enters
the macro expansion completely within a macro argument.

For example, this will allow fixes to the naming of the identifier
'global' when it is declared and used as follows:

  int global;
  #define USE_IN_MACRO(m) auto use_##m = m
  USE_IN_MACRO(global);

Reviewers: alexfh

Subscribers: jlebar, cfe-commits

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

llvm-svn: 284992

8 years agoRemoved FIXME from include ordering comment
Simon Pilgrim [Mon, 24 Oct 2016 17:15:05 +0000 (17:15 +0000)]
Removed FIXME from include ordering comment

Nothing to fix, it's just the way it has to be.

llvm-svn: 284991

8 years agoAdd support for __builtin_os_log_format[_buffer_size]
Mehdi Amini [Mon, 24 Oct 2016 16:56:23 +0000 (16:56 +0000)]
Add support for __builtin_os_log_format[_buffer_size]

These new builtins support a mechanism for logging OS events, using a
printf-like format string to specify the layout of data in a buffer.
The _buffer_size version of the builtin can be used to determine the size
of the buffer to allocate to hold the data, and then __builtin_os_log_format
can write data into that buffer. This implements format checking to report
mismatches between the format string and the data arguments. Most of this
code was written by Chris Willmore.

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

llvm-svn: 284990

8 years agoCheck the number of Args in LibCallsShrinkWrap.
Rong Xu [Mon, 24 Oct 2016 16:50:12 +0000 (16:50 +0000)]
Check the number of Args in LibCallsShrinkWrap.

Some library fucntions can have no argument.

llvm-svn: 284989

8 years agoFix clang-format vim integration issue with non-ascii characters
Alexander Kornienko [Mon, 24 Oct 2016 16:31:26 +0000 (16:31 +0000)]
Fix clang-format vim integration issue with non-ascii characters

clang-format.py currently seems to treat vim.current.buf as ascii-encoded data,
which leads to an UnicodeDecodeError when trying to format any text containing
non-ascii characters:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File ".../tools/clang/tools/clang-format/clang-format.py", line 110, in <module>
    main()
  File ".../tools/clang/tools/clang-format/clang-format.py", line 87, in main
    stdout, stderr = p.communicate(input=text.encode(encoding))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 3996: ordinal not in range(128)

llvm-svn: 284988

8 years agoUse shorter names in TestConcurrentEvents tests
Pavel Labath [Mon, 24 Oct 2016 16:20:43 +0000 (16:20 +0000)]
Use shorter names in TestConcurrentEvents tests

Otherwise, they tend to generate filename too long errors.

They already contain the same test name in the directory, file, and class names,
so no information is really lost here.

llvm-svn: 284987

8 years ago[AArch64] Optionally use the Newton series for reciprocal estimation
Evandro Menezes [Mon, 24 Oct 2016 16:14:58 +0000 (16:14 +0000)]
[AArch64] Optionally use the Newton series for reciprocal estimation

Add support for estimating the square root or its reciprocal and division or
reciprocal using the combiner generic Newton series.

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

llvm-svn: 284986

8 years ago[ADT] static_assert that SmallDenseMap is instantiated with a power-of-two number...
Justin Lebar [Mon, 24 Oct 2016 16:06:53 +0000 (16:06 +0000)]
[ADT] static_assert that SmallDenseMap is instantiated with a power-of-two number of inline buckets.

Summary:
If you try to instantiate it with a non-power-of-two buckets, DenseMap
will assert at runtime (!) if we ever outgrow our inline storage.

I believe using a constexpr function inside of a static_assert is safe
now that we've unsupported MSVC 2013 and GCC < 4.8.

Reviewers: bkramer, qcolombet, escha

Subscribers: llvm-commits

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

llvm-svn: 284985

8 years ago[EarlyCSE] Optimize MemoryPhis and reduce memory clobber queries w/ MemorySSA
Geoff Berry [Mon, 24 Oct 2016 15:54:00 +0000 (15:54 +0000)]
[EarlyCSE] Optimize MemoryPhis and reduce memory clobber queries w/ MemorySSA

Summary:
When using MemorySSA, re-optimize MemoryPhis when removing a store since
this may create MemoryPhis with all identical arguments.

Also, when using MemorySSA to check if two MemoryUses are reading from
the same version of the heap, use the defining access instead of calling
getClobberingAccess, since the latter can currently result in many more
AA calls.  Once the MemorySSA use optimization tracking changes are
done, we can remove this limitation, which should result in more loads
being CSE'd.

Reviewers: dberlin

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 284984

8 years ago[PPC] Better codegen for AND, ANY_EXT, SRL sequence
Ehsan Amiri [Mon, 24 Oct 2016 15:46:58 +0000 (15:46 +0000)]
[PPC] Better codegen for AND, ANY_EXT, SRL sequence

https://reviews.llvm.org/D24924

This improves the code generated for a sequence of AND, ANY_EXT, SRL instructions. This is a targetted fix for this special pattern. The pattern is generated by target independet dag combiner and so a more general fix may not be necessary. If we come across other similar cases, some ideas for handling it are discussed on the code review.

llvm-svn: 284983

8 years ago[x86] regenerate checks
Sanjay Patel [Mon, 24 Oct 2016 15:43:40 +0000 (15:43 +0000)]
[x86] regenerate checks

llvm-svn: 284982

8 years agoFix arm64 sub-register definitions
Pavel Labath [Mon, 24 Oct 2016 14:57:50 +0000 (14:57 +0000)]
Fix arm64 sub-register definitions

The "value regs" field was filled incorrectly. It is supposed to list the
registers that *this* register is a sub-register of, not the other way around.
This manifested itself in "register read" showing only the smaller sub-registers
(and a bunch of tests not passing). I am not sure if the "invalidates" field is
correct either, but it's usage seems to be inconsistent, so I'll leave that as-is
for now.

llvm-svn: 284981

8 years agoAMDGPU: Fix Two Address problems with v_movreld
Nicolai Haehnle [Mon, 24 Oct 2016 14:56:02 +0000 (14:56 +0000)]
AMDGPU: Fix Two Address problems with v_movreld

Summary:
The v_movreld machine instruction is used with three operands that are
in a sense tied to each other (the explicit VGPR_32 def and the implicit
VGPR_NN def and use). There is no way to express that using the currently
available operand bits, and indeed there are cases where the Two Address
instructions pass does the wrong thing.

This patch introduces a new set of pseudo instructions that are identical
in intended semantics as v_movreld, but they only have two tied operands.

Having to add a new set of pseudo instructions is admittedly annoying, but
it's a fairly straightforward and solid approach. The only alternative I
see is to try to teach the Two Address instructions pass about Three Address
instructions, and I'm afraid that's trickier and is going to end up more
fragile.

Note that v_movrels does not suffer from this problem, and so this patch
does not touch it.

This fixes several GL45-CTS.shaders.indexing.* tests.

Reviewers: tstellarAMD, arsenm

Subscribers: kzhuravl, wdng, yaxunl, llvm-commits, tony-tye

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

llvm-svn: 284980

8 years agoRevert 284971.
Nico Weber [Mon, 24 Oct 2016 14:52:04 +0000 (14:52 +0000)]
Revert 284971.

It seems to break selfhost on some bots, see e.g.
http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/21
http://lab.llvm.org:8011/builders/clang-ppc64be-linux-multistage/builds/20
http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/22

llvm-svn: 284979

8 years ago[MC] Fix Various End Of Line Comment checkings
Nirav Dave [Mon, 24 Oct 2016 14:35:29 +0000 (14:35 +0000)]
[MC] Fix Various End Of Line Comment checkings

Fix AsmParser lines to correctly handle end-of-line pre-processor
comments parsing when '#' is not the assembly line comment prefix.

Reviewers: rnk

Subscribers: llvm-commits

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

llvm-svn: 284978

8 years ago[Chrono] Fix !HAVE_FUTIMENS build
Pavel Labath [Mon, 24 Oct 2016 14:19:28 +0000 (14:19 +0000)]
[Chrono] Fix !HAVE_FUTIMENS build

If we don't have futimens(), we fall back to futimes(), which only supports
microsecond timestamps. In that case, we need to explicitly cast away the extra
precision in setLastModificationAndAccessTime().

llvm-svn: 284977

8 years agoReformat RegisterInfos_arm64 into a table. NFC
Pavel Labath [Mon, 24 Oct 2016 14:01:52 +0000 (14:01 +0000)]
Reformat RegisterInfos_arm64 into a table. NFC

llvm-svn: 284976

8 years agoRemove unused #includes of TimeValue.h. NFC.
Pavel Labath [Mon, 24 Oct 2016 14:00:26 +0000 (14:00 +0000)]
Remove unused #includes of TimeValue.h. NFC.

llvm-svn: 284975

8 years ago[Object] Replace TimeValue with std::chrono
Pavel Labath [Mon, 24 Oct 2016 13:38:27 +0000 (13:38 +0000)]
[Object] Replace TimeValue with std::chrono

Summary:
Most of the changes are very straight-forward. The only choice I had to make was
to use second-precision time points in the Archive classes. I did this because
the archive files use that precision in the on-disk representation anyway.

Reviewers: rafael, zturner

Subscribers: llvm-commits

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

llvm-svn: 284974

8 years agoAArch64 ILP32 relocations for assembly and ELF
Joel Jones [Mon, 24 Oct 2016 13:37:13 +0000 (13:37 +0000)]
AArch64 ILP32 relocations for assembly and ELF

Summary:
Add relocations for AArch64 ILP32. Includes:
  - Addition of definitions for R_AARCH32_*
  - Definition of new -target-abi: ilp32
  - Definition of data layout string
  - Tests for added relocations. Not comprehensive, but matches
    existing tests for 64-bit. Renames "CHECK-OBJ" to "CHECK-OBJ-LP64".
  - Tests for llvm-readobj

Reviewers: zatrazz, peter.smith, echristo, t.p.northover

Subscribers: aemerson, rengolin, mehdi_amini

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

llvm-svn: 284973

8 years ago[RDF] Add default move constructors/assignment operators
Krzysztof Parzyszek [Mon, 24 Oct 2016 13:15:20 +0000 (13:15 +0000)]
[RDF] Add default move constructors/assignment operators

llvm-svn: 284972

8 years ago[JumpThreading] Unfold selects that depend on the same condition
Pablo Barrio [Mon, 24 Oct 2016 13:04:45 +0000 (13:04 +0000)]
[JumpThreading] Unfold selects that depend on the same condition

Summary:
These are good candidates for jump threading. This enables later opts
(such as InstCombine) to combine instructions from the selects with
instructions out of the selects. SimplifyCFG will fold the select
again if unfolding wasn't worth it.

Patch by James Molloy and Pablo Barrio.

Reviewers: reames, bkramer, mcrosier, gberry, haicheng, jmolloy, sebpop

Subscribers: jojo, rengolin, llvm-commits

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

llvm-svn: 284971

8 years agoAdd the new arm64 sub-register definitions to NativeRegisterContextLinux
Pavel Labath [Mon, 24 Oct 2016 12:59:20 +0000 (12:59 +0000)]
Add the new arm64 sub-register definitions to NativeRegisterContextLinux

It's quite sad that we have to edit so many files just to add a register. I am
going to investigate how to merge these definitions somehow, but for now this
should at least get arm64 linux working again.

llvm-svn: 284970

8 years ago[analyzer] Fix an ARM buildbot after r284960.
Artem Dergachev [Mon, 24 Oct 2016 12:54:27 +0000 (12:54 +0000)]
[analyzer] Fix an ARM buildbot after r284960.

I guess we should always specify triples in all analyzer tests, regardless.

llvm-svn: 284969

8 years agoFix windows builds by swapping windows.h and wincrypt.h ordering.
Simon Pilgrim [Mon, 24 Oct 2016 12:39:23 +0000 (12:39 +0000)]
Fix windows builds by swapping windows.h and wincrypt.h ordering.

We need to include windows.h first even though it breaks default include ordering rules

llvm-svn: 284968

8 years agorevert r284963
Michael Zuckerman [Mon, 24 Oct 2016 11:30:23 +0000 (11:30 +0000)]
revert r284963

because new test file is failing in some OS.
test/CodeGen/avx512-reduceIntrin.c

llvm-svn: 284967

8 years agoRemove TimeValue usage from llvm/Support
Pavel Labath [Mon, 24 Oct 2016 10:59:17 +0000 (10:59 +0000)]
Remove TimeValue usage from llvm/Support

Summary:
This is a follow-up to D25416. It removes all usages of TimeValue from
llvm/Support library (except for the actual TimeValue declaration), and replaces
them with appropriate usages of std::chrono. To facilitate this, I have added
small utility functions for converting time points and durations into appropriate
OS-specific types (FILETIME, struct timespec, ...).

Reviewers: zturner, mehdi_amini

Subscribers: llvm-commits

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

llvm-svn: 284966

8 years agoAdjust for TimePoint interface change in llvm: D25730. NFC
Pavel Labath [Mon, 24 Oct 2016 10:59:14 +0000 (10:59 +0000)]
Adjust for TimePoint interface change in llvm: D25730. NFC

llvm-svn: 284965

8 years agoAdjust for TimePoint interface change in llvm: D25730. NFC
Pavel Labath [Mon, 24 Oct 2016 10:59:13 +0000 (10:59 +0000)]
Adjust for TimePoint interface change in llvm: D25730. NFC

llvm-svn: 284964

8 years ago[X86][AVX512][Clang][Intrinsics][reduce] Adding missing reduce (Operators: +,*,&...
Michael Zuckerman [Mon, 24 Oct 2016 10:53:20 +0000 (10:53 +0000)]
[X86][AVX512][Clang][Intrinsics][reduce] Adding missing reduce (Operators: +,*,&&,||) intrinsics to Clang

Committed after LGTM and check-all

Vector-reduction arithmetic accepts vectors as inputs and produces scalars as outputs.
This class of vector operation forms the basis of many scientific computations.
In vector-reduction arithmetic, the evaluation off is independent of the order of the input elements of V.

Used bisection method. At each step, we partition the vector with previous
step in half, and the operation is performed on its two halves.
This takes log2(n) steps where n is the number of elements in the vector.

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

llvm-svn: 284963

8 years ago[mips] synci microMIPS instruction definition.
Simon Dardis [Mon, 24 Oct 2016 10:23:59 +0000 (10:23 +0000)]
[mips] synci microMIPS instruction definition.

Add synci to the microMIPS instruction definitions, mark the MIPS sync & synci
as not being part of microMIPS. This does not cover the sync instruction alias,
as that will be handled with a different patch. Add sync to the valid tests for
microMIPS.

Reviewers: vkalintiris

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

llvm-svn: 284962

8 years ago[Sema] Formatting warnings should see through Objective-C message sends
Alex Lorenz [Mon, 24 Oct 2016 09:42:34 +0000 (09:42 +0000)]
[Sema] Formatting warnings should see through Objective-C message sends

This commit improves the '-Wformat' warnings by ensuring that the formatting
checker can see through Objective-C message sends when we are calling an
Objective-C method with an appropriate format_arg attribute.

rdar://23622446

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

llvm-svn: 284961

8 years ago[analyzer] Add StdLibraryFunctions checker.
Artem Dergachev [Mon, 24 Oct 2016 09:41:38 +0000 (09:41 +0000)]
[analyzer] Add StdLibraryFunctions checker.

This checker does not emit reports, however it influences the analysis
by providing complete summaries for, or otherwise improving modeling of,
various standard library functions.

This should reduce the number of infeasible paths explored during analysis.
The custom function summary format used in this checker is superior to
body farms by causing less unnecessary state splits,
which would result in better analysis performance.

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

llvm-svn: 284960

8 years ago[Sema][TreeTransform] Re-create DesignatedInitExpr when a field designator
Alex Lorenz [Mon, 24 Oct 2016 09:33:32 +0000 (09:33 +0000)]
[Sema][TreeTransform] Re-create DesignatedInitExpr when a field designator
has no field declaration.

This commit fixes an invalid Winitializer-overrides warning that's shown
when analyzing a second (or any after the first) instantiation of a designated
initializer. This invalid warning is fixed by making sure that a
DesignatedInitExpr is rebuilt by the tree transformer when it has a field
designator whose FieldDecl* hasn't been yet initialized. This ensures that a
different DesignatedInitExpr is processed by Sema for every instantiation, and
thus the invalid warning is avoided.

rdar://28768441

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

llvm-svn: 284959

8 years agoFix myriad test with CLANG_DEFAULT_CXX_STDLIB
Jonas Hahnfeld [Mon, 24 Oct 2016 08:04:17 +0000 (08:04 +0000)]
Fix myriad test with CLANG_DEFAULT_CXX_STDLIB

llvm-svn: 284958

8 years ago[llvm-opt-report] Fix unroll-count reporting
Hal Finkel [Mon, 24 Oct 2016 05:07:18 +0000 (05:07 +0000)]
[llvm-opt-report] Fix unroll-count reporting

Fix the implementation of OptReportLocationInfo's operator < so that contexts
with different unroll counts are reported separately.

llvm-svn: 284957

8 years ago[AVX-512] Replace 64-bit element and 512-bit vector pmin/pmax builtins with native...
Craig Topper [Mon, 24 Oct 2016 04:04:24 +0000 (04:04 +0000)]
[AVX-512] Replace 64-bit element and 512-bit vector pmin/pmax builtins with native IR like we do for 128/256-bit, but with the addition of masking.

llvm-svn: 284956

8 years ago[AVX-512] Remove masked pmin/pmax intrinsics and autoupgrade to native IR.
Craig Topper [Mon, 24 Oct 2016 04:04:16 +0000 (04:04 +0000)]
[AVX-512] Remove masked pmin/pmax intrinsics and autoupgrade to native IR.

Clang patch to replace 512-bit vector and 64-bit element versions with native IR will follow.

llvm-svn: 284955

8 years ago[AVX-512] Replace masked 128/256-bit byte, word, and dword min/max builtins with...
Craig Topper [Sun, 23 Oct 2016 23:57:30 +0000 (23:57 +0000)]
[AVX-512] Replace masked 128/256-bit byte, word, and dword min/max builtins with selects and the older unmasked builtins.

llvm-svn: 284954

8 years ago[DAG] enhance computeKnownBits to handle SRL/SRA with vector splat constant
Sanjay Patel [Sun, 23 Oct 2016 23:13:31 +0000 (23:13 +0000)]
[DAG] enhance computeKnownBits to handle SRL/SRA with vector splat constant

llvm-svn: 284953

8 years agoBackout enabling -Wshadow until I have time to fix the breakage
Eric Fiselier [Sun, 23 Oct 2016 22:24:11 +0000 (22:24 +0000)]
Backout enabling -Wshadow until I have time to fix the breakage

llvm-svn: 284952

8 years ago[libunwind] Add support for Fuchsia
Petr Hosek [Sun, 23 Oct 2016 21:48:47 +0000 (21:48 +0000)]
[libunwind] Add support for Fuchsia

Fuchsia is a new operating system which uses libunwind as unwinder.

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

llvm-svn: 284951

8 years ago[libcxx] Use C++14 when building libc++ with musl
Petr Hosek [Sun, 23 Oct 2016 21:48:27 +0000 (21:48 +0000)]
[libcxx] Use C++14 when building libc++ with musl

musl's pthread implementations use volatile types in their structs
which is not being constexpr in C++11 but is in C++14.

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

llvm-svn: 284950

8 years agoUse SDValue::getConstantOperandVal() helper. NFCI.
Simon Pilgrim [Sun, 23 Oct 2016 20:17:21 +0000 (20:17 +0000)]
Use SDValue::getConstantOperandVal() helper. NFCI.

llvm-svn: 284949

8 years agoRemove LLVM_CONSTEXPR.
Justin Lebar [Sun, 23 Oct 2016 19:39:16 +0000 (19:39 +0000)]
Remove LLVM_CONSTEXPR.

Summary: With MSVC 2013 and GCC < 4.8 gone, we can use the "constexpr" keyword.

Reviewers: bkramer, mehdi_amini

Subscribers: llvm-commits

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

llvm-svn: 284947

8 years agoFix breakage introduced by adding -Wshadow.
Eric Fiselier [Sun, 23 Oct 2016 19:26:39 +0000 (19:26 +0000)]
Fix breakage introduced by adding -Wshadow.

llvm-svn: 284946

8 years agoFix libc++ specific assertion in permissions(...) tests
Eric Fiselier [Sun, 23 Oct 2016 19:14:58 +0000 (19:14 +0000)]
Fix libc++ specific assertion in permissions(...) tests

llvm-svn: 284945