lldb.git
5 years agoPreparation for turning lldbsuite into a Python package.
Zachary Turner [Tue, 27 Oct 2015 22:33:47 +0000 (22:33 +0000)]
Preparation for turning lldbsuite into a Python package.

The idea behind this patch is to expose the meat of
LLDB's Python infrastructure (test suite, scripts, etc)
as a single package.  This makes reusability and code
sharing among sub-packages easy.

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

llvm-svn: 251460

5 years agoMinor fix in ToolChainTest.cpp to allow user defined GCC toolchain.
Samuel Antao [Tue, 27 Oct 2015 22:20:26 +0000 (22:20 +0000)]
Minor fix in ToolChainTest.cpp to allow user defined GCC toolchain.

If the user configured clang with a custom GCC toolchain that will take precedence on what the ToolChainTest.cpp expects to evaluate.
This is fixed here by passing --gcc-toolchain= to the driver, in order to override any user defined GCC toolchain.

llvm-svn: 251459

5 years ago[Bitcode] Fix accidental syntax errors in compatibility tests
Vedant Kumar [Tue, 27 Oct 2015 22:10:17 +0000 (22:10 +0000)]
[Bitcode] Fix accidental syntax errors in compatibility tests

We used automated tools to update our IR to its current syntax in commit
21f77df7(r247378). While it correctly updated the CHECK lines in our
compatibility tests, the IR should have remained untouched.  This commit
fixes the syntax errors.

llvm-svn: 251458

5 years agoFix editline unindentation code for more recent libedits.
Todd Fiala [Tue, 27 Oct 2015 21:53:39 +0000 (21:53 +0000)]
Fix editline unindentation code for more recent libedits.

This code was modifying the cursor and then expecting the editline
API call to see the effect for the next operation.  This is misusing
the API.  Newer editlines break on this code, fixed by this.

llvm-svn: 251457

5 years agoELF2: Move some code from MarkLive.cpp to InputSection.cpp.
Rui Ueyama [Tue, 27 Oct 2015 21:51:13 +0000 (21:51 +0000)]
ELF2: Move some code from MarkLive.cpp to InputSection.cpp.

This function is useful for ICF, so move that to a common place.

llvm-svn: 251455

5 years ago[elf2] Don't allocate VA space for TLS NOBITS sections.
Michael J. Spencer [Tue, 27 Oct 2015 21:22:54 +0000 (21:22 +0000)]
[elf2] Don't allocate VA space for TLS NOBITS sections.

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

llvm-svn: 251454

5 years ago[X86][AVX512] Test UNPCK with non-sequential scalars
Simon Pilgrim [Tue, 27 Oct 2015 21:18:45 +0000 (21:18 +0000)]
[X86][AVX512] Test UNPCK with non-sequential scalars

Missing tests for r251297

llvm-svn: 251453

5 years ago[IR] Limit bits used for CallingConv::ID, update tests
Vedant Kumar [Tue, 27 Oct 2015 21:17:06 +0000 (21:17 +0000)]
[IR] Limit bits used for CallingConv::ID, update tests

Use 10 bits to represent calling convention ID's instead of 13, and
update the bitcode compatibility tests accordingly. We now error-out in
the bitcode reader when we see bad calling conv ID's.

Thanks to rnk and dexonsmith for feedback!

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

llvm-svn: 251452

5 years ago[AliasSetTracker] Use mod/ref information for UnknownInstr
Hal Finkel [Tue, 27 Oct 2015 20:37:04 +0000 (20:37 +0000)]
[AliasSetTracker] Use mod/ref information for UnknownInstr

AliasSetTracker does not need to convert the access mode to ModRefAccess if the
new visited UnknownInst has only 'REF' modrefinfo to existing pointers in the
sets.

Patch by Andrew Zhogin!

llvm-svn: 251451

5 years agoUse the 'arcp' fast-math-flag when combining repeated FP divisors
Sanjay Patel [Tue, 27 Oct 2015 20:27:25 +0000 (20:27 +0000)]
Use the 'arcp' fast-math-flag when combining repeated FP divisors

This is a usage of the IR-level fast-math-flags now that they are propagated to SDNodes.
This was originally part of D8900.

Removing the global 'enable-unsafe-fp-math' checks will require auto-upgrade and
possibly other changes.

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

llvm-svn: 251450

5 years ago[analyzer] Assume escape is possible through system functions taking void*
Anna Zaks [Tue, 27 Oct 2015 20:19:45 +0000 (20:19 +0000)]
[analyzer] Assume escape is possible through system functions taking void*
The analyzer assumes that system functions will not free memory or modify the
arguments in other ways, so we assume that arguments do not escape when
those are called. However, this may lead to false positive leak errors. For
example, in code like this where the pointers added to the rb_tree are freed
later on:

struct alarm_event *e = calloc(1, sizeof(*e));
<snip>

rb_tree_insert_node(&alarm_tree, e);

Add a heuristic to assume that calls to system functions taking void*
arguments allow for pointer escape.

llvm-svn: 251449

5 years ago[analyzer] Enhance FAQ with instructions on handing unused variables.
Anna Zaks [Tue, 27 Oct 2015 20:19:38 +0000 (20:19 +0000)]
[analyzer] Enhance FAQ with instructions on handing unused variables.

llvm-svn: 251448

5 years ago[asan] On OS X, log reports to syslog and os_trace
Anna Zaks [Tue, 27 Oct 2015 20:13:01 +0000 (20:13 +0000)]
[asan] On OS X, log reports to syslog and os_trace

When ASan currently detects a bug, by default it will only print out the text
of the report to stderr. This patch changes this behavior and writes the full
text of the report to syslog before we terminate the process. It also calls
os_trace (Activity Tracing available on OS X and iOS) with a message saying
that the report is available in syslog. This is useful, because this message
will be shown in the crash log.

