platform/upstream/llvm.git
8 years ago[CodeGenPrepare] use branch weight metadata to decide if a select should be turned...
Sanjay Patel [Tue, 26 Apr 2016 17:11:17 +0000 (17:11 +0000)]
[CodeGenPrepare] use branch weight metadata to decide if a select should be turned into a branch

This is part of solving PR27344:
https://llvm.org/bugs/show_bug.cgi?id=27344

CGP should undo the SimplifyCFG transform for the same reason that earlier patches have used this
same mechanism: it's possible that passes between SimplifyCFG and CGP may be able to optimize the
IR further with a select in place.

For the TLI hook default, >99% taken or not taken is chosen as the default threshold for a highly
predictable branch. Even the most limited HW branch predictors will be correct on this branch almost
all the time, so even a massive mispredict penalty perf loss would be overcome by the win from all
the times the branch was predicted correctly.

As a follow-up, we could make the default target hook less conservative by using the SchedMachineModel's
MispredictPenalty. Or we could just let targets override the default by implementing the hook with that
and other target-specific options. Note that trying to statically determine mispredict rates for
close-to-balanced profile weight data is generally impossible if the HW is sufficiently advanced. Ie,
50/50 taken/not-taken might still be 100% predictable.

Finally, note that this patch as-is will not solve PR27344 because the current __builtin_unpredictable()
branch weight default values are 4 and 64. A proposal to change that is in D19435.

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

llvm-svn: 267572

8 years agoFix build broken due to order of initialization problem.
Zachary Turner [Tue, 26 Apr 2016 16:57:53 +0000 (16:57 +0000)]
Fix build broken due to order of initialization problem.

llvm-svn: 267571

8 years ago[clang-tidy] Enhance misc-suspicious-string-compare to move down false-positives.
Etienne Bergeron [Tue, 26 Apr 2016 16:53:21 +0000 (16:53 +0000)]
[clang-tidy] Enhance misc-suspicious-string-compare to move down false-positives.

Summary:
The checker was noisy when running over llvm code base.
This patch is impriving the way string-compare functions are matched.

1) By default, do not report !strcmp(...) unless it's activate by the user,
2) Only match suspicious expression over a subset of expression (binary operator),
3) Added matching of macro wrapper used with clang on linux.

See bug: 27465.

Reviewers: alexfh

Subscribers: cfe-commits

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

llvm-svn: 267570

8 years agoRemove unnecessary function type directives for ifuncs.
Peter Collingbourne [Tue, 26 Apr 2016 16:50:02 +0000 (16:50 +0000)]
Remove unnecessary function type directives for ifuncs.

llvm-svn: 267569

8 years agoDon't gc symbols that have to go in the dynamic symbol table.
Rafael Espindola [Tue, 26 Apr 2016 16:26:45 +0000 (16:26 +0000)]
Don't gc symbols that have to go in the dynamic symbol table.

We were only doing it for .so and --export-dynamic, but those are not
the only ways a symbol ends up in the dynamic symbol table.

Problem diagnostic and earlier patch version by Peter Collingbourne.

llvm-svn: 267568

8 years ago#include <test_macros.h> in all the regex tests, and remove all mentions of __cpluplu...
Marshall Clow [Tue, 26 Apr 2016 16:24:44 +0000 (16:24 +0000)]
#include <test_macros.h> in all the regex tests, and remove all mentions of __cpluplus (use TEST_STD_VERS and/or XFAIL instead). No functional change

llvm-svn: 267567

8 years agoELF: Treat IFunc definitions in DSOs as functions.
Peter Collingbourne [Tue, 26 Apr 2016 16:22:51 +0000 (16:22 +0000)]
ELF: Treat IFunc definitions in DSOs as functions.

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

llvm-svn: 267566

8 years ago[ELF] Avoid polluting source directory with temp files.
Davide Italiano [Tue, 26 Apr 2016 16:21:59 +0000 (16:21 +0000)]
[ELF] Avoid polluting source directory with temp files.

llvm-svn: 267565

8 years agoRefactor some more PDB reading code into DebugInfoPDB.
Zachary Turner [Tue, 26 Apr 2016 16:20:00 +0000 (16:20 +0000)]
Refactor some more PDB reading code into DebugInfoPDB.

Differential Revision: http://reviews.llvm.org/D19445
Reviewed By: David Majnemer

llvm-svn: 267564

8 years ago[AMDGPU] Reserve VGPRs for trap handler usage if instructed
Konstantin Zhuravlyov [Tue, 26 Apr 2016 15:43:14 +0000 (15:43 +0000)]
[AMDGPU] Reserve VGPRs for trap handler usage if instructed

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

llvm-svn: 267563

8 years agoFix send and receive of ACK byte in test infrastructure for Python 3.5
Adrian McCarthy [Tue, 26 Apr 2016 15:15:29 +0000 (15:15 +0000)]
Fix send and receive of ACK byte in test infrastructure for Python 3.5

Python 3.5 is pickier about the distinction between chars and bytes (and strings and bytearrays) than Python 2.7.

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

llvm-svn: 267562

8 years ago[SPIR] Remove an assert mandating SPIR for OpenCL sources only.
Anastasia Stulova [Tue, 26 Apr 2016 15:14:01 +0000 (15:14 +0000)]
[SPIR] Remove an assert mandating SPIR for OpenCL sources only.

