Kostya Serebryany [Wed, 3 Aug 2016 00:14:10 +0000 (00:14 +0000)]
[sanitizer] refactor TransferBatch to hide the implementation. NFC expected. Second attempt after failed r276383 which was reverted.
llvm-svn: 277554
Daniel Berlin [Wed, 3 Aug 2016 00:01:46 +0000 (00:01 +0000)]
Support for lifetime begin/end markers in the MemorySSA use optimizer
Summary: Depends on D23072
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23076
llvm-svn: 277553
Artem Belevich [Tue, 2 Aug 2016 23:43:04 +0000 (23:43 +0000)]
[CUDA] Updated CUDA tests that must run w/o CUDA installation.
Fixes test failures after r277542 on systems that don't have
CUDA installed.
llvm-svn: 277552
Matthias Braun [Tue, 2 Aug 2016 23:36:06 +0000 (23:36 +0000)]
CommandFlags.h/llc: Move StopAfter/StartBefore options to llc.
Move those two options to llc:
The options in CommandFlags.h are shared by dsymutil, gold, llc,
llvm-dwp, llvm-lto, llvm-mc, lto, opt.
-stop-after/-start-after only affect codegen passes however only gold and llc
actually create codegen passes and I believe these flags to be only
useful for users of llc. For the other tools they are just highly
confusing: -stop-after claims to "Stop compilation after a specific
pass" which is not true in the context of the "opt" tool.
Differential Revision: https://reviews.llvm.org/D23050
llvm-svn: 277551
Sanjoy Das [Tue, 2 Aug 2016 23:32:53 +0000 (23:32 +0000)]
[Verifier] Add more tests related to non-integral pointers
As suggested by Matt Arsenault in post-commit review.
llvm-svn: 277550
Derek Schuff [Tue, 2 Aug 2016 23:31:56 +0000 (23:31 +0000)]
[WebAssembly] Remove unnecessary subtarget checks in peephole pass
Leftover from D22686; the passes can handle all the instructions
unconditionally; only isel needs to care whether to generate them.
llvm-svn: 277549
Rui Ueyama [Tue, 2 Aug 2016 23:25:59 +0000 (23:25 +0000)]
Fix a test for r277545.
This change should have been submitted with that commit.
llvm-svn: 277548
Devin Coughlin [Tue, 2 Aug 2016 23:24:40 +0000 (23:24 +0000)]
[analyzer] Update two comments in MPI-Checker. NFC.
Correct two comments that do not match the current behavior of the checker.
A patch by Alexander Droste!
Differential Revision: https://reviews.llvm.org/D22670
llvm-svn: 277547
Kostya Serebryany [Tue, 2 Aug 2016 23:23:13 +0000 (23:23 +0000)]
[scudo] add NORETURN to the declaration of dieWithMessage; this should fix a warning in lib/scudo/scudo_termination.cpp
llvm-svn: 277546
Rui Ueyama [Tue, 2 Aug 2016 23:22:46 +0000 (23:22 +0000)]
pdbdump: Do not treat stream 0 pages as allocated pages.
I examined a few PDBs and all of them treated pages for stream 0
are unused, thus they were unmarked in their free page bitmap.
I think we should do the same thing for compatibility.
Differential Revision: https://reviews.llvm.org/D23047
llvm-svn: 277545
Evgeniy Stepanov [Tue, 2 Aug 2016 23:21:30 +0000 (23:21 +0000)]
[safestack] Layout large allocas first to reduce fragmentation.
llvm-svn: 277544
Derek Schuff [Tue, 2 Aug 2016 23:16:09 +0000 (23:16 +0000)]
[WebAssembly] Initial SIMD128 support.
Kicks off the implementation of wasm SIMD128 support (spec:
https://github.com/stoklund/portable-simd/blob/master/portable-simd.md),
adding support for add, sub, mul for i8x16, i16x8, i32x4, and f32x4.
The spec is WIP, and might change in the near future.
Patch by João Porto
Differential Revision: https://reviews.llvm.org/D22686
llvm-svn: 277543
Artem Belevich [Tue, 2 Aug 2016 23:12:51 +0000 (23:12 +0000)]
[CUDA] Fix libdevice selection.
This makes clang's libdevice selection match that of NVCC as described in
http://docs.nvidia.com/cuda/libdevice-users-guide/basic-usage.html#version-selection
If required libdevice variant is not found, driver now fails with an error.
Differential Revision: https://reviews.llvm.org/D23037
llvm-svn: 277542
Tim Northover [Tue, 2 Aug 2016 23:12:36 +0000 (23:12 +0000)]
ARM: only form SMMLS when SUBE flags unused.
In this particular example we wouldn't want the smmls anyway (the value is
actually unused), but in general smmls does not provide the required flags
register so if that SUBE result is used we can't replace it.
llvm-svn: 277541
Kevin Enderby [Tue, 2 Aug 2016 22:58:55 +0000 (22:58 +0000)]
More fixes to get good error messages for bad archives.
Fixed the last incorrect uses of llvm_unreachable() in the code
which were actually just cases of errors in the input Archives.
llvm-svn: 277540
Etienne Bergeron [Tue, 2 Aug 2016 22:51:46 +0000 (22:51 +0000)]
[clang-tidy] Fix missing dependency to static analyzer
Summary:
This patch is fixing the build bot broken for a missing dependency.
The missing dependency is breaking "shared" build.
```
./mpi/TypeMismatchCheck.cpp:
#include "clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h"
```
I'm not a fan of that fix. It's brining a strange dependency.
Reviewers: alexfh
Subscribers: llvm-commits, chrisha
Differential Revision: https://reviews.llvm.org/D23093
llvm-svn: 277539
Sanjay Patel [Tue, 2 Aug 2016 22:38:33 +0000 (22:38 +0000)]
[InstCombine] replace dyn_casts with matches; NFCI
Clean-up before changing this to allow folds for vectors.
llvm-svn: 277538
Artem Belevich [Tue, 2 Aug 2016 22:37:47 +0000 (22:37 +0000)]
[CUDA] Do not allow using NVPTX target for host compilation.
Differential Revision: https://reviews.llvm.org/D23042
llvm-svn: 277537
Kostya Serebryany [Tue, 2 Aug 2016 22:25:38 +0000 (22:25 +0000)]
[sanitizer] Implement a __asan_default_options() equivalent for Scudo
Summary:
Currently, the Scudo Hardened Allocator only gets its flags via the SCUDO_OPTIONS environment variable.
With this patch, we offer the opportunity for programs to define their own options via __scudo_default_options() which behaves like __asan_default_options() (weak symbol).
A relevant test has been added as well, and the documentation updated accordingly.
I also used this patch as an opportunity to rename a few variables to comply with the LLVM naming scheme, and replaced a use of Report with dieWithMessage for consistency (and to avoid a callback).
Reviewers: llvm-commits, kcc
Differential Revision: https://reviews.llvm.org/D23018
llvm-svn: 277536
Matt Arsenault [Tue, 2 Aug 2016 22:25:04 +0000 (22:25 +0000)]
AMDGPU: fdiv -1, x -> rcp -x
llvm-svn: 277535
Piotr Padlewski [Tue, 2 Aug 2016 22:18:47 +0000 (22:18 +0000)]
Imported statistics types changes
Reviewers: tejohnson, eraman
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22980
llvm-svn: 277534
George Burgess IV [Tue, 2 Aug 2016 22:17:25 +0000 (22:17 +0000)]
[CFLAA] Be more conservative with values we haven't seen.
There were issues with simply reporting AttrUnknown on
previously-unknown values in CFLAnders. So, we now act *entirely*
conservatively for values we haven't seen before. As in the prior patch
(r277362), writing a lit test for this isn't exactly trivial. If someone
wants a test badly, I'm willing to try to write one.
Patch by Jia Chen.
Differential Revision: https://reviews.llvm.org/D23077
llvm-svn: 277533
Rafael Espindola [Tue, 2 Aug 2016 22:14:57 +0000 (22:14 +0000)]
Support expressions inside FLAGS.
This is an undocumented bfd feature. It is reasonable for making the
scripts a bit more readable.
llvm-svn: 277532
Davide Italiano [Tue, 2 Aug 2016 22:14:00 +0000 (22:14 +0000)]
[ELF] Ignore -g option for compatibility.
Also ld.bfd and ld.gold ignore this options. I hit this one in
the wild, and just ignoring it's trivial, so, let's do it.
llvm-svn: 277531
Daniel Berlin [Tue, 2 Aug 2016 21:57:52 +0000 (21:57 +0000)]
Move to having a single real instructionClobbersQuery
Summary: We really want to move towards MemoryLocOrCall (or fix AA) everywhere, but for now, this lets us have a single instructionClobbersQuery.
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23072
llvm-svn: 277530
Rui Ueyama [Tue, 2 Aug 2016 21:56:37 +0000 (21:56 +0000)]
PDB: Mark extended file pages as free by default.
BitVector::extend initializes extended bits as true by default.
That is not desirable because new pages should be initially free.
Differential Revision: https://reviews.llvm.org/D23048
llvm-svn: 277529
Krzysztof Parzyszek [Tue, 2 Aug 2016 21:49:20 +0000 (21:49 +0000)]
[Hexagon] Recognize vcombine in copy propagation
llvm-svn: 277528
Michael Zolotukhin [Tue, 2 Aug 2016 21:43:25 +0000 (21:43 +0000)]
[LoopUnroll] Fix a PowerPC test broken by r277524.
llvm-svn: 277527
Hubert Tong [Tue, 2 Aug 2016 21:34:48 +0000 (21:34 +0000)]
[libcxx] basic_regex: add traits_type, string_type
Summary:
In the synopsis in C++11 subclause 28.8 [re.regex], `basic_regex` is
specified to have member typedefs `traits_type` and `string_type`. This
change adds them to libc++.
Reviewers: mclow.lists, rsmith, hubert.reinterpretcast
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D22698
Patch by Jason Liu!
llvm-svn: 277526
Michael Zolotukhin [Tue, 2 Aug 2016 21:24:14 +0000 (21:24 +0000)]
[LoopUnroll] Switch the default value of -unroll-runtime-epilog back to its original value.
As agreed in post-commit review of r265388, I'm switching the flag to
its original value until the 90% runtime performance regression on
SingleSource/Benchmarks/Stanford/Bubblesort is addressed.
llvm-svn: 277524
Jonathan Coe [Tue, 2 Aug 2016 21:18:37 +0000 (21:18 +0000)]
[clang-tidy] Fix segfault in cppcore-guidelines-special-member-functions check
Summary:
Use a set rather than a vector of defined special member functions so
that multiple declarations of the same function are only counted once.
Move some private static member functions into the cpp file.
Run clang-format on header.
Reviewers: ericLemanissier, Prazek, aaron.ballman
Subscribers: Prazek, cfe-commits, nemanjai
Projects: #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D23008
llvm-svn: 277523
Devin Coughlin [Tue, 2 Aug 2016 21:07:23 +0000 (21:07 +0000)]
[CFG] Fix crash finding destructor of lifetime-extended temporary.
Fix a crash under -Wthread-safety when finding the destructor for a
lifetime-extending reference.
A patch by Nandor Licker!
Differential Revision: https://reviews.llvm.org/D22419
llvm-svn: 277522
Lang Hames [Tue, 2 Aug 2016 21:00:40 +0000 (21:00 +0000)]
[lli] Add the ability for OrcLazyJIT to accept multiple input modules.
LLI already supported passing multiple input modules to MCJIT via the
-extra-module option. This patch adds the plumbing to pass these modules to
the OrcLazy JIT too.
This functionality will be used in an upcoming test case for weak symbol
handling.
llvm-svn: 277521
Artem Belevich [Tue, 2 Aug 2016 20:58:24 +0000 (20:58 +0000)]
[NVPTX] remove unnecessary named metadata update that happens to break debug info.
Also added test case to verify IR changes done by NVPTXGenericToNVVM pass.
Differential Revision: https://reviews.llvm.org/D22837
llvm-svn: 277520
Etienne Bergeron [Tue, 2 Aug 2016 20:38:05 +0000 (20:38 +0000)]
[compiler-rt] Add more interception patterns.
Summary:
These instructions where not supported on my win7 computer.
They were happening on strstr when building chrome unittests with asan.
Reviewers: rnk
Subscribers: llvm-commits, chrisha
Differential Revision: https://reviews.llvm.org/D23081
llvm-svn: 277519
Reid Kleckner [Tue, 2 Aug 2016 20:36:29 +0000 (20:36 +0000)]
[asan] Intercept RtlRaiseException instead of kernel32!RaiseException
Summary:
On my install of Windows 10, RaiseException is a tail call to
kernelbase!RaiseException. Obviously, we fail to intercept that.
Instead, try hooking at the ntdll!RtlRaiseException layer. It is
unlikely that this layer will contain control flow.
Intercepting at this level requires adding a decoding for
'LEA ESP, [ESP + 0xXXXXXXXX]', which is a really obscure way to write
'SUB ESP, 0xXXXXXXXX' that avoids clobbering EFLAGS.
Reviewers: etienneb
Subscribers: llvm-commits, kubabrecka
Differential Revision: https://reviews.llvm.org/D23046
llvm-svn: 277518
Alexander Kornienko [Tue, 2 Aug 2016 20:29:47 +0000 (20:29 +0000)]
[docs] Fix links format.
llvm-svn: 277517
Alexander Kornienko [Tue, 2 Aug 2016 20:29:35 +0000 (20:29 +0000)]
[clang-tidy] MPITypeMismatchCheck
This check verifies if buffer type and MPI (Message Passing Interface)
datatype pairs match. All MPI datatypes defined by the MPI standard (3.1)
are verified by this check. User defined typedefs, custom MPI datatypes and
null pointer constants are skipped, in the course of verification.
Instructions on how to apply the check can be found at:
https://github.com/0ax1/MPI-Checker/tree/master/examples
Patch by Alexander Droste!
Differential revision: https://reviews.llvm.org/D21962
llvm-svn: 277516
Wei Mi [Tue, 2 Aug 2016 20:27:49 +0000 (20:27 +0000)]
[LoopVectorize] Change comment for isOutOfScope in collectLoopUniforms, NFC
Update comment for isOutOfScope and add a testcase for uniform value being used
out of scope.
Differential Revision: https://reviews.llvm.org/D23073
llvm-svn: 277515
Reid Kleckner [Tue, 2 Aug 2016 20:26:59 +0000 (20:26 +0000)]
Remove stale CHECK lines that should have been included in r277478
We no longer assign ids to unregistered threads. We don't have any stack
trace for thread creation for these worker threads, so this shouldn't
affect report quality much.
llvm-svn: 277514
Tim Northover [Tue, 2 Aug 2016 20:22:36 +0000 (20:22 +0000)]
AArch64: properly calculate cmpxchg status in FastISel.
We were relying on the misleadingly-names $status result to actually be the
status. Actually it's just a scratch register that may or may not be valid (and
is the inverse of the real ststus anyway). Success can be determined by
comparing the value loaded against the one we wanted to see for "cmpxchg
strong" loops like this.
Should fix PR28819.
llvm-svn: 277513
Eric Fiselier [Tue, 2 Aug 2016 20:21:07 +0000 (20:21 +0000)]
Pass compilers when configuring Google Benchmark.
llvm-svn: 277512
Etienne Bergeron [Tue, 2 Aug 2016 20:07:49 +0000 (20:07 +0000)]
fix comments typos [NFC]
llvm-svn: 277511
Daniel Berlin [Tue, 2 Aug 2016 20:02:21 +0000 (20:02 +0000)]
Fixes for post-commit review comments on r277480
llvm-svn: 277510
Xinliang David Li [Tue, 2 Aug 2016 19:34:00 +0000 (19:34 +0000)]
[Profile] track ownership of filename pattern string
Make sure runtime copy and owns the string when passed
in from external users of runtime API.
llvm-svn: 277507
Sanjoy Das [Tue, 2 Aug 2016 19:32:01 +0000 (19:32 +0000)]
[IRCE] Rename variable; NFC
There is nothing "Original" about "OriginalLoopInfo".
llvm-svn: 277506
Sanjoy Das [Tue, 2 Aug 2016 19:31:54 +0000 (19:31 +0000)]
[IRCE] Preserve DomTree and LCSSA
This changes IRCE to "preserve" LCSSA and DomTree by recomputing them.
It still does not preserve LoopSimplify.
llvm-svn: 277505
Nicolai Haehnle [Tue, 2 Aug 2016 19:31:14 +0000 (19:31 +0000)]
AMDGPU: Stay in WQM for non-intrinsic stores
Summary:
Two types of stores are possible in pixel shaders: stores to memory that are
explicitly requested at the API level, and stores that are an implementation
detail of register spilling or lowering of arrays.
For the first kind of store, we must ensure that helper pixels have no effect
and hence WQM must be disabled. The second kind of store must always be
executed, because the written value may be loaded again in a way that is
relevant for helper pixels as well -- and there are no externally visible
effects anyway.
This is a candidate for the 3.9 release branch.
Reviewers: arsenm, tstellarAMD, mareko
Subscribers: arsenm, kzhuravl, llvm-commits
Differential Revision: https://reviews.llvm.org/D22675
llvm-svn: 277504
Albert Gutowski [Tue, 2 Aug 2016 19:25:17 +0000 (19:25 +0000)]
test commit
llvm-svn: 277503
Michael Zolotukhin [Tue, 2 Aug 2016 19:19:31 +0000 (19:19 +0000)]
[LoopUnroll] Ensure we create prolog loops in simplified form.
llvm-svn: 277502
Nirav Dave [Tue, 2 Aug 2016 19:17:54 +0000 (19:17 +0000)]
Fix handling of end-of-line preprocessor comments Attempt 2
Attempt 2: Retryign after Tsan.mman test fix.
Attempt 1: Recommitting after fixing test.
When parsing assembly where the line comment syntax is not hash, the
lexer cannot distinguish between hash's that start a hash line comment
and one that is part of an assembly statement and must be distinguished
during parsing. Previously, this was incompletely handled by not checking
for EndOfStatement at the end of statements and interpreting hash
prefixed statements as comments.
Change EndOfStatement Parsing to check for Hash comments and reintroduce
Hash statement parsing to catch previously handled cases.
Reviewers: rnk, majnemer
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23017
llvm-svn: 277501
Nicolai Haehnle [Tue, 2 Aug 2016 19:17:37 +0000 (19:17 +0000)]
AMDGPU: Track physical registers in SIWholeQuadMode
Summary:
There are cases where uniform branch conditions are computed in VGPRs, and
we didn't correctly mark those as WQM.
The stray change in basic-branch.ll is because invoking the LiveIntervals
analysis leads to the detection of a dead register that would otherwise not
be seen at -O0.
This is a candidate for the 3.9 branch, as it fixes a possible hang.
Reviewers: arsenm, tstellarAMD, mareko
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: https://reviews.llvm.org/D22673
llvm-svn: 277500
Ahmed Bougacha [Tue, 2 Aug 2016 19:04:29 +0000 (19:04 +0000)]
[AArch64][GlobalISel] Replace test REQUIRES with lit.local.cfg. NFC.
I forgot the REQUIRES once (see r277486).
Let's prevent it from happening again.
llvm-svn: 277499
Ahmed Bougacha [Tue, 2 Aug 2016 19:04:25 +0000 (19:04 +0000)]
[AArch64] Remove useless 'import re' from CodeGen lit.local.cfg. NFC.
llvm-svn: 277498
Krzysztof Parzyszek [Tue, 2 Aug 2016 18:50:05 +0000 (18:50 +0000)]
[Hexagon] Prefer _io over _rr for 64-bit store with constant offset
Identify patterns where the address is aligned to an 8-byte boundary,
but both the base address and the constant offset are both proper
multiples of 4. In such cases, extract Base+4 into a separate instruc-
tion, and use S2_storerd_io, instead of using S4_storerd_rr.
llvm-svn: 277497
Krzysztof Parzyszek [Tue, 2 Aug 2016 18:39:32 +0000 (18:39 +0000)]
[Hexagon] Remove unused option
llvm-svn: 277496
Hubert Tong [Tue, 2 Aug 2016 18:36:15 +0000 (18:36 +0000)]
[Concepts] Add TODO and requires-clause placeholder; NFC
llvm-svn: 277495
Krzysztof Parzyszek [Tue, 2 Aug 2016 18:34:31 +0000 (18:34 +0000)]
[Hexagon] Improvements to address mode checks in TargetLowering
- Implement getOptimalMemOpType.
- Check BaseOffset in isLegalAddressingMode.
llvm-svn: 277494
Chris Bieneman [Tue, 2 Aug 2016 18:23:56 +0000 (18:23 +0000)]
Revert "[Order Files] Remove dtrace predicate"
This reverts commit r277487.
Removing the probe predicate was a red herring. It results in more symbols being placed in the final order file, but they are symbols from outside the clang image.
llvm-svn: 277492
Kirill Bobyrev [Tue, 2 Aug 2016 18:23:08 +0000 (18:23 +0000)]
[clang-rename] fix Emacs integration script
llvm-svn: 277491
Nirav Dave [Tue, 2 Aug 2016 17:58:14 +0000 (17:58 +0000)]
Update Clang Parser test error message to match new parser errors
Update clang tests in light of r277489.
llvm-svn: 277490
Nirav Dave [Tue, 2 Aug 2016 17:56:03 +0000 (17:56 +0000)]
[MC] Fix Intel Operand assembly parsing for .set ids
Recommitting after fixing overaggressive fastpath return in parsing.
Fix intel syntax special case identifier operands that refer to a constant
(e.g. .set <ID> n) to be interpreted as immediate not memory in parsing.
Associated commit to fix clang test commited shortly.
Reviewers: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22585
llvm-svn: 277489
Vitaly Buka [Tue, 2 Aug 2016 17:51:48 +0000 (17:51 +0000)]
Updated documentation
Reviewers: kcc, eugenis
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22992
llvm-svn: 277488
Chris Bieneman [Tue, 2 Aug 2016 17:50:53 +0000 (17:50 +0000)]
[Order Files] Remove dtrace predicate
Having the dtrace predicate setup to only show probes in clang filters out static initializers executed by dyld, which we do want included in the order files.
llvm-svn: 277487
Ahmed Bougacha [Tue, 2 Aug 2016 17:19:35 +0000 (17:19 +0000)]
[AArch64][GlobalISel] Add REQUIRES: global-isel to verifier tests.
I thought the directory had a lit.local.cfg, but it doesn't.
I'll add one, but for now, add the REQUIRES line. While there,
move the triple into the IR and add a datalayout.
llvm-svn: 277486
Daniel Berlin [Tue, 2 Aug 2016 16:59:51 +0000 (16:59 +0000)]
MSVC 2013 does not implement C++11 unions properly, so remove the anoymous union for now,
and leave a FIXME.
llvm-svn: 277485
Ahmed Bougacha [Tue, 2 Aug 2016 16:49:25 +0000 (16:49 +0000)]
[GlobalISel] Set the Selected MF property.
None of GlobalISel requires the property, but this lets us use the
verifier instead of rolling our own "all instructions selected" check.
llvm-svn: 277484
Ahmed Bougacha [Tue, 2 Aug 2016 16:49:22 +0000 (16:49 +0000)]
[GlobalISel] Verify Selected MF property.
After instruction selection, there should be no pre-isel generic
instructions remaining, nor should generic virtual registers be
used. Verify that.
llvm-svn: 277483
Ahmed Bougacha [Tue, 2 Aug 2016 16:49:19 +0000 (16:49 +0000)]
[GlobalISel] Add Selected MachineFunction property.
Selected: the InstructionSelect pass ran and all pre-isel generic
instructions have been eliminated; i.e., all instructions are now
target-specific or non-pre-isel generic instructions (e.g., COPY).
Since only pre-isel generic instructions can have generic virtual register
operands, this also means that all generic virtual registers have been
constrained to virtual registers (assigned to register classes) and that
all sizes attached to them have been eliminated.
This lets us enforce certain invariants across passes.
This property is GlobalISel-specific, but is always available.
llvm-svn: 277482
Daniel Berlin [Tue, 2 Aug 2016 16:24:03 +0000 (16:24 +0000)]
Rewrite the use optimizer to be less memory intensive and 50% faster.
Fixes PR28670
Summary:
Rewrite the use optimizer to be less memory intensive and 50% faster.
Fixes PR28670
The new use optimizer works like a standard SSA renaming pass, storing
all possible versions a MemorySSA use could get in a stack, and just
tracking indexes into the stack.
This uses much less memory than caching N^2 alias query results.
It's also a lot faster.
The current version defers phi node walking to the normal walker.
Reviewers: george.burgess.iv
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23032
llvm-svn: 277480
Artur Pilipenko [Tue, 2 Aug 2016 16:20:48 +0000 (16:20 +0000)]
[LVI] NFC. Sink a condition type check from the caller down to getValueFromCondition
This is a preparatory refactoring to support conditions other than ICmpInst.
llvm-svn: 277479
Reid Kleckner [Tue, 2 Aug 2016 16:17:32 +0000 (16:17 +0000)]
[asan] Remove NtWaitForWorkViaWorkerFactory interceptor
Summary:
On Windows 10, this gets called after TLS has been torn down from NTDLL,
and we crash attempting to return fake_tsd. This interceptor isn't
needed after r242948 anyway, so let's remove it. The ASan runtime can
now tolerate unregistered threads calling __asan_handle_no_return.
Reviewers: vitalybuka, etienneb
Subscribers: kubabrecka, llvm-commits
Differential Revision: https://reviews.llvm.org/D23044
llvm-svn: 277478
Ahmed Bougacha [Tue, 2 Aug 2016 16:17:18 +0000 (16:17 +0000)]
[GlobalISel] Set and require RegBankSelected MF property.
The InstructionSelect pass assumes that RegBankSelect ran; set the
property on all tests (thereby verifying the test inputs) and require
it in the pass.
llvm-svn: 277477
Ahmed Bougacha [Tue, 2 Aug 2016 16:17:15 +0000 (16:17 +0000)]
[GlobalISel] Verify RegBankSelected MF property.
RegBankSelected functions shouldn't have any generic virtual
register not assigned to a bank. Verify that.
llvm-svn: 277476
Ahmed Bougacha [Tue, 2 Aug 2016 16:17:10 +0000 (16:17 +0000)]
[GlobalISel] Add RegBankSelected MachineFunction property.
RegBankSelected: the RegBankSelect pass ran and all generic virtual
registers have been assigned to a register bank.
This lets us enforce certain invariants across passes.
This property is GlobalISel-specific, but is always available.
llvm-svn: 277475
Matthew Simpson [Tue, 2 Aug 2016 15:25:16 +0000 (15:25 +0000)]
[LV] Generate both scalar and vector integer induction variables
This patch enables the vectorizer to generate both scalar and vector versions
of an integer induction variable for a given loop. Previously, we only
generated a scalar induction variable if we knew all its users were going to be
scalar. Otherwise, we generated a vector induction variable. In the case of a
loop with both scalar and vector users of the induction variable, we would
generate the vector induction variable and extract scalar values from it for
the scalar users. With this patch, we now generate both versions of the
induction variable when there are both scalar and vector users and select which
version to use based on whether the user is scalar or vector.
Differential Revision: https://reviews.llvm.org/D22869
llvm-svn: 277474
Artem Dergachev [Tue, 2 Aug 2016 15:16:06 +0000 (15:16 +0000)]
[analyzer] Hotfix for buildbot failure due to unspecified triple in r277449
If a target triple is not specified, the default host triple is used,
which is not good for compiling inline assembler code.
Patch by Raphael Isemann!
llvm-svn: 277473
Ahmed Bougacha [Tue, 2 Aug 2016 15:10:32 +0000 (15:10 +0000)]
[GlobalISel] Set, require, and verify Legalized MF property.
RegBankSelect and InstructionSelect run after the legalizer and
require a Legalized function: check that all instructions are legal.
Note that this should be in the MachineVerifier, but it can't use the
MachineLegalizer as it's currently in the separate GlobalISel library.
Note that the RegBankSelect verifier checks have the same layering
problem, but we only use inline methods so end up not needing to link
against the GlobalISel library.
llvm-svn: 277472
Ahmed Bougacha [Tue, 2 Aug 2016 15:10:28 +0000 (15:10 +0000)]
[AArch64][GlobalISel] Mark basic binops/memops as legal.
We currently use and test these, and select most of them. Mark them
as legal even though we don't go through the full ir->asm flow yet.
This doesn't currently have standalone tests, but the verifier will
soon learn to check that the regbankselect/select tests are legal.
llvm-svn: 277471
Ahmed Bougacha [Tue, 2 Aug 2016 15:10:25 +0000 (15:10 +0000)]
[GlobalISel] Add Legalized MachineFunction property.
Legalized: The MachineLegalizer ran; all pre-isel generic instructions
have been legalized, i.e., all instructions are now one of:
- generic and always legal (e.g., COPY)
- target-specific
- legal pre-isel generic instructions.
This lets us enforce certain invariants across passes.
This property is GlobalISel-specific, but is always available.
llvm-svn: 277470
Kirill Bobyrev [Tue, 2 Aug 2016 15:10:17 +0000 (15:10 +0000)]
[clang-rename] fix Emacs script build failure
Clang-rename Emacs integration script sometimes doesn't work correctly.
llvm-svn: 277469
Nirav Dave [Tue, 2 Aug 2016 15:08:52 +0000 (15:08 +0000)]
Revert "[MC] Fix handling of end-of-line preprocessor comments"
Causes TSan failure on PPC64
This reverts commit r277459.
llvm-svn: 277468
Dan Gohman [Tue, 2 Aug 2016 14:53:44 +0000 (14:53 +0000)]
[WebAssembly] Remove a README.txt entry that is now implemented.
llvm-svn: 277467
Artur Pilipenko [Tue, 2 Aug 2016 14:44:32 +0000 (14:44 +0000)]
[LVI] NFC. Fix a typo getValueFromFromCondition -> getValueFromCondition
llvm-svn: 277466
Ahmed Bougacha [Tue, 2 Aug 2016 14:42:57 +0000 (14:42 +0000)]
[CodeGen] Generalize MachineFunctionProperties::print comma handling.
This is only used for debug prints, but the previous hardcoded ", "
caused it to be printed unnecessarily when OnlySet, and is annoying
when adding new properties.
llvm-svn: 277465
Ahmed Bougacha [Tue, 2 Aug 2016 14:42:55 +0000 (14:42 +0000)]
[GlobalISel] Require isSSA in GISel passes.
The GISel passes don't make sense on non-SSA functions.
All GISel tests already set isSSA. Enforce that.
llvm-svn: 277464
Kuba Brecka [Tue, 2 Aug 2016 14:41:03 +0000 (14:41 +0000)]
Follow-up for r277458: Update the tsan_mman_test.cc unit test.
llvm-svn: 277463
Kuba Brecka [Tue, 2 Aug 2016 14:30:52 +0000 (14:30 +0000)]
[tsan] Fix the behavior of OSAtomicTestAndClear
The system implementation of OSAtomicTestAndClear returns the original bit, but the TSan interceptor has a bug which always returns zero from the function. This patch fixes this and adds a test.
Differential Revision: https://reviews.llvm.org/D23061
llvm-svn: 277461
Matthew Simpson [Tue, 2 Aug 2016 14:29:41 +0000 (14:29 +0000)]
[LV] Untangle the concepts of uniform and scalar
This patch refactors the logic in collectLoopUniforms and
collectValuesToIgnore, untangling the concepts of "uniform" and "scalar". It
adds isScalarAfterVectorization along side isUniformAfterVectorization to
distinguish the two. Known scalar values include those that are uniform,
getelementptr instructions that won't be vectorized, and induction variables
and induction variable update instructions whose users are all known to be
scalar.
This patch includes the following functional changes:
- In collectLoopUniforms, we mark uniform the pointer operands of interleaved
accesses. Although non-consecutive, these pointers are treated like
consecutive pointers during vectorization.
- In collectValuesToIgnore, we insert a value into VecValuesToIgnore if it
isScalarAfterVectorization rather than isUniformAfterVectorization. This
differs from the previous functionaly in that we now add getelementptr
instructions that will not be vectorized into VecValuesToIgnore.
This patch also removes the ValuesNotWidened set used for induction variable
scalarization since, after the above changes, it is now equivalent to
isScalarAfterVectorization.
Differential Revision: https://reviews.llvm.org/D22867
llvm-svn: 277460
Nirav Dave [Tue, 2 Aug 2016 14:25:49 +0000 (14:25 +0000)]
[MC] Fix handling of end-of-line preprocessor comments
Recommitting after fixing test.
When parsing assembly where the line comment syntax is not hash, the
lexer cannot distinguish between hash's that start a hash line comment
and one that is part of an assembly statement and must be distinguished
during parsing. Previously, this was incompletely handled by not checking
for EndOfStatement at the end of statements and interpreting hash
prefixed statements as comments.
Change EndOfStatement Parsing to check for Hash comments and reintroduce
Hash statement parsing to catch previously handled cases.
Reviewers: rnk, majnemer
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23017
llvm-svn: 277459
Kuba Brecka [Tue, 2 Aug 2016 14:22:12 +0000 (14:22 +0000)]
[tsan] Fix behavior of realloc(nullptr, 0) on Darwin
On Darwin, there are some apps that rely on realloc(nullptr, 0) returning a valid pointer. TSan currently returns nullptr in this case, let's fix it to avoid breaking binary compatibility.
Differential Revision: https://reviews.llvm.org/D22800
llvm-svn: 277458
Diana Picus [Tue, 2 Aug 2016 13:53:00 +0000 (13:53 +0000)]
[clang-cl] Fix PCH tests to use x86_64 as target
These tests require x86-registered-target, but they don't force the target as
x86 on the command line, which means they will be run and they might fail when
building the x86 backend on another platform (such as AArch64).
Fixes https://llvm.org/bugs/show_bug.cgi?id=28797
Differential Revision: https://reviews.llvm.org/D23054
llvm-svn: 277457
Ben Craig [Tue, 2 Aug 2016 13:43:48 +0000 (13:43 +0000)]
Fixing 'Aquire' typo and libcxx build.
llvm-svn: 277456
David Callahan [Tue, 2 Aug 2016 13:26:07 +0000 (13:26 +0000)]
Revert rL277454
llvm-svn: 277455
David Callahan [Tue, 2 Aug 2016 13:19:12 +0000 (13:19 +0000)]
test commit
llvm-svn: 277454
Omair Javaid [Tue, 2 Aug 2016 13:17:49 +0000 (13:17 +0000)]
Revert rL277429: Correct makefile.rules to use toolchain specific AR and OBJCOPY
This commit is causing problems on gcc-* compiler with version number sufix.
Requires a new solution will post a follow up patch.
Differential revision: https://reviews.llvm.org/D20386
llvm-svn: 277453
NAKAMURA Takumi [Tue, 2 Aug 2016 13:17:40 +0000 (13:17 +0000)]
clang-tools-extra/test/clang-rename/TemplateTypenameFindBy*.cpp: Appease targeting ms mode.
llvm-svn: 277452
NAKAMURA Takumi [Tue, 2 Aug 2016 13:17:36 +0000 (13:17 +0000)]
clang-tools-extra/test/clang-rename/TemplateTypenameFindBy*.cpp: Move RUN: lines below not to be affected by tweaks of parameters.
llvm-svn: 277451
Sam Parker [Tue, 2 Aug 2016 12:44:27 +0000 (12:44 +0000)]
[ARM] Improve smul* and smla* isel for Thumb2
Added (sra (shl x, 16), 16) to the sext_16_node PatLeaf for ARM to
simplify some pattern matching. This has allowed several patterns
for smul* and smla* to be removed as well as making it easier to add
the matching for the corresponding instructions for Thumb2 targets.
Also added two Pat classes that are predicated on Thumb2 with the
hasDSP flag and UseMulOps flags. Updated the smul codegen test with
the wider range of patterns plus the ThumbV6 and ThumbV6T2 targets.
Differential Revision: https://reviews.llvm.org/D22908
llvm-svn: 277450
Artem Dergachev [Tue, 2 Aug 2016 12:21:09 +0000 (12:21 +0000)]
[analyzer] Respect statement-specific data in CloneDetection.
So far the CloneDetector only respected the kind of each statement when
searching for clones. This patch refines the way the CloneDetector collects data
from each statement by providing methods for each statement kind,
that will read the kind-specific attributes.
For example, statements 'a < b' and 'a > b' are no longer considered to be
clones, because they are different in operation code, which is an attribute
specific to the BinaryOperator statement kind.
Patch by Raphael Isemann!
Differential Revision: https://reviews.llvm.org/D22514
llvm-svn: 277449