platform/upstream/llvm.git
8 years agoclang-cl: Implement initial limited support for precompiled headers.
Nico Weber [Tue, 1 Mar 2016 23:16:44 +0000 (23:16 +0000)]
clang-cl: Implement initial limited support for precompiled headers.

In the gcc precompiled header model, one explicitly runs clang with `-x
c++-header` on a .h file to produce a gch file, and then includes the header
with `-include foo.h` and if a .gch file exists for that header it gets used.
This is documented at
http://clang.llvm.org/docs/UsersManual.html#precompiled-headers

cl.exe's model is fairly different, and controlled by the two flags /Yc and
/Yu. A pch file is generated as a side effect of a regular compilation when
/Ycheader.h is passed. While the compilation is running, the compiler keeps
track of #include lines in the main translation unit and writes everything up
to an `#include "header.h"` line into a pch file. Conversely, /Yuheader.h tells
the compiler to skip all code in the main TU up to and including `#include
"header.h"` and instead load header.pch. (It's also possible to use /Yc and /Yu
without an argument, in that case a `#pragma hrdstop` takes the role of
controlling the point where pch ends and real code begins.)

This patch implements limited support for this in that it requires the pch
header to be passed as a /FI force include flag – with this restriction,
it can be implemented almost completely in the driver with fairly small amounts
of code. For /Yu, this is trivial, and for /Yc a separate pch action is added
that runs before the actual compilation. After r261774, the first failing
command makes a compilation stop – this means if the pch fails to build the
main compilation won't run, which is what we want. However, in /fallback builds
we need to run the main compilation even if the pch build fails so that the
main compilation's fallback can run. To achieve this, add a ForceSuccessCommand
that pretends that the pch build always succeeded in /fallback builds (the main
compilation will then fail to open the pch and run the fallback cl.exe
invocation).

If /Yc /Yu are used in a setup that clang-cl doesn't implement yet, clang-cl
will now emit a "not implemented yet; flag ignored" warning that can be
disabled using -Wno-clang-cl-pch.

Since clang-cl doesn't yet serialize some important things (most notably
`pragma comment(lib, ...)`, this feature is disabled by default and only
enabled by an internal driver flag. Once it's more stable, this internal flag
will disappear.