SPIR target can be used for C/C++ inputs too (i.e. in OpenCL compatible mode for the libs creation).

Patch by Neil Henning!

Review: http://reviews.llvm.org/D19478
llvm-svn: 267561

8 years ago[OpenMP] Improve mappable expressions Sema.
Samuel Antao [Tue, 26 Apr 2016 14:54:23 +0000 (14:54 +0000)]
[OpenMP] Improve mappable expressions Sema.

Summary:
This patch adds logic to save the components of mappable expressions in the clause that uses it, so that they don't have to be recomputed during codegen. Given that the mappable components are (will be) used in several clauses a new geneneric implementation `OMPMappableExprListClause` is used that extends the existing `OMPVarListClause`.

This patch does not add new tests. The goal is to preserve the existing functionality while storing more info in the clauses.

Reviewers: hfinkel, carlo.bertolli, arpith-jacob, kkwli0, ABataev

Subscribers: cfe-commits, caomhin

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

llvm-svn: 267560

8 years agoAllow unsigned comparisons
Johannes Doerfert [Tue, 26 Apr 2016 14:33:12 +0000 (14:33 +0000)]
Allow unsigned comparisons

  With this patch we will optimistically assume that the result of an unsigned
  comparison is the same as the result of the same comparison interpreted as
  signed.

llvm-svn: 267559

8 years agoHandle --as-needed with symbols, not relocations.
Rafael Espindola [Tue, 26 Apr 2016 13:56:26 +0000 (13:56 +0000)]
Handle --as-needed with symbols, not relocations.

This matches the behavior of both gold and bfd.

llvm-svn: 267558

8 years agoUpdate test after LLVM r267556.
Nico Weber [Tue, 26 Apr 2016 13:54:29 +0000 (13:54 +0000)]
Update test after LLVM r267556.

llvm-svn: 267557

8 years agoUse gcc's rules for parsing gcc-style response files
Nico Weber [Tue, 26 Apr 2016 13:53:56 +0000 (13:53 +0000)]
Use gcc's rules for parsing gcc-style response files

In gcc, \ escapes every character in response files. It is true that this makes
it harder to mention Windows files in rsp files, but not doing this means clang
disagrees with gcc, and also disagrees with the shell (on non-Windows) which
rsp file quoting is supposed to match. clang isn't free to choose what to do
here.

In general, the idea for response files is to take bits of your command line
and write them to a file unchanged, and have things work the same way. Since
the command line would've been interpreted by the shell, things in the rsp file
need to be subject to the same shell quoting rules.

People who want to put Windows-style paths in their response files either need
to do any of:
* escape their backslashes
* or use clang-cl which uses cl.exe/cmd.exe quoting rules
* pass --rsp-quoting=windows to clang to tell it to use
  cl.exe/cmd.exe quoting rules for response files.

Fixes PR27464.
http://reviews.llvm.org/D19417

llvm-svn: 267556

8 years agoStore the binding in the Symbol.
Rafael Espindola [Tue, 26 Apr 2016 13:50:46 +0000 (13:50 +0000)]
Store the binding in the Symbol.

This remove a fixme, cleans up the weak undef interaction with archives and
lets us keep weak undefs still weak if they resolve to shared.

llvm-svn: 267555

8 years agoBump up timeout in TestCallWithTimeout
Pavel Labath [Tue, 26 Apr 2016 13:37:24 +0000 (13:37 +0000)]
Bump up timeout in TestCallWithTimeout

Expression very rarely (linux buildbot, build 13907) completed before we managed to interrupt it.

llvm-svn: 267554

8 years ago[AMDGPU] Assembler: basic support for SDWA instructions
Sam Kolton [Tue, 26 Apr 2016 13:33:56 +0000 (13:33 +0000)]
[AMDGPU] Assembler: basic support for SDWA instructions

Support for SDWA instructions for VOP1 and VOP2 encoding.
Not done yet:
  - converters for support optional operands and modifiers
  - VOPC
  - sext() modifier
  - intrinsics
  - VOP2b (see vop_dpp.s)
  - V_MAC_F32 (see vop_dpp.s)

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

llvm-svn: 267553

8 years ago[FIX] Adjust assumption space for zext instructions
Johannes Doerfert [Tue, 26 Apr 2016 12:44:01 +0000 (12:44 +0000)]
[FIX] Adjust assumption space for zext instructions

llvm-svn: 267552

8 years ago[X86] PR27502: Fix the LEA optimization pass.
Andrey Turetskiy [Tue, 26 Apr 2016 12:18:12 +0000 (12:18 +0000)]
[X86] PR27502: Fix the LEA optimization pass.

Handle MachineBasicBlock as a memory displacement operand in the LEA optimization pass.

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

llvm-svn: 267551

8 years agorL267291: Architecture change to thumb on parsing arm.attributes causes regression.
Omair Javaid [Tue, 26 Apr 2016 11:26:00 +0000 (11:26 +0000)]
rL267291: Architecture change to thumb on parsing arm.attributes causes regression.

Remove case handling elf arm attribute Tag_THUMB_ISA_use and setting architecture to thumb.

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

llvm-svn: 267550

8 years ago[Sparc] Fix build error introduced by rL267545.
Marcin Koscielnicki [Tue, 26 Apr 2016 10:43:47 +0000 (10:43 +0000)]
[Sparc] Fix build error introduced by rL267545.