For this to work, the patch makes sure we store the full report into
error_message_buffer unconditionally, and it also strips out ANSI escape
sequences from the report (they are used when producing colored reports).

I've initially tried to log to syslog during printing, which is done on Android
right now. The advantage is that if we crash during error reporting or the
produced error does not go through ScopedInErrorReport, we would still get a
(partial) message in the syslog. However, that solution is very problematic on
OS X. One issue is that the logging routine uses GCD, which may spawn a new
thread on its behalf. In many cases, the reporting logic locks threadRegistry,
which leads to deadlocks.

Reviewed at http://reviews.llvm.org/D13452

llvm-svn: 251447

5 years ago[asan] Sort headers.
Anna Zaks [Tue, 27 Oct 2015 20:12:55 +0000 (20:12 +0000)]
[asan] Sort headers.

llvm-svn: 251446

5 years ago[asan] On OS X, tag mapped regions with VM_MEMORY_ANALYSIS_TOOL tag
Anna Zaks [Tue, 27 Oct 2015 20:12:53 +0000 (20:12 +0000)]
[asan] On OS X, tag mapped regions with VM_MEMORY_ANALYSIS_TOOL tag

This will tag all mmapped memory sanitizers use with "Performance tool data"
when viewed in vmmap. (Even though sanitizers are not performance tools, it's
the best available match and better than having the unidentified objects.)

http://reviews.llvm.org/D13609

llvm-svn: 251445

5 years agoRename `lldb_shared` to `use_lldb_suite`.
Zachary Turner [Tue, 27 Oct 2015 20:12:05 +0000 (20:12 +0000)]
Rename `lldb_shared` to `use_lldb_suite`.

llvm-svn: 251444

5 years ago[ScalarEvolutionExpander] PHI on a catchpad can be used on both edges
David Majnemer [Tue, 27 Oct 2015 19:48:28 +0000 (19:48 +0000)]
[ScalarEvolutionExpander] PHI on a catchpad can be used on both edges

A PHI on a catchpad might be used by both edges out of the catchpad,
feeding back into a loop.  In this case, just use the insertion point.
Anything more clever would require new basic blocks or PHI placement.

llvm-svn: 251442

5 years agoTweak how -Wunused-value interacts with macros
Nico Weber [Tue, 27 Oct 2015 19:47:40 +0000 (19:47 +0000)]
Tweak how -Wunused-value interacts with macros

1. Make the warning more strict in C mode. r172696 added code to suppress
   warnings from macro expansions in system headers, which checks
   `SourceMgr.isMacroBodyExpansion(E->IgnoreParens()->getExprLoc())`. Consider
   this snippet:

   #define FOO(x) (x)
   void f(int a) {
     FOO(a);
   }

   In C, the line `FOO(a)` is an `ImplicitCastExpr(ParenExpr(DeclRefExpr))`,
   while it's just a `ParenExpr(DeclRefExpr)` in C++. So in C++,
   `E->IgnoreParens()` returns the `DeclRefExpr` and the check tests the
   SourceLoc of `a`. In C, the `ImplicitCastExpr` has the effect of checking the
   SourceLoc of `FOO`, which is a macro body expansion, which causes the
   diagnostic to be skipped. It looks unintentional that clang does different
   things for C and C++ here, so use `IgnoreParenImpCasts` instead of
   `IgnoreParens` here. This has the effect of the warning firing more often
   than previously in C code – it now fires as often as it fires in C++ code.