(The default stdafx.h setup passes stdafx.h as explicit argument to /Yc but not
as /FI – instead every single TU has to `#include <stdafx.h>` as first thing it
does. Implementing support for this should be possible with the approach in
this patch with minimal frontend changes by passing a --stop-at / --start-at
flag from the driver to the frontend. This is left for a follow-up. I don't
think we ever want to support `#pragma hdrstop`, and supporting it with this
approach isn't easy: This approach relies on the driver knowing the pch
filename in advance, and `#pragma hdrstop(out.pch)` can set the output
filename, so the driver can't know about it in advance.)

clang-cl now also honors /Fp and puts pch files in the same spot that cl.exe
would put them, but the pch file format is of course incompatible. This has
ramifications on /fallback, so /Yc /Yu aren't passed through to cl.exe in
/fallback builds.

http://reviews.llvm.org/D17695

llvm-svn: 262420

8 years agoPerform InstructioinCombiningPass before SampleProfile pass.
Dehao Chen [Tue, 1 Mar 2016 22:53:02 +0000 (22:53 +0000)]
Perform InstructioinCombiningPass before SampleProfile pass.

Summary: SampleProfile pass needs to be performed after InstructionCombiningPass, which helps eliminate un-inlinable function calls.

Reviewers: davidxl, dnovillo

Subscribers: llvm-commits

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

llvm-svn: 262419

8 years agoUpdated SSE41 builtin tests to more closely match the llvm fast-isel equivalent tests
Simon Pilgrim [Tue, 1 Mar 2016 22:38:33 +0000 (22:38 +0000)]
Updated SSE41 builtin tests to more closely match the llvm fast-isel equivalent tests

llvm-svn: 262418

8 years ago[libFuzzer] deprecate exit_on_first flag
Kostya Serebryany [Tue, 1 Mar 2016 22:33:14 +0000 (22:33 +0000)]
[libFuzzer] deprecate exit_on_first flag

llvm-svn: 262417

8 years agollvm-dwp: Add missing copyright notice to llvm-dwp.cpp
David Blaikie [Tue, 1 Mar 2016 22:29:00 +0000 (22:29 +0000)]
llvm-dwp: Add missing copyright notice to llvm-dwp.cpp

Addressing feedback on IRC by Sean Silva.

llvm-svn: 262416

8 years ago[libFuzzer] add generic signal handlers so that libFuzzer can report at least somethi...
Kostya Serebryany [Tue, 1 Mar 2016 22:19:21 +0000 (22:19 +0000)]
[libFuzzer] add generic signal handlers so that libFuzzer can report at least something if ASan is not handlig the signals for us. Remove abort_on_timeout flag.

llvm-svn: 262415

8 years agoMangle extended qualifiers in the proper order and mangle the
John McCall [Tue, 1 Mar 2016 22:18:03 +0000 (22:18 +0000)]
Mangle extended qualifiers in the proper order and mangle the
ARC ownership-convention function type modifications.

According to the Itanium ABI, vendor extended qualifiers are
supposed to be mangled in reverse-alphabetical order before
any CVR qualifiers.  The ARC function type conventions are
plausibly order-significant (they are associated with the
function type), which permits us to ignore the need to correctly
inter-order them with any other vendor qualifiers on the parameter
and return types.

Implementing these rules correctly is technically an ABI break.
Apple is comfortable with the risk of incompatibility here for
the ARC features, and I believe that address-space qualification
is still uncommon enough to allow us to adopt the conforming
rule without serious risk.  Still, targets which make heavy
use of address space qualification may want to revert to the
non-conforming order.

llvm-svn: 262414

8 years agoFix --help message.
Rui Ueyama [Tue, 1 Mar 2016 22:17:09 +0000 (22:17 +0000)]
Fix --help message.

llvm-svn: 262413

8 years ago[X86][SSE41] Added missing fast-isel intrinsics tests
Simon Pilgrim [Tue, 1 Mar 2016 22:05:05 +0000 (22:05 +0000)]
[X86][SSE41] Added missing fast-isel intrinsics tests

Match IR generated in clang/test/CodeGen/sse41-builtins.c

llvm-svn: 262412

8 years ago[NFC] Convert tabs to spaces.
Colin LeMahieu [Tue, 1 Mar 2016 22:05:03 +0000 (22:05 +0000)]
[NFC] Convert tabs to spaces.

llvm-svn: 262411

8 years ago[X86][XOP] Regenerated intrinsics tests
Simon Pilgrim [Tue, 1 Mar 2016 21:58:50 +0000 (21:58 +0000)]
[X86][XOP] Regenerated intrinsics tests

llvm-svn: 262410

8 years agoExplicitly select IAS on one more RUN line in new embed-bitcode.c test.
Daniel Sanders [Tue, 1 Mar 2016 21:57:22 +0000 (21:57 +0000)]
Explicitly select IAS on one more RUN line in new embed-bitcode.c test.

This should fix clang-cmake-mips builder since MIPS does not have IAS enabled
by default (yet).

llvm-svn: 262409

8 years agoAArch64: Reenable CompleteModel for A53, A57 and Kryo models
Matthias Braun [Tue, 1 Mar 2016 21:55:35 +0000 (21:55 +0000)]
AArch64: Reenable CompleteModel for A53, A57 and Kryo models

The fixes in r262393 completed them as well.

llvm-svn: 262408

8 years agoFix bug with function resolution when using IR Interpreter
Ted Woodward [Tue, 1 Mar 2016 21:53:26 +0000 (21:53 +0000)]
Fix bug with function resolution when using IR Interpreter

Summary: Recent changes to the expression parser broke function name resolution when using the IR interpreter instead of JIT. This patch changes the IRMemoryMap ivar in InterpreterStackFrame to an IRExecutionUnitSP (which is a subclass), allowing InterpreterStackFrame::ResolveConstantValue() to call FindSymbol() on the name of the Value when it's a FunctionVal. It also changes IRExecutionUnit::FindInSymbols() to call GetFileAddress() on the symball if ResolveCallableAddress() fails and there is no valid Process.

Reviewers: spyffe

Subscribers: lldb-commits

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

llvm-svn: 262407

8 years ago[X86][AVX2] Regenerated 256-bit vector / 64-bit element permute tests
Simon Pilgrim [Tue, 1 Mar 2016 21:53:12 +0000 (21:53 +0000)]
[X86][AVX2] Regenerated 256-bit vector / 64-bit element permute tests

llvm-svn: 262406

8 years agoFix typo. NFC.
Tim Northover [Tue, 1 Mar 2016 21:45:22 +0000 (21:45 +0000)]
Fix typo. NFC.

llvm-svn: 262405

8 years agoFix non-synthesizable loop exit values.
Michael Kruse [Tue, 1 Mar 2016 21:44:06 +0000 (21:44 +0000)]
Fix non-synthesizable loop exit values.

Polly recognizes affine loops that ScalarEvolution does not, in
particular those with loop conditions that depend on hoisted invariant
loads. Check for SCEVAddRec dependencies on such loops and do not
consider their exit values as synthesizable because SCEVExpander would
generate them as expressions that depend on the original induction
variables. These are not available in generated code.

llvm-svn: 262404

8 years ago[X86][AVX2] Regenerated horizontal add/sub tests
Simon Pilgrim [Tue, 1 Mar 2016 21:43:55 +0000 (21:43 +0000)]
[X86][AVX2] Regenerated horizontal add/sub tests

llvm-svn: 262403

8 years ago[clang-format] Detect constructor initializers preceded by `noexcept`.
Daniel Jasper [Tue, 1 Mar 2016 21:41:58 +0000 (21:41 +0000)]
[clang-format] Detect constructor initializers preceded by `noexcept`.

Patch by Erik Kessler, thank you.

llvm-svn: 262402

8 years ago[X86][AVX2] Regenerated intrinsics tests
Simon Pilgrim [Tue, 1 Mar 2016 21:38:41 +0000 (21:38 +0000)]
[X86][AVX2] Regenerated intrinsics tests

llvm-svn: 262401

8 years ago[Hexagon] Modifying r262258 to only be in effect in the hand assembler path, not...
Colin LeMahieu [Tue, 1 Mar 2016 21:37:41 +0000 (21:37 +0000)]
[Hexagon] Modifying r262258 to only be in effect in the hand assembler path, not the integrated assembler.

llvm-svn: 262400

8 years agoTableGen: Display helpfull message for incomplete models.
Matthias Braun [Tue, 1 Mar 2016 21:36:12 +0000 (21:36 +0000)]
TableGen: Display helpfull message for incomplete models.

llvm-svn: 262399

8 years ago[X86][AVX] Fixed triple/arch clash in test case
Simon Pilgrim [Tue, 1 Mar 2016 21:33:08 +0000 (21:33 +0000)]
[X86][AVX] Fixed triple/arch clash in test case

We were specifying a x64 triple and then overriding with a x86 arch.

llvm-svn: 262398

8 years agoDAGCombiner: Turn truncate of a bitcasted vector to an extract
Matt Arsenault [Tue, 1 Mar 2016 21:31:53 +0000 (21:31 +0000)]
DAGCombiner: Turn truncate of a bitcasted vector to an extract

On AMDGPU where operations i64 operations are often bitcasted to v2i32
and back, this pattern shows up regularly where it breaks some
expected combines on i64, such as load width reducing.

This fixes some test failures in a future commit when i64 loads
are changed to promote.

llvm-svn: 262397

8 years agoAdd LLVMBuild for ObjectYAML.
Rafael Espindola [Tue, 1 Mar 2016 21:29:33 +0000 (21:29 +0000)]
Add LLVMBuild for ObjectYAML.

Should fix the DBUILD_SHARED_LIBS bots.

llvm-svn: 262396

8 years agoRevert "llvm-dwp: Keep ObjectFiles alive until object emission their contents can...
David Blaikie [Tue, 1 Mar 2016 21:24:04 +0000 (21:24 +0000)]
Revert "llvm-dwp: Keep ObjectFiles alive until object emission their contents can be referenced directly rather than copied"

Accidentally committed.

This reverts commit r262389.

llvm-svn: 262395

8 years ago[lanai] Add ELF enum value and relocations.
Jacques Pienaar [Tue, 1 Mar 2016 21:21:42 +0000 (21:21 +0000)]
[lanai] Add ELF enum value and relocations.

Add ELF enum value and relocations for Lanai backed.

General Lanai backend discussion on llvm-dev thread "[RFC] Lanai backend" (http://lists.llvm.org/pipermail/llvm-dev/2016-February/095118.html).

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

llvm-svn: 262394

8 years agoAArch64: Add missing schedinfo, check completeness for cyclone
Matthias Braun [Tue, 1 Mar 2016 21:20:31 +0000 (21:20 +0000)]
AArch64: Add missing schedinfo, check completeness for cyclone

This adds some missing generic schedule info definitions, enables
completeness checking for cyclone and fixes a typo uncovered by that.

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

llvm-svn: 262393

8 years ago[Power9] Implement new vector compare, extract, insert instructions
Kit Barton [Tue, 1 Mar 2016 20:51:57 +0000 (20:51 +0000)]
[Power9] Implement new vector compare, extract, insert instructions

This change implements the following vector operations:

  - Vector Compare Not Equal
    - vcmpneb(.) vcmpneh(.) vcmpnew(.)
    - vcmpnezb(.) vcmpnezh(.) vcmpnezw(.)
  - Vector Extract Unsigned
    - vextractub vextractuh vextractuw vextractd
    - vextublx vextubrx vextuhlx vextuhrx vextuwlx vextuwrx
  - Vector Insert
    - vinsertb vinserth vinsertw vinsertd

26 instructions.

Phabricator: http://reviews.llvm.org/D15916
llvm-svn: 262392

8 years ago[x86] use getBitcast()
Sanjay Patel [Tue, 1 Mar 2016 20:47:02 +0000 (20:47 +0000)]
[x86] use getBitcast()

This isn't quite NFC because some of the SDLocs may change which could
cause scheduling differences. But no regression tests are affected and
there is no functional change intended.

llvm-svn: 262391

8 years agoFix some warnings a bit harder/different
David Blaikie [Tue, 1 Mar 2016 20:41:17 +0000 (20:41 +0000)]
Fix some warnings a bit harder/different

This is an alternate fix to 262378 and a fix to a pessimizing-move
warning.

llvm-svn: 262390

8 years agollvm-dwp: Keep ObjectFiles alive until object emission their contents can be referenc...
David Blaikie [Tue, 1 Mar 2016 20:40:02 +0000 (20:40 +0000)]
llvm-dwp: Keep ObjectFiles alive until object emission their contents can be referenced directly rather than copied

llvm-svn: 262389

8 years ago Revert "[AArch64] Fix isLegalAddImmediate() to return true for valid negative...
Geoff Berry [Tue, 1 Mar 2016 20:28:52 +0000 (20:28 +0000)]
Revert "[AArch64] Fix isLegalAddImmediate() to return true for valid negative values."

    Revert r262248 in an attempt to fix the clang-native-aarch64-full
    bot and to investigate a performance regression in
    SingleSource/Benchmarks/CoyoteBench/huffbench

llvm-svn: 262388

8 years agoRevert "[mips] Promote the result of SETCC nodes to GPR width."
Vasileios Kalintiris [Tue, 1 Mar 2016 20:25:43 +0000 (20:25 +0000)]
Revert "[mips] Promote the result of SETCC nodes to GPR width."

This reverts commit r262316.

It seems that my change breaks an out-of-tree chromium buildbot, so
I'm reverting this in order to investigate the situation further.

llvm-svn: 262387

8 years agoNew file to track implementation status of new POWER9 instructions
Kit Barton [Tue, 1 Mar 2016 20:19:43 +0000 (20:19 +0000)]
New file to track implementation status of new POWER9 instructions

llvm-svn: 262386

8 years agoThis patch adds doxygen comments for the intrinsincs in the header file popcntintrin.h.
Ekaterina Romanova [Tue, 1 Mar 2016 20:04:57 +0000 (20:04 +0000)]
This patch adds doxygen comments for the intrinsincs in the header file popcntintrin.h.

The doxygen comments are automatically generated based on Sony's intrinsics documentation.

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

llvm-svn: 262385

8 years agoTableGen: Check scheduling models for completeness
Matthias Braun [Tue, 1 Mar 2016 20:03:21 +0000 (20:03 +0000)]
TableGen: Check scheduling models for completeness

TableGen checks at compiletime that for scheduling models with
"CompleteModel = 1" one of the following holds:

- Is marked with the hasNoSchedulingInfo flag
- The instruction is a subclass of Sched
- There are InstRW definitions in the scheduling model

Typical steps necessary to complete a model:

- Ensure all pseudo instructions that are expanded before machine
  scheduling (usually everything handled with EmitYYY() functions in
  XXXTargetLowering).
- If a CPU does not support some instructions mark the corresponding
  resource unsupported: "WriteRes<WriteXXX, []> { let Unsupported = 1; }".
- Add missing scheduling information.

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

llvm-svn: 262384

8 years agoTableGen: Add hasNoSchedulingInfo to instructions
Matthias Braun [Tue, 1 Mar 2016 20:03:11 +0000 (20:03 +0000)]
TableGen: Add hasNoSchedulingInfo to instructions

This introduces a new flag that indicates that a specific instruction
will never be present when the MachineScheduler runs and therefore needs
no scheduling information.

This is in preparation for an upcoming commit which checks completeness
of a scheduling model when tablegen runs.

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

llvm-svn: 262383

8 years agoReword a misleading comment discussing landingpads and SEH
Reid Kleckner [Tue, 1 Mar 2016 19:51:48 +0000 (19:51 +0000)]
Reword a misleading comment discussing landingpads and SEH

SEH doesn't use landingpads anymore.

llvm-svn: 262382

8 years ago[NVPTX] Annotate param loads/stores as mayLoad/mayStore.
Justin Lebar [Tue, 1 Mar 2016 19:44:22 +0000 (19:44 +0000)]
[NVPTX] Annotate param loads/stores as mayLoad/mayStore.

Summary:
Tablegen was unable to determine that param loads/stores were actually
reading or writing from memory.  I think this isn't a problem in
practice for param stores, because those occur in a block right before
we make our call.  But param loads don't have to at the very beginning
of a function, so should be annotated as mayLoad so we don't incorrectly
optimize them.

Reviewers: jholewinski

Subscribers: jholewinski, llvm-commits

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

llvm-svn: 262381

8 years ago[NVPTX] Remove workaround for tablegen crash in NVPTXInstrInfo.td.
Justin Lebar [Tue, 1 Mar 2016 19:44:20 +0000 (19:44 +0000)]
[NVPTX] Remove workaround for tablegen crash in NVPTXInstrInfo.td.

Summary: Looks like this was caused by a typo.

Reviewers: jholewinski

Subscribers: jholewinski, llvm-commits, tra

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

llvm-svn: 262380

8 years ago[MSVC Compat] Correctly handle finallys nested within finallys
David Majnemer [Tue, 1 Mar 2016 19:42:53 +0000 (19:42 +0000)]
[MSVC Compat] Correctly handle finallys nested within finallys

We'd lose track of the parent CodeGenFunction, leading us to get
confused with regard to which function a nested finally belonged to.

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

llvm-svn: 262379

8 years agoFix -Wnon-virtual-dtor warnings
Reid Kleckner [Tue, 1 Mar 2016 19:39:54 +0000 (19:39 +0000)]
Fix -Wnon-virtual-dtor warnings

llvm-svn: 262378

8 years ago[ELF] - handle of command line options incompatible with -r
George Rimar [Tue, 1 Mar 2016 19:38:51 +0000 (19:38 +0000)]
[ELF] - handle of command line options incompatible with -r

Patch handles the command line options
incompatible with relocatable output.

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

llvm-svn: 262377

8 years agoFix an issue where fast math flags were dropped during scalarization.
Owen Anderson [Tue, 1 Mar 2016 19:35:52 +0000 (19:35 +0000)]
Fix an issue where fast math flags were dropped during scalarization.

Most portions of InstCombine properly propagate fast math flags, but
apparently the vector scalarization section was overlooked.

llvm-svn: 262376

8 years ago[SCEVValidator] Remove redundant visit.
Michael Kruse [Tue, 1 Mar 2016 19:30:54 +0000 (19:30 +0000)]
[SCEVValidator] Remove redundant visit.

SCEVAddRecExpr::getStart() is synonymous to SCEVAddRecExpr::getOperand(0)
which will be visited in the following loop anyway.

llvm-svn: 262375

8 years ago[SCEV] Minor cleanup: rename method, C++11'ify; NFC
Sanjoy Das [Tue, 1 Mar 2016 19:28:01 +0000 (19:28 +0000)]
[SCEV] Minor cleanup: rename method, C++11'ify; NFC

llvm-svn: 262374

8 years ago[NVPTX] Use different, convergent MIs for convergent calls.
Justin Lebar [Tue, 1 Mar 2016 19:24:03 +0000 (19:24 +0000)]
[NVPTX] Use different, convergent MIs for convergent calls.

Summary:
Calls sometimes need to be convergent.  This is already handled at the
LLVM IR level, but it also needs to be handled at the MI level.

Ideally we'd propagate convergence from instructions, down through the
selection DAG, and into MIs.  But this is Hard, and would affect
optimizations in the SDNs -- right now only SDNs with two operands have
any flags at all.

Instead, here's a much simpler hack: Add new opcodes for NVPTX for
convergent calls, and generate these when lowering convergent LLVM
calls.

Reviewers: jholewinski

Subscribers: jholewinski, chandlerc, joker.eph, jhen, tra, llvm-commits

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

llvm-svn: 262373

8 years ago[NVPTX] Nix hack used to emit '{' and '}' for NVPTX calls.
Justin Lebar [Tue, 1 Mar 2016 19:24:00 +0000 (19:24 +0000)]
[NVPTX] Nix hack used to emit '{' and '}' for NVPTX calls.

Summary: Tablegen understands backslash as an escape char; that's sufficient.

Reviewers: jholewinski

Subscribers: llvm-commits, tra, jholewinski

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

llvm-svn: 262372

8 years ago[NVPTX] Reformat NVPTXInstrInfo.td, and add additional comments.
Justin Lebar [Tue, 1 Mar 2016 19:23:30 +0000 (19:23 +0000)]
[NVPTX] Reformat NVPTXInstrInfo.td, and add additional comments.

Summary:
Also simplify some of the embedded C++ logic.

No functional changes.

Reviewers: jholewinski

Subscribers: llvm-commits, tra, jholewinski

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

llvm-svn: 262371

8 years ago[X86] Elide references to _chkstk for dynamic allocas
David Majnemer [Tue, 1 Mar 2016 19:20:23 +0000 (19:20 +0000)]
[X86] Elide references to _chkstk for dynamic allocas

The _chkstk function is called by the compiler to probe the stack in an
order consistent with Windows' expectations.  However, it is possible to
elide the call to _chkstk and manually adjust the stack pointer if we
can prove that the allocation is fixed size and smaller than the probe
size.

This shrinks chrome.dll, chrome_child.dll and chrome.exe by a
cummulative ~133 KB.

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

llvm-svn: 262370

8 years ago[ELF] - More direct implementation of edata/etext
George Rimar [Tue, 1 Mar 2016 19:18:07 +0000 (19:18 +0000)]
[ELF] - More direct implementation of edata/etext

As was suggested in mails, this patch implements edata/etext
symbols in a more direct way.
It iterates through PT_LOADs.

Result seems to be the same and equal to gold output.

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

llvm-svn: 262369

8 years agoMove ObjectYAML code to a new library.
Rafael Espindola [Tue, 1 Mar 2016 19:15:06 +0000 (19:15 +0000)]
Move ObjectYAML code to a new library.

It is only ever used by obj2yaml and yaml2obj. No point in linking it
everywhere.

llvm-svn: 262368

8 years agofix function names; NFC
Sanjay Patel [Tue, 1 Mar 2016 19:14:09 +0000 (19:14 +0000)]
fix function names; NFC

llvm-svn: 262367

8 years ago[ELF] - do not create special symbols when creating relocatable output
George Rimar [Tue, 1 Mar 2016 19:12:35 +0000 (19:12 +0000)]
[ELF] - do not create special symbols when creating relocatable output

__start_/__end_ <section-name> symbols and other specials like:
preinit_array_start/end
init_array_start/end
fini_array_start/end

should not be created by linker when creating relocatable files.

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

llvm-svn: 262366

8 years ago[Verifier] Don't abort on invalid cleanuprets
David Majnemer [Tue, 1 Mar 2016 18:59:50 +0000 (18:59 +0000)]
[Verifier] Don't abort on invalid cleanuprets

Code in visitEHPadPredecessors assume a little too much about the
validity of a cleanupret with an invalid cleanuppad operand.

llvm-svn: 262364

8 years agoFix breakage caused by r262360.
Easwaran Raman [Tue, 1 Mar 2016 18:59:11 +0000 (18:59 +0000)]
Fix breakage caused by r262360.

llvm-svn: 262363

8 years agoAdd the beginnings of an update API for preserving MemorySSA
Daniel Berlin [Tue, 1 Mar 2016 18:46:54 +0000 (18:46 +0000)]
Add the beginnings of an update API for preserving MemorySSA

Summary:
This adds the beginning of an update API to preserve MemorySSA.  In particular,
this patch adds a way to remove memory SSA accesses when instructions are
deleted.

It also adds relevant unit testing infrastructure for MemorySSA's API.

(There is an actual user of this API, i will make that diff dependent on this one.  In practice, a ton of opt passes remove memory instructions, so it's hopefully an obviously useful API :P)

Reviewers: hfinkel, reames, george.burgess.iv

Subscribers: llvm-commits

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

llvm-svn: 262362

8 years ago[DebugInfo] Dump CIE augmentation data as a list of hex bytes
Simon Atanasyan [Tue, 1 Mar 2016 18:38:05 +0000 (18:38 +0000)]
[DebugInfo] Dump CIE augmentation data as a list of hex bytes

CIE augmentation data might contain non-printable characters.
The patch prints the data as a list of hex bytes.

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

llvm-svn: 262361

8 years agoMetadata support for profile summary.
Easwaran Raman [Tue, 1 Mar 2016 18:30:58 +0000 (18:30 +0000)]
Metadata support for profile summary.

This adds support to convert ProfileSummary object to Metadata and create a
ProfileSummary object from metadata. This would allow attaching profile summary
information to Module allowing optimization passes to use it.

llvm-svn: 262360

8 years ago[PPC64][VSX] Add short, char, and bool data type for vec_vsx_ld and vec_vsx_st intrinsics
Kit Barton [Tue, 1 Mar 2016 18:11:28 +0000 (18:11 +0000)]
[PPC64][VSX] Add short, char, and bool data type for vec_vsx_ld and vec_vsx_st intrinsics

Issue: https://llvm.org/bugs/show_bug.cgi?id=26720

Fix compile error when building ffmpeg for PowerPC64LE because of some
vec_vsx_ld/vec_vsx_st intrinsics are not supported by current clang.

New added intrinsics:

(vector) {signed|unsigned} {short|char} vec_vsx_ld: (total: 8)
bool vec_vsx_ld: (total: 1)
(vector) {signed|unsigned} {short|char} vec_vsx_st: (total: 8)
bool vec_vsx_st: (total: 1)
Total: 18 intrinsics

Phabricator: http://reviews.llvm.org/D17637
llvm-svn: 262359

8 years agoDAGCombiner: Turn extract of bitcasted integer into truncate
Matt Arsenault [Tue, 1 Mar 2016 18:01:37 +0000 (18:01 +0000)]
DAGCombiner: Turn extract of bitcasted integer into truncate

This reduces the number of bitcast nodes and generally cleans up the
DAG when bitcasting between integers and vectors everywhere.

llvm-svn: 262358

8 years agoAdd isScalarInteger helper to EVT/MVT
Matt Arsenault [Tue, 1 Mar 2016 18:01:28 +0000 (18:01 +0000)]
Add isScalarInteger helper to EVT/MVT

llvm-svn: 262357

8 years agoAMDGPU/SI: Implement DS_PERMUTE/DS_BPERMUTE Instruction Definitions and Intrinsics
Changpeng Fang [Tue, 1 Mar 2016 17:51:23 +0000 (17:51 +0000)]
AMDGPU/SI: Implement DS_PERMUTE/DS_BPERMUTE Instruction Definitions and Intrinsics

Summary:
  This patch impleemnts DS_PERMUTE/DS_BPERMUTE instruction definitions and intrinsics,
which are new since VI.

Reviewers: tstellarAMD, arsenm

Subscribers: llvm-commits, arsenm

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

llvm-svn: 262356

8 years ago[CLANG][AVX512][BUILTIN] Adding PSRL{DI|QI}{128|256|512} builtin
Michael Zuckerman [Tue, 1 Mar 2016 17:49:03 +0000 (17:49 +0000)]
[CLANG][AVX512][BUILTIN] Adding PSRL{DI|QI}{128|256|512} builtin

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

llvm-svn: 262355

8 years ago[libFuzzer] remove FuzzerSanitizerOptions.cpp
Kostya Serebryany [Tue, 1 Mar 2016 17:46:32 +0000 (17:46 +0000)]
[libFuzzer] remove FuzzerSanitizerOptions.cpp

llvm-svn: 262354

8 years ago[LLVM][AVX512] PSRL{DI|QI} Change imm8 to int
Michael Zuckerman [Tue, 1 Mar 2016 17:46:32 +0000 (17:46 +0000)]
[LLVM][AVX512] PSRL{DI|QI} Change imm8 to int
Differential Revision: http://reviews.llvm.org/D17713

llvm-svn: 262353

8 years ago[X86] Check that attribute parameters match for tail calls (PR26590)
Hans Wennborg [Tue, 1 Mar 2016 17:45:23 +0000 (17:45 +0000)]
[X86] Check that attribute parameters match for tail calls (PR26590)

In the code below on 32-bit targets, x would previously get forwarded to g()
without sign-extension to 32 bits as required by the parameter attribute.

  void g(signed short);
  void f(unsigned short x) {
    g(x);
  }

llvm-svn: 262352

8 years agofix documentation comments; NFC
Sanjay Patel [Tue, 1 Mar 2016 17:25:35 +0000 (17:25 +0000)]
fix documentation comments; NFC

llvm-svn: 262351

8 years agoExplicitly select IAS in new embed-bitcode.c test.
Daniel Sanders [Tue, 1 Mar 2016 17:15:11 +0000 (17:15 +0000)]
Explicitly select IAS in new embed-bitcode.c test.

This should fix clang-cmake-mips builder since MIPS does not have IAS enabled
by default (yet).

llvm-svn: 262350

8 years agoRevert "calculate builtin_object_size if argument is a removable pointer"
Petar Jovanovic [Tue, 1 Mar 2016 16:50:08 +0000 (16:50 +0000)]
Revert "calculate builtin_object_size if argument is a removable pointer"

Revert r262337 as "check-llvm ubsan" step failed on
sanitizer-x86_64-linux-fast buildbot.

llvm-svn: 262349

8 years ago[ELF] - Create _DYNAMIC symbol for dynamic output
George Rimar [Tue, 1 Mar 2016 16:23:13 +0000 (16:23 +0000)]
[ELF] - Create _DYNAMIC symbol for dynamic output

lld needs to provide _DYNAMIC symbol when creating a shared library
both bfd and gold do that.

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

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

llvm-svn: 262348

8 years agofunction names start with a lowercase letter; NFC
Sanjay Patel [Tue, 1 Mar 2016 16:17:48 +0000 (16:17 +0000)]
function names start with a lowercase letter; NFC

llvm-svn: 262347

8 years ago[AMDGPU] Remove unused disassembler code.
Nikolay Haustov [Tue, 1 Mar 2016 16:02:40 +0000 (16:02 +0000)]
[AMDGPU] Remove unused disassembler code.

llvm-svn: 262346

8 years agoFix BUILD_SHARED_LIBS build.
Rafael Espindola [Tue, 1 Mar 2016 15:56:53 +0000 (15:56 +0000)]
Fix BUILD_SHARED_LIBS build.

llvm-svn: 262345

8 years agoRefactor duplicated code for linking with pthread.
Rafael Espindola [Tue, 1 Mar 2016 15:54:40 +0000 (15:54 +0000)]
Refactor duplicated code for linking with pthread.

llvm-svn: 262344

8 years agotsan: describe heap/data locations in Go
Dmitry Vyukov [Tue, 1 Mar 2016 15:38:12 +0000 (15:38 +0000)]
tsan: describe heap/data locations in Go

llvm-svn: 262343

8 years agosanitizer_common: silence compiler warning
Dmitry Vyukov [Tue, 1 Mar 2016 15:36:42 +0000 (15:36 +0000)]
sanitizer_common: silence compiler warning

llvm-svn: 262342

8 years ago[cmake] Add a few more compiler-rt check-* targets for EXTERNAL_COMPILER_RT
Filipe Cabecinhas [Tue, 1 Mar 2016 15:33:52 +0000 (15:33 +0000)]
[cmake] Add a few more compiler-rt check-* targets for EXTERNAL_COMPILER_RT

llvm-svn: 262341

8 years ago[cmake] Try to appease the buildbots.
Filipe Cabecinhas [Tue, 1 Mar 2016 15:07:19 +0000 (15:07 +0000)]
[cmake] Try to appease the buildbots.

llvm-svn: 262340

8 years agoDWARFExpression: Don't resolve load address in DW_OP_plus
Tamas Berghammer [Tue, 1 Mar 2016 15:01:05 +0000 (15:01 +0000)]
DWARFExpression: Don't resolve load address in DW_OP_plus

If we have a TargetLoadAddress on the top of the DWARF stack then a
DW_OP_plus or a DW_OP_plus_ucons sholudn't dereference (resolve) it
and then add the value to the dereferenced value but it should offset
the load address by the specified constant.

llvm-svn: 262339

8 years ago[AMDGPU] Fix build warnings.
Nikolay Haustov [Tue, 1 Mar 2016 14:50:59 +0000 (14:50 +0000)]
[AMDGPU] Fix build warnings.

llvm-svn: 262338

8 years agocalculate builtin_object_size if argument is a removable pointer
Petar Jovanovic [Tue, 1 Mar 2016 14:39:55 +0000 (14:39 +0000)]
calculate builtin_object_size if argument is a removable pointer

This patch fixes calculating correct value for builtin_object_size function
when pointer is used only in builtin_object_size function call and never
after that.

Patch by Strahinja Petrovic.

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

llvm-svn: 262337

8 years ago[cmake] Pass through the cmake_3_2_USES_TERMINAL variable so we get progress bars...
Filipe Cabecinhas [Tue, 1 Mar 2016 14:10:38 +0000 (14:10 +0000)]
[cmake] Pass through the cmake_3_2_USES_TERMINAL variable so we get progress bars on an external compiler-rt build

llvm-svn: 262336

8 years ago[cmake] Use CMake's USES_TERMINAL for the test targets.
Filipe Cabecinhas [Tue, 1 Mar 2016 14:08:18 +0000 (14:08 +0000)]
[cmake] Use CMake's USES_TERMINAL for the test targets.

llvm-svn: 262335

8 years ago[cmake] Fallback to LLVM_EXTERNAL_COMPILER_RT_SOURCE_DIR if COMPILER_RT_SRC_ROOT...
Filipe Cabecinhas [Tue, 1 Mar 2016 14:08:13 +0000 (14:08 +0000)]
[cmake] Fallback to LLVM_EXTERNAL_COMPILER_RT_SOURCE_DIR if COMPILER_RT_SRC_ROOT doesn't exist.

llvm-svn: 262334

8 years agoSlightly improve logging in LLGS tests
Pavel Labath [Tue, 1 Mar 2016 14:04:41 +0000 (14:04 +0000)]
Slightly improve logging in LLGS tests

we're sometimes getting an exception here, and I want to see why...

llvm-svn: 262333

8 years ago[AMDGPU] Disassembler code refactored + error messages.
Nikolay Haustov [Tue, 1 Mar 2016 13:57:29 +0000 (13:57 +0000)]
[AMDGPU] Disassembler code refactored + error messages.

Idea behind this change is to make code shorter and as much common for all targets as possible. Let's even accept more code than is valid for a particular target, leaving it for the assembler to sort out.

64bit instructions decoding added.

Error\warning messages on unrecognized instructions operands added, InstPrinter allowed to print invalid operands helping to find invalid/unsupported code.

The change is massive and hard to compare with previous version, so it makes sense just to take a look on the new version. As a bonus, with a few TD changes following, it disassembles the majority of instructions. Currently it fully disassembles >300K binary source of some blas kernel.

Previous TODOs were saved whenever possible.

Patch by: Valery Pykhtin

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

llvm-svn: 262332

8 years agoProduce PT_NOTE program headers.
Rafael Espindola [Tue, 1 Mar 2016 13:23:29 +0000 (13:23 +0000)]
Produce PT_NOTE program headers.

llvm-svn: 262331

8 years ago[LTO] Fix error reporting from lto_module_create_in_local_context()
Petr Pavlu [Tue, 1 Mar 2016 13:13:49 +0000 (13:13 +0000)]
[LTO] Fix error reporting from lto_module_create_in_local_context()

Function lto_module_create_in_local_context() would previously
rely on the default LLVMContext being created for it by
LTOModule::makeLTOModule(). This context exits the program on
error and is not arranged to update sLastStringError in
tools/lto/lto.cpp.

Function lto_module_create_in_local_context() now creates an
LLVMContext by itself, sets it up correctly to its needs and then
passes it to LTOModule::createInLocalContext() which takes
ownership of the context and keeps it present for the lifetime of
the returned LTOModule.

Function LTOModule::makeLTOModule() is modified to take a
reference to LLVMContext (instead of a pointer) and no longer
creates a default context when nullptr is passed to it. Method
LTOModule::createInContext() that takes a pointer to LLVMContext
is removed because it allows to pass a nullptr to it. Instead
LTOModule::createFromBuffer() (that takes a reference to
LLVMContext) should be used.

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

llvm-svn: 262330

8 years agoFormatTests: Update libdeps corresponding to r262323.
NAKAMURA Takumi [Tue, 1 Mar 2016 13:11:36 +0000 (13:11 +0000)]
FormatTests: Update libdeps corresponding to r262323.

llvm-svn: 262329

8 years agoTrack assumptions and restrictions separatly
Johannes Doerfert [Tue, 1 Mar 2016 13:06:28 +0000 (13:06 +0000)]
Track assumptions and restrictions separatly

  In order to speed up compile time and to avoid random timeouts we now
  separately track assumptions and restrictions. In this context
  assumptions describe parameter valuations we need and restrictions
  describe parameter valuations we do not allow. During AST generation
  we create a runtime check for both, whereas the one for the
  restrictions is negated before a conjunction is build.

  Except the In-Bounds assumptions we currently only track restrictions.

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

llvm-svn: 262328

8 years ago[FIX] Prevent compile time problems due to complex invariant loads
Johannes Doerfert [Tue, 1 Mar 2016 13:05:14 +0000 (13:05 +0000)]
[FIX] Prevent compile time problems due to complex invariant loads

  This cures the symptoms we see in h264 of SPEC2006 but not the cause.

llvm-svn: 262327

8 years ago[CLANG][AVX512][BUILTIN] Adding PSRLV builtin
Michael Zuckerman [Tue, 1 Mar 2016 13:03:45 +0000 (13:03 +0000)]
[CLANG][AVX512][BUILTIN] Adding PSRLV builtin

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

llvm-svn: 262326

8 years agoFix test breakage on windows where the default std is c++11 by forcing c++03 in the...
Manuel Klimek [Tue, 1 Mar 2016 12:53:18 +0000 (12:53 +0000)]
Fix test breakage on windows where the default std is c++11 by forcing c++03 in the test.

llvm-svn: 262325

8 years agoFix DLL build by adding required dependency.
Manuel Klimek [Tue, 1 Mar 2016 12:47:30 +0000 (12:47 +0000)]
Fix DLL build by adding required dependency.

llvm-svn: 262324

8 years agoAdd functions to apply replacements and reformat them.
Manuel Klimek [Tue, 1 Mar 2016 12:37:30 +0000 (12:37 +0000)]
Add functions to apply replacements and reformat them.

This is a commonly useful feature to have, and we have implemented it
multiple times with different kinds of bugs. This implementation
centralizes the idea in a set of functions that we can then use from the various
tools.

Reverts r262234, which is a revert of r262232, and puts the functions
into FOrmat.h, as they are closely coupled to clang-format, and we
otherwise introduce a cyclic dependency between libFormat and
libTooling.

Patch by Eric Liu.

llvm-svn: 262323

8 years agoFix warning in NSDictionary.cpp
Pavel Labath [Tue, 1 Mar 2016 11:40:47 +0000 (11:40 +0000)]
Fix warning in NSDictionary.cpp

llvm-svn: 262322

8 years ago[CLANG] [AVX512] [BUILTIN] Adding PSRA{Q|D|QI|DI}{128|256|512} builtin
Michael Zuckerman [Tue, 1 Mar 2016 11:38:16 +0000 (11:38 +0000)]
[CLANG] [AVX512] [BUILTIN] Adding PSRA{Q|D|QI|DI}{128|256|512} builtin

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

llvm-svn: 262321

8 years ago[AVX512][PSRAQ][PSRAD] Change imm8 to int.
Michael Zuckerman [Tue, 1 Mar 2016 11:36:23 +0000 (11:36 +0000)]
[AVX512][PSRAQ][PSRAD] Change imm8 to int.

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

llvm-svn: 262320