llvm-svn: 267549

8 years ago[sanitizer] [SystemZ] Add ptrace support bits.
Marcin Koscielnicki [Tue, 26 Apr 2016 10:41:30 +0000 (10:41 +0000)]
[sanitizer] [SystemZ] Add ptrace support bits.

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

llvm-svn: 267548

8 years ago[sanitizer] [SystemZ] Implement internal_clone.
Marcin Koscielnicki [Tue, 26 Apr 2016 10:41:19 +0000 (10:41 +0000)]
[sanitizer] [SystemZ] Implement internal_clone.

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

llvm-svn: 267547

8 years ago[PowerPC] Add support for llvm.thread.pointer
Marcin Koscielnicki [Tue, 26 Apr 2016 10:37:22 +0000 (10:37 +0000)]
[PowerPC] Add support for llvm.thread.pointer

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

llvm-svn: 267546

8 years ago[SPARC] [SSP] Add support for LOAD_STACK_GUARD.
Marcin Koscielnicki [Tue, 26 Apr 2016 10:37:14 +0000 (10:37 +0000)]
[SPARC] [SSP] Add support for LOAD_STACK_GUARD.

This fixes PR22248 on sparc.

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

llvm-svn: 267545

8 years ago[SPARC] Add support for llvm.thread.pointer.
Marcin Koscielnicki [Tue, 26 Apr 2016 10:37:01 +0000 (10:37 +0000)]
[SPARC] Add support for llvm.thread.pointer.

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

llvm-svn: 267544

8 years agoThinLTOCodeGenerator: preserve linkonce when in "MustPreserved" set
Mehdi Amini [Tue, 26 Apr 2016 10:35:01 +0000 (10:35 +0000)]
ThinLTOCodeGenerator: preserve linkonce when in "MustPreserved" set

If the linker specifically requested for a linkonce to be preserved,
we need to make sure we won't drop it even if all the uses in the
current module disappear.

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 267543

8 years agoA clang-tidy check for std:accumulate.
Alexander Kornienko [Tue, 26 Apr 2016 10:05:45 +0000 (10:05 +0000)]
A clang-tidy check for std:accumulate.

Summary:
For folds (e.g. std::accumulate), check matches between the provided init value and the range's value_type. A typical error is "std::accumulate(begin, end, 0);", where begin and end have float value_type. See the documentation for more examples.

For now we check std::accumulate, std::reduce and std::inner_product.

Reviewers: hokein, alexfh

Subscribers: Prazek, aaron.ballman, cfe-commits, courbet

Patch by ClĂ©ment Courbet!

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

llvm-svn: 267542

8 years agoRevert "ARM: put correct symbol index on indirect pointers in __thread_ptr."
Renato Golin [Tue, 26 Apr 2016 10:02:02 +0000 (10:02 +0000)]
Revert "ARM: put correct symbol index on indirect pointers in __thread_ptr."

This reverts commit r267488, as it broke some ARM buildbots.

llvm-svn: 267541

8 years ago[MSVC] PR27337: allow static_cast from private base to derived for WTL
Dmitry Polukhin [Tue, 26 Apr 2016 09:21:17 +0000 (09:21 +0000)]
[MSVC] PR27337: allow static_cast from private base to derived for WTL

MSVC doesn't report even warning for cast from private base class to
derived.

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

llvm-svn: 267534

8 years agoDo not use the number of parameters in the complexity check
Johannes Doerfert [Tue, 26 Apr 2016 09:20:41 +0000 (09:20 +0000)]
Do not use the number of parameters in the complexity check

llvm-svn: 267532

8 years agoDo not add but record signed-unsigned assumptions
Johannes Doerfert [Tue, 26 Apr 2016 09:16:36 +0000 (09:16 +0000)]
Do not add but record signed-unsigned assumptions

llvm-svn: 267528

8 years ago[ppc64] Reenable sibling call optimization on ppc64 since fixed tsan library tail...
Chuang-Yu Cheng [Tue, 26 Apr 2016 07:38:24 +0000 (07:38 +0000)]
[ppc64] Reenable sibling call optimization on ppc64 since fixed tsan library tail-call issue