2. Suppress the warning if it would warn on `UNREFERENCED_PARAMETER`.
   `UNREFERENCED_PARAMETER` is a commonly used macro on Windows and it happens
   to uselessly trigger -Wunused-value. As discussed in the thread
   "rfc: winnt.h's UNREFERENCED_PARAMETER() vs clang's -Wunused-value" on
   cfe-dev, fix this by special-casing this specific macro. (This costs a string
   comparison and some fast-path lexing per warning, but the warning is emitted
   rarely. It fires once in Windows.h itself, so this code runs at least once
   per TU including Windows.h, but it doesn't run hundreds of times.)

http://reviews.llvm.org/D13969

llvm-svn: 251441

5 years agoELF2: Make parseEmulation side-effect free. NFC.
Rui Ueyama [Tue, 27 Oct 2015 19:29:27 +0000 (19:29 +0000)]
ELF2: Make parseEmulation side-effect free. NFC.

llvm-svn: 251440

5 years agoUse accept4 workaround for MIPS Android build.
Chaoren Lin [Tue, 27 Oct 2015 19:17:35 +0000 (19:17 +0000)]
Use accept4 workaround for MIPS Android build.

Summary: Similar to http://reviews.llvm.org/rL242319, which was for ARM.

Reviewers: chying, ovyalov

Subscribers: aemerson, tberghammer, danalbert, srhines, lldb-commits

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

llvm-svn: 251439

5 years ago[AArch64]Merge halfword loads into a 32-bit load
Jun Bum Lim [Tue, 27 Oct 2015 19:16:03 +0000 (19:16 +0000)]
[AArch64]Merge halfword loads into a 32-bit load

This recommits r250719, which caused a failure in SPEC2000.gcc
because of the incorrect insert point for the new wider load.

Convert two halfword loads into a single 32-bit word load with bitfield extract
instructions. For example :
  ldrh w0, [x2]
  ldrh w1, [x2, #2]
becomes
  ldr w0, [x2]
  ubfx w1, w0, #16, #16
  and  w0, w0, #ffff

llvm-svn: 251438

5 years agoWhitespace.
NAKAMURA Takumi [Tue, 27 Oct 2015 19:02:52 +0000 (19:02 +0000)]
Whitespace.

llvm-svn: 251437

5 years agoRevert r251291, "Loop Vectorizer - skipping "bitcast" before GEP"
NAKAMURA Takumi [Tue, 27 Oct 2015 19:02:36 +0000 (19:02 +0000)]
Revert r251291, "Loop Vectorizer - skipping "bitcast" before GEP"

It causes miscompilation of llvm/lib/ExecutionEngine/Interpreter/Execution.cpp.
See also PR25324.

llvm-svn: 251436

5 years agoTidy a comment. NFC.
Diego Novillo [Tue, 27 Oct 2015 18:41:46 +0000 (18:41 +0000)]
Tidy a comment. NFC.

llvm-svn: 251434

5 years agoRemove unused diagnostic. NFC.
Benjamin Kramer [Tue, 27 Oct 2015 18:34:47 +0000 (18:34 +0000)]
Remove unused diagnostic. NFC.

llvm-svn: 251432

5 years ago[mips] Separated mips specific -Wa options, so that they are not checked on other...
Daniel Sanders [Tue, 27 Oct 2015 18:04:42 +0000 (18:04 +0000)]
[mips] Separated mips specific -Wa options, so that they are not checked on other platforms.

Summary: This is a follow on to post review comments on revision r248276.

Patch by Scott Egerton.

Reviewers: vkalintiris, dsanders

Subscribers: joerg, rengolin, cfe-commits

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

llvm-svn: 251430

5 years agoCreate a new interface addSuccessorWithoutWeight(MBB*) in MBB to add successors when...
Cong Hou [Tue, 27 Oct 2015 17:59:36 +0000 (17:59 +0000)]
Create a new interface addSuccessorWithoutWeight(MBB*) in MBB to add successors when optimization is disabled.

When optimization is disabled, edge weights that are stored in MBB won't be used so that we don't have to store them. Currently, this is done by adding successors with default weight 0, and if all successors have default weights, the weight list will be empty. But that the weight list is empty doesn't mean disabled optimization (as is stated several times in MachineBasicBlock.cpp): it may also mean all successors just have default weights.

We should discourage using default weights when adding successors, because it is very easy for users to forget update the correct edge weights instead of using default ones (one exception is that the MBB only has one successor). In order to detect such usages, it is better to differentiate using default weights from the case when optimizations is disabled.

In this patch, a new interface addSuccessorWithoutWeight(MBB*) is created for when optimization is disabled. In this case, MBB will try to maintain an empty weight list, but it cannot guarantee this as for many uses of addSuccessor() whether optimization is disabled or not is not checked. But it can guarantee that if optimization is enabled, then the weight list always has the same size of the successor list.

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

llvm-svn: 251429

5 years ago[SLP] Be more aggressive about reduction width selection.
Charlie Turner [Tue, 27 Oct 2015 17:59:03 +0000 (17:59 +0000)]
[SLP] Be more aggressive about reduction width selection.

Summary:
This change could be way off-piste, I'm looking for any feedback on whether it's an acceptable approach.

It never seems to be a problem to gobble up as many reduction values as can be found, and then to attempt to reduce the resulting tree. Some of the workloads I'm looking at have been aggressively unrolled by hand, and by selecting reduction widths that are not constrained by a vector register size, it becomes possible to profitably vectorize. My test case shows such an unrolling which SLP was not vectorizing (on neither ARM nor X86) before this patch, but with it does vectorize.

I measure no significant compile time impact of this change when combined with D13949 and D14063. There are also no significant performance regressions on ARM/AArch64 in SPEC or LNT.

The more principled approach I thought of was to generate several candidate tree's and use the cost model to pick the cheapest one. That seemed like quite a big design change (the algorithms seem very much one-shot), and would likely be a costly thing for compile time. This seemed to do the job at very little cost, but I'm worried I've misunderstood something!

Reviewers: nadav, jmolloy

Subscribers: mssimpso, llvm-commits, aemerson

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

llvm-svn: 251428

5 years agoAllow linking multiple bitcode files.
Artem Belevich [Tue, 27 Oct 2015 17:56:59 +0000 (17:56 +0000)]
Allow linking multiple bitcode files.

Linking options for particular file depend on the option that specifies the file.
Currently there are two:

* -mlink-bitcode-file links in complete content of the specified file.
* -mlink-cuda-bitcode links in only the symbols needed by current TU.
   Linked symbols are internalized. This bitcode linking mode is used to
   link device-specific bitcode provided by CUDA.

Files are linked in order they are specified on command line.

-mlink-cuda-bitcode replaces -fcuda-uses-libdevice flag.

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

llvm-svn: 251427

5 years agoInclude <cstdio> to fix build errors.
Hafiz Abid Qadeer [Tue, 27 Oct 2015 17:56:23 +0000 (17:56 +0000)]
Include <cstdio> to fix build errors.

This file uses things like fprintf and stderr and <cstdio> is the right
header to include. I was getting build errors without it.

llvm-svn: 251426

5 years ago[SLP] Try a bit harder to find reduction PHIs
Charlie Turner [Tue, 27 Oct 2015 17:54:16 +0000 (17:54 +0000)]
[SLP] Try a bit harder to find reduction PHIs

Summary:
Currently, when the SLP vectorizer considers whether a phi is part of a reduction, it dismisses phi's whose incoming blocks are not the same as the block containing the phi. For the patterns I'm looking at, extending this rule to allow phis whose incoming block is a containing loop latch allows me to vectorize certain workloads.

There is no significant compile-time impact, and combined with D13949, no performance improvement measured in ARM/AArch64 in any of SPEC2000, SPEC2006 or LNT.

Reviewers: jmolloy, mcrosier, nadav

Subscribers: mssimpso, nadav, aemerson, llvm-commits

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

llvm-svn: 251425

5 years ago[SLP] Treat SelectInsts as reduction values.
Charlie Turner [Tue, 27 Oct 2015 17:49:11 +0000 (17:49 +0000)]
[SLP] Treat SelectInsts as reduction values.

Summary:
Certain workloads, in particular sum-of-absdiff loops, can be vectorized using SLP if it can treat select instructions as reduction values.

The test case is a bit awkward. The AArch64 cost model needs some tuning to not be so pessimistic about selects. I've had to tweak the SLP threshold here.

Reviewers: jmolloy, mzolotukhin, spatel, nadav

Subscribers: nadav, mssimpso, aemerson, llvm-commits

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

llvm-svn: 251424

5 years ago[Orc] Fix indentation.
Lang Hames [Tue, 27 Oct 2015 17:45:48 +0000 (17:45 +0000)]
[Orc] Fix indentation.

llvm-svn: 251423

5 years agoTreat hostname in android URL as device id unless it matches "localhost".
Oleksiy Vyalov [Tue, 27 Oct 2015 17:41:34 +0000 (17:41 +0000)]
Treat hostname in android URL as device id unless it matches "localhost".

http://reviews.llvm.org/D14101

llvm-svn: 251422

5 years agoAdd a file in Makefile build which is present in CMake build.
Hafiz Abid Qadeer [Tue, 27 Oct 2015 17:39:22 +0000 (17:39 +0000)]
Add a file in Makefile build which is present in CMake build.

Since 219143, this file is missing from Makefile build. Committed as
obvious.

llvm-svn: 251421

5 years agoFix SamplePGO segfault when debug info is missing.
Diego Novillo [Tue, 27 Oct 2015 17:37:00 +0000 (17:37 +0000)]
Fix SamplePGO segfault when debug info is missing.

When emitting a remark for a conditional branch annotation, the remark
uses the line location information of the conditional branch in the
message.  In some cases, that information is unavailable and the
optimization would segfaul. I'm still not sure whether this is a bug or
WAI, but the optimizer should not die because of this.

llvm-svn: 251420

5 years ago[ms-inline-asm] Test case for alignment directive change in LLVM r251418
Reid Kleckner [Tue, 27 Oct 2015 17:34:29 +0000 (17:34 +0000)]
[ms-inline-asm] Test case for alignment directive change in LLVM r251418

llvm-svn: 251419

5 years ago[ms-inline-asm] Leave alignment in bytes if the native assembler uses bytes
Reid Kleckner [Tue, 27 Oct 2015 17:32:48 +0000 (17:32 +0000)]
[ms-inline-asm] Leave alignment in bytes if the native assembler uses bytes

The existing behavior was correct on Darwin, which is probably the
platform it was written for.

Before this change, we would rewrite "align 8" to ".align 3" and then
fail to make it through the integrated assembler because 3 is not a
power of 2.

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

llvm-svn: 251418

5 years agoAdd Socket::Create factory method which uses socket protocol to find an appropriate...
Oleksiy Vyalov [Tue, 27 Oct 2015 17:32:01 +0000 (17:32 +0000)]
Add Socket::Create factory method which uses socket protocol to find an appropriate implementation class.

http://reviews.llvm.org/D14085

llvm-svn: 251417

5 years agoFix Clang-tidy modernize-use-nullptr warnings in include/lldb/DataFormatters, Breakpo...
Eugene Zelenko [Tue, 27 Oct 2015 17:20:33 +0000 (17:20 +0000)]
Fix Clang-tidy modernize-use-nullptr warnings in include/lldb/DataFormatters, Breakpoint and Utility; other minor fixes.

llvm-svn: 251416

5 years ago[MSVC] Workaround for ICE in cl.exe when compiling ASTContext.cpp in Release Win32
Will Wilson [Tue, 27 Oct 2015 17:01:10 +0000 (17:01 +0000)]
[MSVC] Workaround for ICE in cl.exe when compiling ASTContext.cpp in Release Win32

Microsoft connect bug: https://connect.microsoft.com/VisualStudio/feedback/details/1741530

llvm-svn: 251415

5 years agoRename qsort -> multikey_qsort. NFC.
Rui Ueyama [Tue, 27 Oct 2015 16:57:50 +0000 (16:57 +0000)]
Rename qsort -> multikey_qsort. NFC.

`qsort` as a file-scope local function name was confusing.

llvm-svn: 251414

5 years agoPrefer ranlib mode over ar mode.
Ed Schouten [Tue, 27 Oct 2015 16:37:49 +0000 (16:37 +0000)]
Prefer ranlib mode over ar mode.

For CloudABI's toolchain I have a symlink that goes from <target>-ar and
<target>-ranlib to LLVM's ar binary, to mimick GNU Binutils' naming
scheme. The problem is that if we're targetting ARM64, the name of the
ranlib executable is aarch64-unknown-cloudabi-ranlib. This already
contains the string "ar".

Let's move the "ranlib" test above the "ar" test. It's not that likely
that we're going to see operating systems or harwdare architectures that
are called "ranlib".

Reviewed by: rafael
Differential Revision: http://reviews.llvm.org/D14123

llvm-svn: 251413

5 years agoWiden this enum bitfield by one bit to prevent sign extension in MSVC
Reid Kleckner [Tue, 27 Oct 2015 16:24:03 +0000 (16:24 +0000)]
Widen this enum bitfield by one bit to prevent sign extension in MSVC

llvm-svn: 251412

5 years ago[CMake] Get rid of LLVM_DYLIB_EXPORT_ALL, and make it the default, add libLLVM-C...
Chris Bieneman [Tue, 27 Oct 2015 16:02:04 +0000 (16:02 +0000)]
[CMake] Get rid of LLVM_DYLIB_EXPORT_ALL, and make it the default, add libLLVM-C on darwin to cover the C API needs.

Summary:
We've had a lot of discussion in the past about the meaningful and useful default behaviors for the llvm-shlib tool. The original implementation was heavily geared toward Apple's use, and I think that was wrong. This patch seeks to correct that.

I've removed the LLVM_DYLIB_EXPORT_ALL variable and made libLLVM export everything by default.

I've also added a new target that is only built on Darwin for libLLVM-C as a library that re-exports the LLVM-C API. This library is not built on Linux because ELF doesn't support re-export libraries in the same way MachO does.

Reviewers: chapuni, resistor, bogner, axw

Subscribers: llvm-commits

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

llvm-svn: 251411

5 years agoIndex: expose is_mutable_field
Saleem Abdulrasool [Tue, 27 Oct 2015 15:50:22 +0000 (15:50 +0000)]
Index: expose is_mutable_field

Expose isMutable via libClang and python bindings.

Patch by Jonathan B Coe!

llvm-svn: 251410

5 years ago[X86][AVX512] [X86][AVX512] add convert float to half
Asaf Badouh [Tue, 27 Oct 2015 15:37:17 +0000 (15:37 +0000)]
[X86][AVX512] [X86][AVX512] add convert float to half

convert float to half with mask/maskz for the reg to reg version and mask for the reg to mem version (there is no maskz version for reg to mem).

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

llvm-svn: 251409

5 years ago[ELF2/Driver] Accept both -L <arg> and -L<arg>.
Davide Italiano [Tue, 27 Oct 2015 15:10:53 +0000 (15:10 +0000)]
[ELF2/Driver] Accept both -L <arg> and -L<arg>.

This matches ld.bfd and ld.gold behavior. The change is simple enough
and avoid trouble to consumers (they don't have to change their Makefiles).
Side note: found while trying to build FreeBSD base system with lld.

llvm-svn: 251408

5 years ago[analyzer] Fix lambdas that are capturing constants.
Gabor Horvath [Tue, 27 Oct 2015 13:46:39 +0000 (13:46 +0000)]
[analyzer] Fix lambdas that are capturing constants.

llvm-svn: 251407

5 years agoclang-format: Undo unwanted format change done in r251405.
Daniel Jasper [Tue, 27 Oct 2015 13:42:08 +0000 (13:42 +0000)]
clang-format: Undo unwanted format change done in r251405.

Specifically, don't wrap between the {} of an empty constructor if the
"}" falls on column 81 and ConstructorInitializerAllOnOneLineOrOnePerLine
is set.

llvm-svn: 251406

5 years agoclang-format: Add an additional value to AlignAfterOpenBracket: AlwaysBreak.
Daniel Jasper [Tue, 27 Oct 2015 12:38:37 +0000 (12:38 +0000)]
clang-format: Add an additional value to AlignAfterOpenBracket: AlwaysBreak.

Summary:
If this option is set, clang-format will always insert a line wrap, e.g.
before the first parameter of a function call unless all parameters fit
on the same line. This obviates the need to make a decision on the
alignment itself.

Use this style for Google's JavaScript style and add some minor tweaks
to correctly handle nested blocks etc. with it. Don't use this option
for for/while loops.

Reviewers: klimek

Subscribers: klimek, cfe-commits

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

llvm-svn: 251405

5 years ago[analyzer] Fix another crash when analyzing lambda functions.
Gabor Horvath [Tue, 27 Oct 2015 12:36:26 +0000 (12:36 +0000)]
[analyzer] Fix another crash when analyzing lambda functions.

llvm-svn: 251404

5 years agoFix MSVC build after r251402
Tamas Berghammer [Tue, 27 Oct 2015 10:56:35 +0000 (10:56 +0000)]
Fix MSVC build after r251402

llvm-svn: 251403

5 years agoSome minor improvements on the symtab parsing code
Tamas Berghammer [Tue, 27 Oct 2015 10:43:27 +0000 (10:43 +0000)]
Some minor improvements on the symtab parsing code

* Remove an unneccessary re-computaion on arch spec from the ELF file
* Use a local cache to optimize name based section lookups in symtab
  parsing
* Optimize C++ method basename validation with replacing a regex with
  hand written code

These modifications reduce the time required to parse the symtab from
large applications by ~25% (tested with LLDB as inferior)

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

llvm-svn: 251402

5 years ago[ARM] Expand ROTL and ROTR of vector value types
Charlie Turner [Tue, 27 Oct 2015 10:25:20 +0000 (10:25 +0000)]
[ARM] Expand ROTL and ROTR of vector value types

Summary: After D13851 landed, we saw backend crashes when compiling the reduced test case included in this patch. The right fix seems to be to allow these vector types for expansion in instruction selection.

Reviewers: rengolin, t.p.northover

Subscribers: RKSimon, t.p.northover, aemerson, llvm-commits, rengolin

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

llvm-svn: 251401

5 years agoDeprecate -m/+m dotest options in favor of test categories
Pavel Labath [Tue, 27 Oct 2015 09:34:34 +0000 (09:34 +0000)]
Deprecate -m/+m dotest options in favor of test categories

Summary:
This change deprecates -m/+m dotest options (the options are still recognized but they print an
error message pointing to the new options) and adds a new lldb-mi test category instead. To just
run lldb-mi tests, use '-G lldb-mi'. To skip lldb-mi tests, use '--skip-category lldb-mi'. All
lldb-mi tests are marked as such using the getCategories method on the base MiTestCaseBase class
and the @lldbmi_test decorator is not needed. In case one still needs to annotate a specific test
function as an lldb-mi test, one can use the @add_test_categories(['lldb-mi']) decorator to
achieve that.

Reviewers: tfiala, dawn, ki.stfu, abidh

Subscribers: lldb-commits

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

llvm-svn: 251400

5 years agoFix race condition in process resume
Pavel Labath [Tue, 27 Oct 2015 09:23:55 +0000 (09:23 +0000)]
Fix race condition in process resume

Summary:
Gdb-remote's async thread sent out the eBroadcastBitRunPacketSent message *before* actually
sending out the continue packet. Since it's this message the actually triggers the public state
transition, it could happen (and it did happen in TestAttachResume, which does an "process
interrupt" right after a continue) that we attempt to stop the inferior before it was actually
started (which obviously did not end well). This fixes the problem by moving the broadcast after
the packet was actually sent.

Reviewers: clayborg

Subscribers: lldb-commits

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

llvm-svn: 251399

5 years agoDo not use "else" when both branches return (NFC)
Mehdi Amini [Tue, 27 Oct 2015 08:12:08 +0000 (08:12 +0000)]
Do not use "else" when both branches return (NFC)

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

5 years agoProperly clear current coroutine promise on FunctionScopeInfo reuse. Should
Richard Smith [Tue, 27 Oct 2015 07:47:45 +0000 (07:47 +0000)]
Properly clear current coroutine promise on FunctionScopeInfo reuse. Should
hopefully make bots happy again.

llvm-svn: 251397

5 years agoAccess the right triple field for IAMCU.
Michael Kuperstein [Tue, 27 Oct 2015 07:46:22 +0000 (07:46 +0000)]
Access the right triple field for IAMCU.

llvm-svn: 251396

5 years ago[ScalarEvolutionExpander] Properly insert no-op casts + EH Pads
David Majnemer [Tue, 27 Oct 2015 07:36:42 +0000 (07:36 +0000)]
[ScalarEvolutionExpander] Properly insert no-op casts + EH Pads

We want to insert no-op casts as close as possible to the def.  This is
tricky when the cast is of a PHI node and the BasicBlocks between the
def and the use cannot hold any instructions.  Iteratively walk EH pads
until we hit a non-EH pad.

This fixes PR25326.

llvm-svn: 251393

5 years agoWork around incomplete list initialization support in older MSVC.
Richard Smith [Tue, 27 Oct 2015 07:25:29 +0000 (07:25 +0000)]
Work around incomplete list initialization support in older MSVC.

llvm-svn: 251391

5 years ago[X86] Make elfiamcu an OS, not an environment.
Michael Kuperstein [Tue, 27 Oct 2015 07:23:59 +0000 (07:23 +0000)]
[X86] Make elfiamcu an OS, not an environment.

GNU tools require elfiamcu to take up the entire OS field, so, e.g.
i?86-*-linux-elfiamcu is not considered a legal triple.
Make us compatible.

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

llvm-svn: 251390

5 years agoHandle target builtin options that are all required rather than
Eric Christopher [Tue, 27 Oct 2015 06:11:03 +0000 (06:11 +0000)]
Handle target builtin options that are all required rather than
only one of a group of possibilities.

This changes the syntax in the builtin files to represent:

, as the and operator
| as the or operator

The former syntax matches how the backend tablegen files represent
multiple subtarget features being required.

Updated the builtin and intrinsic headers accordingly for the new
syntax.

llvm-svn: 251388

5 years ago[coroutines] Creation of promise object, lookup of operator co_await, building
Richard Smith [Tue, 27 Oct 2015 06:02:45 +0000 (06:02 +0000)]
[coroutines] Creation of promise object, lookup of operator co_await, building
of await_* calls, and AST representation for same.

llvm-svn: 251387

5 years agoFix for Arm watchpoint cache corruption in case of ptrace failure
Omair Javaid [Tue, 27 Oct 2015 05:56:56 +0000 (05:56 +0000)]
Fix for Arm watchpoint cache corruption in case of ptrace failure

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

llvm-svn: 251386

5 years agoCreate undef reference to profile hook symbol
Xinliang David Li [Tue, 27 Oct 2015 05:15:35 +0000 (05:15 +0000)]
Create undef reference to profile hook symbol

Create undef reference to profile hook symbol when
PGO instrumentation is turned on. This allows
LLVM to omit emission of hook variable use method
for every single module instrumented.

llvm-svn: 251385

5 years agoBe more conservative about diagnosing "incorrect" uses of __weak:
John McCall [Tue, 27 Oct 2015 04:54:50 +0000 (04:54 +0000)]
Be more conservative about diagnosing "incorrect" uses of __weak:
allow them to be written in certain kinds of user declaration and
diagnose on the use-site instead.

Also, improve and fix some diagnostics relating to __weak and
properties.

rdar://23228631

llvm-svn: 251384

5 years ago[SimplifyLibCalls] Use range-based loop. No functional change.
Davide Italiano [Tue, 27 Oct 2015 04:17:51 +0000 (04:17 +0000)]
[SimplifyLibCalls] Use range-based loop. No functional change.

llvm-svn: 251383

5 years agoConvert cost table lookup functions to return a pointer to the entry or nullptr inste...
Craig Topper [Tue, 27 Oct 2015 04:14:24 +0000 (04:14 +0000)]
Convert cost table lookup functions to return a pointer to the entry or nullptr instead of the index.

This avoid mentioning the table name an extra time and allows the lookup to be done directly in the ifs by relying on the bool conversion of the pointer.

While there make use of ArrayRef and std::find_if.

llvm-svn: 251382

5 years ago[function-attrs] Refactor code to handle shorter code with early exits.
Chandler Carruth [Tue, 27 Oct 2015 01:41:43 +0000 (01:41 +0000)]
[function-attrs] Refactor code to handle shorter code with early exits.

No functionality changed here, but the indentation is substantially
reduced and IMO the code is much easier to read. I've also added some
helpful comments.

This is just a clean-up I wrote while studying the code, and that has
been in my backlog for a while.

llvm-svn: 251381

5 years ago[ValueTracking] Don't special case wrapped ConstantRanges; NFCI
Sanjoy Das [Tue, 27 Oct 2015 01:36:06 +0000 (01:36 +0000)]
[ValueTracking] Don't special case wrapped ConstantRanges; NFCI

Use `getUnsignedMax` directly instead of special casing a wrapped
ConstantRange.

The previous code would have been "buggy" (and this would have been a
semantic change) if LLVM allowed !range metadata to denote full
ranges. E.g. in

  %val = load i1, i1* %ptr, !range !{i1 1, i1 1} ;; == full set

ValueTracking would conclude that the high bit (IOW the only bit) in
%val was zero.

Since !range metadata does not allow empty or full ranges, this change
is just a minor stylistic improvement.

llvm-svn: 251380

5 years agoAttempt to fix asan's ptrace.cc on the clang-cmake-mips builder after r251331.
Daniel Sanders [Tue, 27 Oct 2015 01:35:57 +0000 (01:35 +0000)]
Attempt to fix asan's ptrace.cc on the clang-cmake-mips builder after r251331.

llvm-svn: 251379

5 years ago[x86] replace integer logic ops with packed SSE FP logic ops
Sanjay Patel [Tue, 27 Oct 2015 01:28:07 +0000 (01:28 +0000)]
[x86] replace integer logic ops with packed SSE FP logic ops

If we have an operand to a bitwise logic op that's already in
an XMM register and the result is going to be sent to an XMM
register, then use an SSE logic op to avoid moves between the
integer and vector register files.

Related commits:
http://reviews.llvm.org/rL248395
http://reviews.llvm.org/rL248399
http://reviews.llvm.org/rL248404
http://reviews.llvm.org/rL248409
http://reviews.llvm.org/rL248415

This should solve PR22428:
https://llvm.org/bugs/show_bug.cgi?id=22428

llvm-svn: 251378

5 years agoMinor cleanup of SBTypeSummary::CreateWithCallback to take an optional description...
Enrico Granata [Tue, 27 Oct 2015 01:17:28 +0000 (01:17 +0000)]
Minor cleanup of SBTypeSummary::CreateWithCallback to take an optional description argument

llvm-svn: 251377

5 years agoAdd calls to the SB API to access the multi-language formatter category feature
Enrico Granata [Tue, 27 Oct 2015 01:10:35 +0000 (01:10 +0000)]
Add calls to the SB API to access the multi-language formatter category feature

llvm-svn: 251376

5 years ago[SCEV] Refactor out ScalarEvolution::getDataLayout; NFC
Sanjoy Das [Tue, 27 Oct 2015 00:52:09 +0000 (00:52 +0000)]
[SCEV] Refactor out ScalarEvolution::getDataLayout; NFC

llvm-svn: 251375

5 years agoFix Clang-tidy modernize-use-override warnings in source/Plugins/LanguageRuntime...
Eugene Zelenko [Tue, 27 Oct 2015 00:45:06 +0000 (00:45 +0000)]
Fix Clang-tidy modernize-use-override warnings in source/Plugins/LanguageRuntime and Platform; other minor fixes.

llvm-svn: 251374

5 years agoFix llc crash processing S/UREM for -Oz builds caused by rL250825.
Steve King [Tue, 27 Oct 2015 00:14:06 +0000 (00:14 +0000)]
Fix llc crash processing S/UREM for -Oz builds caused by rL250825.

When taking the remainder of a value divided by a constant, visitREM()
attempts to convert the REM to a longer but faster sequence of instructions.
This conversion calls combine() on a speculative DIV instruction. Commit
rL250825 may cause this combine() to return a DIVREM, corrupting nearby nodes.
Flow eventually hits unreachable().

This patch adds a test case and a check to prevent visitREM() from trying
to convert the REM instruction in cases where a DIVREM is possible.
See http://reviews.llvm.org/D14035

llvm-svn: 251373

5 years ago[msan] Yet another attempt to fix process_vm_readv test.
Evgeniy Stepanov [Tue, 27 Oct 2015 00:11:28 +0000 (00:11 +0000)]
[msan] Yet another attempt to fix process_vm_readv test.

llvm-svn: 251372

5 years agoUse early exits to reduce indentation.
Eric Christopher [Tue, 27 Oct 2015 00:06:21 +0000 (00:06 +0000)]
Use early exits to reduce indentation.

llvm-svn: 251371

5 years agoadd FP logic test cases to show current codegen (PR22428)
Sanjay Patel [Mon, 26 Oct 2015 23:52:42 +0000 (23:52 +0000)]
add FP logic test cases to show current codegen (PR22428)

llvm-svn: 251370

5 years ago[mips][ias] Fold needsExpansion() and expandInstruction() together. NFC.
Daniel Sanders [Mon, 26 Oct 2015 23:50:00 +0000 (23:50 +0000)]
[mips][ias] Fold needsExpansion() and expandInstruction() together. NFC.

Summary:
Previously we maintained two separate switch statements that had to be kept in
sync. This patch merges them into a single switch.

Reviewers: vkalintiris

Subscribers: llvm-commits, dsanders

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

llvm-svn: 251369

5 years agoChange TestTypeCompletion to not rely on std::string
Enrico Granata [Mon, 26 Oct 2015 23:39:12 +0000 (23:39 +0000)]
Change TestTypeCompletion to not rely on std::string

On some combination of platform and c++ library, this dependency was causing the test to fail for reasons tangential to its real objective

llvm-svn: 251368

5 years agoSwitch ownership of miscellaneous ARM target to myself.
Tim Northover [Mon, 26 Oct 2015 23:33:13 +0000 (23:33 +0000)]
Switch ownership of miscellaneous ARM target to myself.

llvm-svn: 251367

5 years ago[x86] Make the vselect-minmax test 2x to 3x faster by deleting all the
Chandler Carruth [Mon, 26 Oct 2015 22:54:53 +0000 (22:54 +0000)]
[x86] Make the vselect-minmax test 2x to 3x faster by deleting all the
instructions that aren't relevant for instruction selection of vector
min and max.

llvm-svn: 251366

5 years agoUse Twin instead of std::to_string.
Oleksiy Vyalov [Mon, 26 Oct 2015 22:37:36 +0000 (22:37 +0000)]
Use Twin instead of std::to_string.

http://reviews.llvm.org/D14095

llvm-svn: 251365

5 years agoFix indents. It's a follow up to r251353.
Ivan Krasin [Mon, 26 Oct 2015 22:35:40 +0000 (22:35 +0000)]
Fix indents. It's a follow up to r251353.

llvm-svn: 251364

5 years ago[LLVMSymbolize] Don't use LLVMSymbolizer::Options in ModuleInfo. NFC.
Alexey Samsonov [Mon, 26 Oct 2015 22:34:56 +0000 (22:34 +0000)]
[LLVMSymbolize] Don't use LLVMSymbolizer::Options in ModuleInfo. NFC.

LLVMSymbolizer::Options is mostly used in LLVMSymbolizer class anyway.
Let's keep their usage restricted to that class, especially given that
it's worth to move ModuleInfo to a different header, independent from
the symbolizer class.

llvm-svn: 251363

5 years ago[asan] Mark 5 tests unsupported on Android.
Evgeniy Stepanov [Mon, 26 Oct 2015 22:19:50 +0000 (22:19 +0000)]
[asan] Mark 5 tests unsupported on Android.

llvm-svn: 251362

5 years ago[asan] Fix throw-call-test to properly XFAIL on android/aarch64.
Evgeniy Stepanov [Mon, 26 Oct 2015 22:19:47 +0000 (22:19 +0000)]
[asan] Fix throw-call-test to properly XFAIL on android/aarch64.

The test is sensitive to stack layout changes. Tweak it a bit to
expose the bug on aarch64 as well as on arm.

llvm-svn: 251361

5 years ago[asan] Switch back to BFD linker in asan/android tests.
Evgeniy Stepanov [Mon, 26 Oct 2015 22:19:46 +0000 (22:19 +0000)]
[asan] Switch back to BFD linker in asan/android tests.

We've switched to Gold earlier because of a minor misconfiguration
of the BFD linker in Android NDK. It turns out, Gold has much bigger
problems:

https://sourceware.org/bugzilla/show_bug.cgi?id=19163
(a bug is actually in the android runtime loader, but it means that
gold does not work with android L and even M).

Switching back to BFD and adding a workaround by explicitly linking
libm to all tests.

llvm-svn: 251360

5 years ago[asan] Don't use asanwrapper in 64-bit android tests.
Evgeniy Stepanov [Mon, 26 Oct 2015 22:19:44 +0000 (22:19 +0000)]
[asan] Don't use asanwrapper in 64-bit android tests.

Asanwrapper is required on older android versions to work around undesired
linker behavior. It is not required on L and newer, and does not fully
support multiarch devices.

llvm-svn: 251359

5 years ago[clang-tidy] Add new check cppcoreguidelines-pro-bounds-array-to-pointer-decay
Matthias Gehre [Mon, 26 Oct 2015 21:56:02 +0000 (21:56 +0000)]
[clang-tidy] Add new check cppcoreguidelines-pro-bounds-array-to-pointer-decay

Summary:
This check flags all array to pointer decays.

Pointers should not be used as arrays. array_view is a bounds-checked,
safe alternative to using pointers to access arrays.

This rule is part of the "Bounds safety" profile of the C++ Core
Guidelines, see
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#-bounds3-no-array-to-pointer-decay

Reviewers: alexfh, sbenza, bkramer, aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 251358

5 years agoreorganize logic; NFCI (retry r251349)
Sanjay Patel [Mon, 26 Oct 2015 21:54:14 +0000 (21:54 +0000)]
reorganize logic; NFCI (retry r251349)

This is a preliminary step before adding another optimization
to PerformBITCASTCombine().

..and I really hope it's NFC this time!

llvm-svn: 251357

5 years agoasan_symbolize.py: Call llvm-symbolizer with --functions=linkage instead of --functio...
Alexey Samsonov [Mon, 26 Oct 2015 21:48:49 +0000 (21:48 +0000)]
asan_symbolize.py: Call llvm-symbolizer with --functions=linkage instead of --functions=short.

llvm-svn: 251356

5 years agoclang-tidy/add_new_check.py: Adapt to use %check_clang_tidy in tests
Matthias Gehre [Mon, 26 Oct 2015 21:48:08 +0000 (21:48 +0000)]
clang-tidy/add_new_check.py: Adapt to use %check_clang_tidy in tests

Summary: Adapt clang-tidy/add_new_check.py according to commit r251010 "Add %check_clang_tidy and %clang_tidy_diff"

Reviewers: alexfh, sbenza, bkramer, aaron.ballman

Subscribers: cfe-commits

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

llvm-svn: 251355

5 years agoRevert "Clang module compilation options need to be per-platform."
Adrian McCarthy [Mon, 26 Oct 2015 21:38:41 +0000 (21:38 +0000)]
Revert "Clang module compilation options need to be per-platform."

This reverts commit r251340.

Breaks the Windows build because Windows doesn't have getuid.  The fix is not obvious.

llvm-svn: 251354

5 years agoMove imported entities into DwarfCompilationUnit to speed up LTO linking.
Ivan Krasin [Mon, 26 Oct 2015 21:36:35 +0000 (21:36 +0000)]
Move imported entities into DwarfCompilationUnit to speed up LTO linking.

Summary:
In particular, this CL speeds up the official Chrome linking with LTO by
1.8x.

See more details in https://crbug.com/542426

Reviewers: dblaikie

Subscribers: jevinskie

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

llvm-svn: 251353

5 years agoARM: make sure VFP loads and stores are properly aligned.
Tim Northover [Mon, 26 Oct 2015 21:32:53 +0000 (21:32 +0000)]
ARM: make sure VFP loads and stores are properly aligned.

Both VLDRS and VLDRD fault if the memory is not 4 byte aligned, which wasn't
really being checked before, leading to faults at runtime.

llvm-svn: 251352