print-stack-trace.cc test failure of compiler-rt has been fixed by
r266869 (http://reviews.llvm.org/D19148), so reenable sibling call
optimization on ppc64

Reviewers: nemanjai kbarton
llvm-svn: 267527

8 years agoRevert "[sanitizers] read/write page fault detection on mac."
Mehdi Amini [Tue, 26 Apr 2016 07:03:11 +0000 (07:03 +0000)]
Revert "[sanitizers] read/write page fault detection on mac."

This reverts commit r267477.
It broke our bots that enables the AArch64 backends, it seems that
this code is using a Darwin *X86 specific* field.

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 267526

8 years agoAlign case statements (whitespace-only cleanup)
Sanjoy Das [Tue, 26 Apr 2016 05:59:14 +0000 (05:59 +0000)]
Align case statements (whitespace-only cleanup)

llvm-svn: 267525

8 years agoSymbolize operand bundle blocks for bcanalyzer
Sanjoy Das [Tue, 26 Apr 2016 05:59:08 +0000 (05:59 +0000)]
Symbolize operand bundle blocks for bcanalyzer

Reviewers: joker.eph

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 267524

8 years ago[ELF] Simplify. Pointed out by Rui Ueyama.
Davide Italiano [Tue, 26 Apr 2016 05:51:37 +0000 (05:51 +0000)]
[ELF] Simplify. Pointed out by Rui Ueyama.

llvm-svn: 267523

8 years ago[AArch64] Expand v1i64 and v2i64 ctlz.
Craig Topper [Tue, 26 Apr 2016 05:26:51 +0000 (05:26 +0000)]
[AArch64] Expand v1i64 and v2i64 ctlz.

The default is legal, which results in 'Cannot select' errors.

llvm-svn: 267522

8 years ago[ARM] Expand vector ctlz_zero_undef so it becomes ctlz.
Craig Topper [Tue, 26 Apr 2016 05:04:37 +0000 (05:04 +0000)]
[ARM] Expand vector ctlz_zero_undef so it becomes ctlz.

The default is Legal, which results in 'Cannot select' errors.

llvm-svn: 267521

8 years ago[ARM] Expand v1i64 and v2i64 ctlz.
Craig Topper [Tue, 26 Apr 2016 05:04:33 +0000 (05:04 +0000)]
[ARM] Expand v1i64 and v2i64 ctlz.

The default is legal, which results in 'Cannot select' errors.

llvm-svn: 267520

8 years agoTune basic block annotation algorithm.
Dehao Chen [Tue, 26 Apr 2016 04:59:11 +0000 (04:59 +0000)]
Tune basic block annotation algorithm.

Summary:
Instead of using maximum IR weight as the basic block weight, this patch uses the voting algorithm to find the most likely weight for the basic block. This can effectively avoid the cases when some IRs are annotated incorrectly due to code motion of the profiled binary.

This patch also updates propagate.ll unittest to include discriminator in the input file so that it is testing something meaningful.

Reviewers: davidxl, dnovillo

Subscribers: llvm-commits

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

llvm-svn: 267519

8 years ago[powerpc] mark JIT tests as UNSUPPORTED on powerpc64 big endian
Bill Seurer [Tue, 26 Apr 2016 03:59:19 +0000 (03:59 +0000)]
[powerpc] mark JIT tests as UNSUPPORTED on powerpc64 big endian

Some of the JIT tests began failing with "[llvm] r266663 - [Orc] Re-commit
r266581 with fixes for MSVC, and format cleanups." on powerpc64 big endian.
To get the buildbots running I am marking these as UNSUPPORTED for now.

If this is fixed remove the UNSUPPORTED flag "powerpc64-unknown-linux-gnu".

In r267516 I marked these as XFAIL but they succeed on some of the bots
on stage1.

llvm-svn: 267518

8 years agoPass the test file in through stdin instead of by filename.
Richard Trieu [Tue, 26 Apr 2016 03:43:49 +0000 (03:43 +0000)]
Pass the test file in through stdin instead of by filename.

When passed in via filename, this test will fail if the path to the test
has the strings "f1" and "f2" in somewhere.  Pass the file through stdin
to prevent test failures due to coincidences in path names.

llvm-svn: 267517

8 years ago[powerpc] mark JIT tests as XFAIL on powerpc64 big endian
Bill Seurer [Tue, 26 Apr 2016 02:33:22 +0000 (02:33 +0000)]
[powerpc] mark JIT tests as XFAIL on powerpc64 big endian

Some of the JIT tests began failing with "[llvm] r266663 - [Orc] Re-commit
r266581 with fixes for MSVC, and format cleanups." on powerpc64 big endian.
To get the buildbots running I am marking these as XFAIL for now.

If this is fixed remove the XFAIL flag "powerpc64-unknown-linux-gnu".

llvm-svn: 267516

8 years ago[SimplifyCFG] Preserve !llvm.mem.parallel_loop_access when merging
Hal Finkel [Tue, 26 Apr 2016 02:06:06 +0000 (02:06 +0000)]
[SimplifyCFG] Preserve !llvm.mem.parallel_loop_access when merging

When SimplifyCFG merges identical instructions from both sides of a diamond, it
can preserve !llvm.mem.parallel_loop_access (as it does with most of the other
metadata). There's no real data or control dependency change in this case.

llvm-svn: 267515

8 years ago[LoopVectorize] Don't consider conditional-load dereferenceability for marked paralle...
Hal Finkel [Tue, 26 Apr 2016 02:00:36 +0000 (02:00 +0000)]
[LoopVectorize] Don't consider conditional-load dereferenceability for marked parallel loops

I really thought we were doing this already, but we were not. Given this input:

void Test(int *res, int *c, int *d, int *p) {
  for (int i = 0; i < 16; i++)
    res[i] = (p[i] == 0) ? res[i] : res[i] + d[i];
}

we did not vectorize the loop. Even with "assume_safety" the check that we
don't if-convert conditionally-executed loads (to protect against
data-dependent deferenceability) was not elided.

One subtlety: As implemented, it will still prefer to use a masked-load
instrinsic (given target support) over the speculated load. The choice here
seems architecture specific; the best option depends on how expensive the
masked load is compared to a regular load. Ideally, using the masked load still
reduces unnecessary memory traffic, and so should be preferred. If we'd rather
do it the other way, flipping the order of the checks is easy.

The LangRef is updated to make explicit that llvm.mem.parallel_loop_access also
implies that if conversion is okay.

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

llvm-svn: 267514

8 years agotrying to fix the windows build broken by r267496
Kostya Serebryany [Tue, 26 Apr 2016 01:53:49 +0000 (01:53 +0000)]
trying to fix the windows build broken by r267496

llvm-svn: 267513

8 years ago[lli] Fix a sign-compare warning.
Lang Hames [Tue, 26 Apr 2016 01:45:25 +0000 (01:45 +0000)]
[lli] Fix a sign-compare warning.

llvm-svn: 267512

8 years ago[WebAssembly] Account for implicit operands when computing operand indices.
Dan Gohman [Tue, 26 Apr 2016 01:40:56 +0000 (01:40 +0000)]
[WebAssembly] Account for implicit operands when computing operand indices.

llvm-svn: 267511

8 years ago[ORC] Try to work around a GCC 4.7 bug triggered by r267457.
Lang Hames [Tue, 26 Apr 2016 01:27:54 +0000 (01:27 +0000)]
[ORC] Try to work around a GCC 4.7 bug triggered by r267457.

llvm-svn: 267510

8 years agounwind: remove last instance of -Wexpansion-to-defined
Saleem Abdulrasool [Tue, 26 Apr 2016 01:11:29 +0000 (01:11 +0000)]
unwind: remove last instance of -Wexpansion-to-defined

This unifies the definition of _LIBUNWIND_BUILD_SJLJ_APIS.  It also further
generalises the definition to allow building these APIs on non-Apple targets
when `-fsjlj-excceptions` is used.  The header is now clean of macros which
expand to defined checks.

llvm-svn: 267509

8 years agoFix arm-linux-gnueabi regression due to rL267291
Omair Javaid [Tue, 26 Apr 2016 01:08:59 +0000 (01:08 +0000)]
Fix arm-linux-gnueabi regression due to rL267291

rL267291 introduces a lot regression on arm-linux LLDB testsuite.

This patch fixes half of them. I am merging it under already revied android counterpart.

Another patch fixing rest of the issue will follow this commit.

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

llvm-svn: 267508

8 years ago[SROA] Don't falsely report that changes have occured
David Majnemer [Tue, 26 Apr 2016 01:05:00 +0000 (01:05 +0000)]
[SROA] Don't falsely report that changes have occured

We would report that the function changed despite creating no new
allocas or performing any promotion.

This fixes PR27316.

llvm-svn: 267507

8 years agoReverting Thumb2SizeReduction opt bisect change to fix failing buildbots.
Andrew Kaylor [Tue, 26 Apr 2016 00:56:36 +0000 (00:56 +0000)]
Reverting Thumb2SizeReduction opt bisect change to fix failing buildbots.

llvm-svn: 267506

8 years ago[Tests] Run reproduces.s only on UNIX until I investigate a windows failure.
Davide Italiano [Tue, 26 Apr 2016 00:56:19 +0000 (00:56 +0000)]
[Tests] Run reproduces.s only on UNIX until I investigate a windows failure.

llvm-svn: 267505

8 years ago[CodeGenPrepare] don't convert an unpredictable select into control flow
Sanjay Patel [Tue, 26 Apr 2016 00:47:39 +0000 (00:47 +0000)]
[CodeGenPrepare] don't convert an unpredictable select into control flow

Suggested in the review of D19488:
http://reviews.llvm.org/D19488

llvm-svn: 267504

8 years agoCGOpenMPRuntime.h: Prune '\param IfCond' in r267395. [-Wdocumentation]
NAKAMURA Takumi [Tue, 26 Apr 2016 00:45:00 +0000 (00:45 +0000)]
CGOpenMPRuntime.h: Prune '\param IfCond' in r267395. [-Wdocumentation]

llvm-svn: 267503

8 years agoRemove MinLatency in SchedMachineModel. NFC.
Junmo Park [Tue, 26 Apr 2016 00:37:46 +0000 (00:37 +0000)]
Remove MinLatency in SchedMachineModel. NFC.

Summary:
We don't use MinLatency any more since r184032.

Reviewers: atrick, hfinkel, mcrosier

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

llvm-svn: 267502

8 years ago[Docs] Fix indentation error introduced by r267447.
George Burgess IV [Tue, 26 Apr 2016 00:31:29 +0000 (00:31 +0000)]
[Docs] Fix indentation error introduced by r267447.

llvm-svn: 267501

8 years agoWhen building the list of variables we're going to write "using $_lldb_local_vars"
Jim Ingham [Tue, 26 Apr 2016 00:29:59 +0000 (00:29 +0000)]
When building the list of variables we're going to write "using $_lldb_local_vars"
statements for, be sure not to include variables that have no locations.  We wouldn't
be able to realize them, and that will cause all expressions to fail.

llvm-svn: 267500

8 years agoPM: Port GlobalOpt to the new pass manager
Justin Bogner [Tue, 26 Apr 2016 00:28:01 +0000 (00:28 +0000)]
PM: Port GlobalOpt to the new pass manager

llvm-svn: 267499

8 years agoPM: Convert the logic for GlobalOpt into static functions. NFC
Justin Bogner [Tue, 26 Apr 2016 00:27:56 +0000 (00:27 +0000)]
PM: Convert the logic for GlobalOpt into static functions. NFC

Pass all of the state we need around as arguments, so that these
functions are easier to reuse. There is one part of this that is
unusual: we pass around a functor to look up a DomTree for a function.
This will be a necessary abstraction when we try to use this code in
both the legacy and the new pass manager.

llvm-svn: 267498

8 years ago[ELF] Introduce --reproduce flag.
Davide Italiano [Tue, 26 Apr 2016 00:22:24 +0000 (00:22 +0000)]
[ELF] Introduce --reproduce flag.

--reproduce dumps the object files in a directory chosen
(preserving the file system layout) and the linker invocation
so that people can create an archive and upload for debugging.

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

llvm-svn: 267497

8 years ago[lanai] Update handling of structs in arguments to be passed in registers.
Jacques Pienaar [Tue, 26 Apr 2016 00:09:29 +0000 (00:09 +0000)]
[lanai] Update handling of structs in arguments to be passed in registers.

Previously aggregate types were passed byval, change the ABI to pass these in registers instead.

llvm-svn: 267496

8 years ago[X86] Use LivePhysRegs in X86FixupBWInsts.
Ahmed Bougacha [Tue, 26 Apr 2016 00:00:48 +0000 (00:00 +0000)]
[X86] Use LivePhysRegs in X86FixupBWInsts.

Kill-flags, which computeRegisterLiveness uses, are not reliable.
LivePhysRegs is.

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

llvm-svn: 267495

8 years agoMake sure that the following SymbolFileDWARF functions can handle getting a lldb...
Greg Clayton [Mon, 25 Apr 2016 23:39:19 +0000 (23:39 +0000)]
Make sure that the following SymbolFileDWARF functions can handle getting a lldb::user_id_t for another SymbolFileDWARF:

CompilerDecl
SymbolFileDWARF::GetDeclForUID (lldb::user_id_t type_uid);

CompilerDeclContext
SymbolFileDWARF::GetDeclContextForUID (lldb::user_id_t type_uid)

CompilerDeclContext
SymbolFileDWARF::GetDeclContextContainingUID (lldb::user_id_t type_uid)

Type*
SymbolFileDWARF::ResolveTypeUID (lldb::user_id_t type_uid)

<rdar://problem/25592223>

llvm-svn: 267494

8 years agoGlobalOpt: Convert a bunch of tests from grep to FileCheck
Justin Bogner [Mon, 25 Apr 2016 23:36:50 +0000 (23:36 +0000)]
GlobalOpt: Convert a bunch of tests from grep to FileCheck

llvm-svn: 267493

8 years agoFix TestGetVariables.py.
Chaoren Lin [Mon, 25 Apr 2016 23:29:53 +0000 (23:29 +0000)]
Fix TestGetVariables.py.

Reviewers: sivachandra, clayborg

Subscribers: lldb-commits

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

llvm-svn: 267492

8 years agoAdd check for "branch_weights" with prof metadata
Sanjay Patel [Mon, 25 Apr 2016 23:15:16 +0000 (23:15 +0000)]
Add check for "branch_weights" with prof metadata

While we're here, fix the comment and variable names to make it
clear that these are raw weights, not percentages.

llvm-svn: 267491

8 years ago[CMake] If set we should pass LLVM_VERSION_INFO into config.h
Chris Bieneman [Mon, 25 Apr 2016 23:02:47 +0000 (23:02 +0000)]
[CMake] If set we should pass LLVM_VERSION_INFO into config.h

Autoconf used to support setting LLVM_VERSION_INFO and there is some code filtered around llvm in Support/CommandLine.cpp and LTO/LTOCodeGenerator.cpp that uses it if it is set.

We also shouldn't be explicitly setting it as a define on llvm-shlib. It is pointless there because there is no code using it in llvm-shlib, and it is better to have it as part of the generated config.h so that it is available everywhere.

llvm-svn: 267490

8 years ago[Sparc] Fix double-float fabs and fneg on little endian CPUs.
James Y Knight [Mon, 25 Apr 2016 22:54:09 +0000 (22:54 +0000)]
[Sparc] Fix double-float fabs and fneg on little endian CPUs.

The SparcV8 fneg and fabs instructions interestingly come only in a
single-float variant. Since the sign bit is always the topmost bit no
matter what size float it is, you simply operate on the high
subregister, as if it were a single float.

However, the layout of double-floats in the float registers is reversed
on little-endian CPUs, so that the high bits are in the second
subregister, rather than the first.

Thus, this expansion must check the endianness to use the correct
subregister.

llvm-svn: 267489

8 years agoARM: put correct symbol index on indirect pointers in __thread_ptr.
Tim Northover [Mon, 25 Apr 2016 22:36:07 +0000 (22:36 +0000)]
ARM: put correct symbol index on indirect pointers in __thread_ptr.

Otherwise the linker has no idea what should be resolved.

llvm-svn: 267488

8 years agoFix build warning
Andrew Kaylor [Mon, 25 Apr 2016 22:27:30 +0000 (22:27 +0000)]
Fix build warning

llvm-svn: 267487

8 years ago[MSan] Use COMMON_INTERCEPTOR_ENTER in libdl interceptors.
Marcin Koscielnicki [Mon, 25 Apr 2016 22:25:49 +0000 (22:25 +0000)]
[MSan] Use COMMON_INTERCEPTOR_ENTER in libdl interceptors.

This fixes fails in test/msan/dlerror.cc - when real dlerror calls strcmp,
our strcmp interceptor now skips poison checking, since it's called in
interceptor context.  Strictly speaking, only the dlerror change is
necessary to fix the fail, but let's also change the other two just in case.

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

llvm-svn: 267486

8 years agoAdd optimization bisect opt-in calls for AMDGPU passes
Andrew Kaylor [Mon, 25 Apr 2016 22:23:44 +0000 (22:23 +0000)]
Add optimization bisect opt-in calls for AMDGPU passes

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

llvm-svn: 267485

8 years agoReformat LLVMConstPointerNull. NFC
Amaury Sechet [Mon, 25 Apr 2016 22:23:35 +0000 (22:23 +0000)]
Reformat LLVMConstPointerNull. NFC

llvm-svn: 267484

8 years agoComment formating. NFC
Amaury Sechet [Mon, 25 Apr 2016 22:23:30 +0000 (22:23 +0000)]
Comment formating. NFC

llvm-svn: 267483

8 years agoOptimize store of "bitcast" from vector to aggregate.
Arch D. Robison [Mon, 25 Apr 2016 22:22:39 +0000 (22:22 +0000)]
Optimize store of "bitcast" from vector to aggregate.

This patch is what was the "instcombine" portion of D14185, with an additional
test added (see julia_pseudovec in test/Transforms/InstCombine/insert-val-extract-elem.ll).
The patch causes instcombine to replace sequences of extractelement-insertvalue-store
that act essentially like a bitcast followed by a store.

Differential review: http://reviews.llvm.org/D14260

llvm-svn: 267482

8 years ago[LVI] Make a precondition explicit rather than handling a case which never happens...
Philip Reames [Mon, 25 Apr 2016 22:21:24 +0000 (22:21 +0000)]
[LVI] Make a precondition explicit rather than handling a case which never happens [NFC]

llvm-svn: 267481

8 years agoAdd optimization bisect opt-in calls for ARM passes
Andrew Kaylor [Mon, 25 Apr 2016 22:01:04 +0000 (22:01 +0000)]
Add optimization bisect opt-in calls for ARM passes

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

llvm-svn: 267480

8 years agoAdd optimization bisect opt-in calls for AArch64 passes
Andrew Kaylor [Mon, 25 Apr 2016 21:58:52 +0000 (21:58 +0000)]
Add optimization bisect opt-in calls for AArch64 passes

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

llvm-svn: 267479

8 years agoFix StackFrame::GetVariables(...) function that was broken by 261858 when lambda...
Greg Clayton [Mon, 25 Apr 2016 21:54:10 +0000 (21:54 +0000)]
Fix StackFrame::GetVariables(...) function that was broken by 261858 when lambda functions were added to Block::AppendBlockVariables(). The Stackframe::GetVariables(...) function should get all variables regardless if they are in scope.

This wasn't caught by the test suite so I added a test for it.

llvm-svn: 267478

8 years ago[sanitizers] read/write page fault detection on mac.
Mike Aizatsky [Mon, 25 Apr 2016 21:44:43 +0000 (21:44 +0000)]
[sanitizers] read/write page fault detection on mac.

Subscribers: kubabrecka

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

llvm-svn: 267477

8 years agoAdd accidentally deleted "break"
Krzysztof Parzyszek [Mon, 25 Apr 2016 21:28:52 +0000 (21:28 +0000)]
Add accidentally deleted "break"

llvm-svn: 267476

8 years ago[ORC] clang-format code that was touched in r267457. NFC.
Lang Hames [Mon, 25 Apr 2016 21:21:20 +0000 (21:21 +0000)]
[ORC] clang-format code that was touched in r267457. NFC.

Commit r267457 made a lot of type-substitutions threw off code formatting and
alignment. This patch should tidy those changes up.

llvm-svn: 267475

8 years agodriver: Add a `--rsp-quoting` flag to pick response file quoting.
Nico Weber [Mon, 25 Apr 2016 21:15:49 +0000 (21:15 +0000)]
driver: Add a `--rsp-quoting` flag to pick response file quoting.

Currently, clang-cl always uses Windows style for unquoting, and clang always
uses POSIX style for unquoting.

With this flag, it's possible to change these defaults.

In general, response file quoting should match the shell the response file is
used in.  On Windows, it's possible to run clang-cl in a bash shell, or clang in
cmd.exe, so a flag for overriding the default behavior is natural there.

On non-Windows, Windows quoting probably never makes sense (except maybe in
Wine), but having clang-cl behave differently based on the host OS seems
strange too.  So require that people who want to use posix-style response
files with clang-cl on non-Windows pass --rsp-quoting=posix.

http://reviews.llvm.org/D19425

llvm-svn: 267474

8 years agoARM: put extern __thread stubs in a special section.
Tim Northover [Mon, 25 Apr 2016 21:12:04 +0000 (21:12 +0000)]
ARM: put extern __thread stubs in a special section.

The linker needs to know that the symbols are thread-local to do its job
properly.

llvm-svn: 267473

8 years agoRemove architecture dependent Hwloc DEBUG section
Jonathan Peyton [Mon, 25 Apr 2016 21:11:26 +0000 (21:11 +0000)]
Remove architecture dependent Hwloc DEBUG section

This debug sections's functionality can be replicated using the environment
variable KMP_TOPOLOGY_METHOD with different values and KMP_AFFINITY=verbose

llvm-svn: 267472

8 years ago[ThinLTO] Introduce typedef for commonly-used map type (NFC)
Teresa Johnson [Mon, 25 Apr 2016 21:09:51 +0000 (21:09 +0000)]
[ThinLTO] Introduce typedef for commonly-used map type (NFC)

Add a typedef for the std::map<GlobalValue::GUID, GlobalValueSummary *>
map that is passed around to identify summaries for values defined in a
particular module. This shortens up declarations in a variety of places.

llvm-svn: 267471

8 years agoFix buffer problem with printing long Hwloc affinity mask
Jonathan Peyton [Mon, 25 Apr 2016 21:08:31 +0000 (21:08 +0000)]
Fix buffer problem with printing long Hwloc affinity mask

This change has the hwloc_bitmap_list_snprintf() function use the entire buffer
to print the mask.  There is no need to shorten the buffer length by 7.  It only
needs to be shortened by one byte.

llvm-svn: 267470

8 years ago[Hexagon] Few fixes for exception handling
Krzysztof Parzyszek [Mon, 25 Apr 2016 21:05:19 +0000 (21:05 +0000)]
[Hexagon] Few fixes for exception handling

llvm-svn: 267469

8 years agoMaintain register numbering across xml include features
Francis Ricci [Mon, 25 Apr 2016 21:03:55 +0000 (21:03 +0000)]
Maintain register numbering across xml include features

Summary:
If the remote uses include features when communicating
xml register info back to lldb, the existing code would reset the
lldb register index at the beginning of each include node.
This would lead to multiple registers having the same lldb register index.
Since the lldb register numbers should be contiguous and unique,
maintain them accross the parsing of all of the xml feature nodes.

Reviewers: jingham, jasonmolenda, clayborg

Subscribers: lldb-commits, sas

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

llvm-svn: 267468

8 years agoProperly unload modules from target image list when using svr4 packets
Francis Ricci [Mon, 25 Apr 2016 21:02:24 +0000 (21:02 +0000)]
Properly unload modules from target image list when using svr4 packets

Summary:
When we receive an svr4 packet from the remote, we check for new modules
and add them to the list of images in the target. However, we did not
do the same for modules which have been removed.

This was causing TestLoadUnload to fail when using ds2, which uses
svr4 packets to communicate all library info on Linux. This patch fixes
the failing test.

Reviewers: zturner, tfiala, ADodds

Subscribers: lldb-commits, sas

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

llvm-svn: 267467

8 years agoUse Process Plugin register indices when communicating with remote
Francis Ricci [Mon, 25 Apr 2016 20:59:11 +0000 (20:59 +0000)]
Use Process Plugin register indices when communicating with remote

Summary:
eRegisterKindProcessPlugin is used to store the register
indices used by the remote, and eRegisterKindLLDB is used
to store the internal lldb register indices. However, we're currently
using the lldb indices instead of the process plugin indices
when sending p/P packets. This will break if the remote uses
non-contiguous register indices.

Reviewers: jasonmolenda, clayborg

Subscribers: lldb-commits, sas

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

llvm-svn: 267466

8 years agoRe-apply r267206 with a fix for the encoding problem: when the immediate of
Quentin Colombet [Mon, 25 Apr 2016 20:54:08 +0000 (20:54 +0000)]
Re-apply r267206 with a fix for the encoding problem: when the immediate of
log2(Mask) is smaller than 32, we must use the 32-bit variant because the 64-bit
variant cannot encode it. Therefore, set the subreg part accordingly.

[AArch64] Fix optimizeCondBranch logic.

The opcode for the optimized branch does not depend on the size
of the activate bits in the AND masks, but the AND opcode itself.
Indeed, we need to use a X or W variant based on the AND variant
not based on whether the mask fits into the related variant.
Otherwise, we may end up using the W variant of the optimized branch
for 64-bit register inputs!

This fixes the last make check verifier issues for AArch64: PR27479.

llvm-svn: 267465

8 years agoModule Debugging: Fix the condition for determining whether a template
Adrian Prantl [Mon, 25 Apr 2016 20:52:40 +0000 (20:52 +0000)]
Module Debugging: Fix the condition for determining whether a template
instantiation is in a module.

This patch fixes the condition for determining whether the debug info for a
template instantiation will exist in an imported clang module by:

- checking whether the ClassTemplateSpecializationDecl is complete and
- checking that the instantiation was in a module by looking at the first field.

I also added a negative check to make sure that a typedef to a forward-declared
template (with the definition outside of the module) is handled correctly.

http://reviews.llvm.org/D19443
rdar://problem/25553724

llvm-svn: 267464

8 years agoStore absolute path for lldb executable in dotest.py
Francis Ricci [Mon, 25 Apr 2016 20:36:22 +0000 (20:36 +0000)]
Store absolute path for lldb executable in dotest.py

Summary:
lldb-server tests are currently being skipped on the
check-lldb target. This is because we get the path of
lldb-server by modifying the path to the lldb executable.
However, by this point, we've changed directories, and a
relative path to the build/bin directory will no longer point
to the location of lldb-server.

Storing an absolute path solves this issue.

Reviewers: vharron, zturner, tfiala, labath

Subscribers: labath, lldb-commits, sas

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

llvm-svn: 267463