Amaury Sechet [Wed, 2 Mar 2016 21:28:30 +0000 (21:28 +0000)]
Unpack array of all sizes in InstCombine
Summary: This is another step toward improving fca support. This unpack load of array in a series of load to array's elements.
Reviewers: chandlerc, joker.eph, majnemer, reames, hfinkel
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D15890
llvm-svn: 262521
Devin Coughlin [Wed, 2 Mar 2016 21:22:48 +0000 (21:22 +0000)]
[analyzer] Fix capitalization in ObjCSuperDeallocChecker diagnostic.
llvm-svn: 262520
Daniel Berlin [Wed, 2 Mar 2016 21:16:28 +0000 (21:16 +0000)]
Really fix ASAN leak/etc issues with MemorySSA unittests
llvm-svn: 262519
Rui Ueyama [Wed, 2 Mar 2016 21:11:36 +0000 (21:11 +0000)]
Use ld.lld instead of "lld -flavor gnu".
llvm-svn: 262518
Kostya Serebryany [Wed, 2 Mar 2016 21:08:16 +0000 (21:08 +0000)]
[libFuzzer] add -Werror for libFuzzer build rule
llvm-svn: 262517
Artem Belevich [Wed, 2 Mar 2016 21:03:20 +0000 (21:03 +0000)]
Fixed test failure platforms with name mangling different from Linux.
* Run cc with -triple x86_64-linux-gnu to make symbol mangling predictable.
* Use temporary file as a fake GPU input so its content
does not interfere with pattern matching.
llvm-svn: 262516
Rong Xu [Wed, 2 Mar 2016 20:59:36 +0000 (20:59 +0000)]
[PGO] Change profile use cc1 option to handle IR level profiles
This patch changes cc1 option for PGO profile use from
-fprofile-instr-use=<path> to -fprofile-instrument-use-path=<path>.
-fprofile-instr-use=<path> is now a driver only option.
In addition to decouple the cc1 option from the driver level option, this patch
also enables IR level profile use. cc1 option handling now reads the profile
header and sets CodeGenOpt ProfileUse (valid values are {None, Clang, LLVM}
-- this is a common enum for -fprofile-instrument={}, for the profile
instrumentation), and invoke the pipeline to enable the respective PGO use pass.
Reviewers: silvas, davidxl
Differential Revision: http://reviews.llvm.org/D17737
llvm-svn: 262515
Xinliang David Li [Wed, 2 Mar 2016 20:59:11 +0000 (20:59 +0000)]
Fix minor bug in test
llvm-svn: 262514
Stephane Sezer [Wed, 2 Mar 2016 20:53:19 +0000 (20:53 +0000)]
Use shallow clones in build-llvm.py.
Summary:
This makes cloning (and therefore the whole build) faster.
The checkout step goes from ~4m to ~30s on my host.
Reviewers: tfiala
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D17425
llvm-svn: 262513
Daniel Berlin [Wed, 2 Mar 2016 20:36:22 +0000 (20:36 +0000)]
Revert "Fix ASAN detected errors in code and test" (it was not meant to be committed yet)
This reverts commit
890bbccd600ba1eb050353d06a29650ad0f2eb95.
llvm-svn: 262512
Daniel Berlin [Wed, 2 Mar 2016 20:27:29 +0000 (20:27 +0000)]
Fix ASAN detected errors in code and test
llvm-svn: 262511
Bob Wilson [Wed, 2 Mar 2016 20:02:25 +0000 (20:02 +0000)]
Add another test for the GlobalOpt change in r212079.
This is a test that Akira Hatanaka wrote to test GlobalOpt's handling of
aliases with GEP operands. David Majnemer independently made the same
change to GlobalOpt in r212079. Akira's test is a useful addition, so I'm
pulling it over from the llvm repo for Swift on GitHub.
llvm-svn: 262510
Kostya Serebryany [Wed, 2 Mar 2016 19:45:10 +0000 (19:45 +0000)]
[libFuzzer] more trophies
llvm-svn: 262509
Nico Weber [Wed, 2 Mar 2016 19:38:24 +0000 (19:38 +0000)]
fix test from r262506
llvm-svn: 262508
Renato Golin [Wed, 2 Mar 2016 19:35:45 +0000 (19:35 +0000)]
[ARM] Merging 64-bit divmod lib calls into one
When div+rem calls on the same arguments are found, the ARM back-end merges the
two calls into one __aeabi_divmod call for up to 32-bits values. However,
for 64-bit values, which also have a lib call (__aeabi_ldivmod), it wasn't
merging the calls, and thus calling ldivmod twice and spilling the temporary
results, which generated pretty bad code.
This patch legalises 64-bit lib calls for divmod, so that now all the spilling
and the second call are gone. It also relaxes the DivRem combiner a bit on the
legal type check, since it was already checking for isLegalOrCustom on every
value, so the extra check for isTypeLegal was redundant.
This patch fixes PR17193 (and a long time FIXME in the tests).
llvm-svn: 262507
Nico Weber [Wed, 2 Mar 2016 19:28:54 +0000 (19:28 +0000)]
Serialize `#pragma detect_mismatch`.
This is like r262493, but for pragma detect_mismatch instead of pragma comment.
The two pragmas have similar behavior, so use the same approach for both.
llvm-svn: 262506
Reid Kleckner [Wed, 2 Mar 2016 19:20:59 +0000 (19:20 +0000)]
Revert "[X86] Elide references to _chkstk for dynamic allocas"
This reverts commit r262370.
It turns out there is code out there that does sequences of allocas
greater than 4K: http://crbug.com/591404
The goal of this change was to improve the code size of inalloca call
sequences, but we got tangled up in the mess of dynamic allocas.
Instead, we should come back later with a separate MI pass that uses
dominance to optimize the full sequence. This should also be able to
remove the often unneeded stacksave/stackrestore pairs around the call.
llvm-svn: 262505
Matthias Braun [Wed, 2 Mar 2016 19:20:00 +0000 (19:20 +0000)]
ARM: Introduce conservative load/store optimization mode
Most of the time ARM has the CCR.UNALIGN_TRP bit set to false which
means that unaligned loads/stores do not trap and even extensive testing
will not catch these bugs. However the multi/double variants are not
affected by this bit and will still trap. In effect a more aggressive
load/store optimization will break existing (bad) code.
These bugs do not necessarily manifest in the broken code where the
misaligned pointer is formed but often later in perfectly legal code
where it is accessed. This means recompiling system libraries (which
have no alignment bugs) with a newer compiler will break existing
applications (with alignment bugs) that worked before.
So (under protest) I implemented this safe mode which limits the
formation of multi/double operations to cases that are not affected by
user code (stack operations like spills/reloads) or cases where the
normal operations trap anyway (floating point load/stores). It is
disabled by default.
Differential Revision: http://reviews.llvm.org/D17015
llvm-svn: 262504
Kostya Serebryany [Wed, 2 Mar 2016 19:16:54 +0000 (19:16 +0000)]
[libFuzzer] allow -fsanitize-coverage=0 (disables all coverage)
llvm-svn: 262503
Rui Ueyama [Wed, 2 Mar 2016 19:08:05 +0000 (19:08 +0000)]
Merge DarwinLdDriver and Driver.
Now that DarwinLdDriver is the only derived class of Driver.
This patch merges them and actually removed the class because
they can now just be non-member functions. This change simplifies
a common header, Driver.h.
http://reviews.llvm.org/D17788
llvm-svn: 262502
Rui Ueyama [Wed, 2 Mar 2016 19:06:20 +0000 (19:06 +0000)]
Use C++11 initializers for data members.
http://reviews.llvm.org/D17793
llvm-svn: 262501
Justin Bogner [Wed, 2 Mar 2016 19:01:11 +0000 (19:01 +0000)]
SelectionDAG: Use correctly sized allocation functions for SDNodes
The placement new calls here were all calling the allocation function
in RecyclingAllocator/Recycler for SDNode, instead of the function for
the specific subclass we were constructing.
Since this particular allocator always overallocates it more or less
worked, but would hide what we're actually doing from any memory
tools. Also, if you tried to change this allocator so something like a
BumpPtrAllocator or MallocAllocator, the compiler would crash horribly
all the time.
Part of llvm.org/PR26808.
llvm-svn: 262500
Artem Belevich [Wed, 2 Mar 2016 18:28:53 +0000 (18:28 +0000)]
[CUDA] Do not generate unnecessary runtime init code.
Differential Revision: http://reviews.llvm.org/D17780
llvm-svn: 262499
Artem Belevich [Wed, 2 Mar 2016 18:28:50 +0000 (18:28 +0000)]
[CUDA] Emit host-side 'shadows' for device-side global variables
... and register them with CUDA runtime.
This is needed for commonly used cudaMemcpy*() APIs that use address of
host-side shadow to access their counterparts on device side.
Fixes PR26340
Differential Revision: http://reviews.llvm.org/D17779
llvm-svn: 262498
Rafael Espindola [Wed, 2 Mar 2016 18:21:46 +0000 (18:21 +0000)]
1Fix handling of undef in partial LTO.
llvm-svn: 262497
Geoff Berry [Wed, 2 Mar 2016 17:58:31 +0000 (17:58 +0000)]
[AArch64] Enable non-leaf frame pointer elimination.
Summary:
This change enables frame pointer elimination in non-leaf functions.
The -fomit-frame-pointer option still needs to be used when compiling
via clang (or an equivalent method of not setting the
'no-frame-pointer-elim*' function attributes if generating llvm IR via
some other method) to take advantage of this optimization.
This change should be NFC when compiling via clang without
-fomit-frame-pointer.
Reviewers: t.p.northover
Subscribers: aemerson, rengolin, tberghammer, qcolombet, llvm-commits, danalbert, mcrosier, srhines
Differential Revision: http://reviews.llvm.org/D17730
llvm-svn: 262495
Chris Bieneman [Wed, 2 Mar 2016 17:56:30 +0000 (17:56 +0000)]
[CMake] Add test-depends target to build dependencies of check-all
This is just another convenience target for bots to use. It enables isolation of building and testing.
llvm-svn: 262494
Nico Weber [Wed, 2 Mar 2016 17:28:48 +0000 (17:28 +0000)]
Serialize `#pragma comment`.
`#pragma comment` was handled by Sema calling a function on ASTConsumer, and
CodeGen then implementing this function and writing things to its output.
Instead, introduce a PragmaCommentDecl AST node and hang one off the
TranslationUnitDecl for every `#pragma comment` line, and then use the regular
serialization machinery. (Since PragmaCommentDecl has codegen relevance, it's
eagerly deserialized.)
http://reviews.llvm.org/D17799
llvm-svn: 262493
Rafael Espindola [Wed, 2 Mar 2016 17:21:06 +0000 (17:21 +0000)]
LTO: Use the correct relocation model.
llvm-svn: 262492
Reid Kleckner [Wed, 2 Mar 2016 16:42:56 +0000 (16:42 +0000)]
[cmake] Check the compiler version first
Otherwise users get messages from CheckAtomic about missing libatomic
instead of a sensible message that says "use GCC 4.7 or newer".
I structured the change along the lines of HandleLLVMStdlib.cmake, so
that the standalone build of Clang still gets the compiler version
check.
Reviewers: beanz
Differential Revision: http://reviews.llvm.org/D17789
llvm-svn: 262491
Chandler Carruth [Wed, 2 Mar 2016 15:56:53 +0000 (15:56 +0000)]
[AA] Hoist the logic to reformulate various AA queries in terms of other
parts of the AA interface out of the base class of every single AA
result object.
Because this logic reformulates the query in terms of some other aspect
of the API, it would easily cause O(n^2) query patterns in alias
analysis. These could in turn be magnified further based on the number
of call arguments, and then further based on the number of AA queries
made for a particular call. This ended up causing problems for Rust that
were actually noticable enough to get a bug (PR26564) and probably other
places as well.
When originally re-working the AA infrastructure, the desire was to
regularize the pattern of refinement without losing any generality.
While I think it was successful, that is clearly proving to be too
costly. And the cost is needless: we gain no actual improvement for this
generality of making a direct query to tbaa actually be able to
re-use some other alias analysis's refinement logic for one of the other
APIs, or some such. In short, this is entirely wasted work.
To the extent possible, delegation to other API surfaces should be done
at the aggregation layer so that we can avoid re-walking the
aggregation. In fact, this significantly simplifies the logic as we no
longer need to smuggle the aggregation layer into each alias analysis
(or the TargetLibraryInfo into each alias analysis just so we can form
argument memory locations!).
However, we also have some delegation logic inside of BasicAA and some
of it even makes sense. When the delegation logic is baking in specific
knowledge of aliasing properties of the LLVM IR, as opposed to simply
reformulating the query to utilize a different alias analysis interface
entry point, it makes a lot of sense to restrict that logic to
a different layer such as BasicAA. So one aspect of the delegation that
was in every AA base class is that when we don't have operand bundles,
we re-use function AA results as a fallback for callsite alias results.
This relies on the IR properties of calls and functions w.r.t. aliasing,
and so seems a better fit to BasicAA. I've lifted the logic up to that
point where it seems to be a natural fit. This still does a bit of
redundant work (we query function attributes twice, once via the
callsite and once via the function AA query) but it is *exactly* twice
here, no more.
The end result is that all of the delegation logic is hoisted out of the
base class and into either the aggregation layer when it is a pure
retargeting to a different API surface, or into BasicAA when it relies
on the IR's aliasing properties. This should fix the quadratic query
pattern reported in PR26564, although I don't have a stand-alone test
case to reproduce it.
It also seems general goodness. Now the numerous AAs that don't need
target library info don't carry it around and depend on it. I think
I can even rip out the general access to the aggregation layer and only
expose that in BasicAA as it is the only place where we re-query in that
manner.
However, this is a non-trivial change to the AA infrastructure so I want
to get some additional eyes on this before it lands. Sadly, it can't
wait long because we should really cherry pick this into 3.8 if we're
going to go this route.
Differential Revision: http://reviews.llvm.org/D17329
llvm-svn: 262490
Rafael Espindola [Wed, 2 Mar 2016 15:43:50 +0000 (15:43 +0000)]
Handle comdat in LTO.
llvm-svn: 262489
Michael Kruse [Wed, 2 Mar 2016 14:59:16 +0000 (14:59 +0000)]
Fix: Add pass manager barrier.
The LNT test suite with -polly-process-unprofitable
-polly-position=before-vectorizer currenty fails 59 tests. With this
barrier added, only 16 keep failing. This is probably because Polly's
code generation currently does not correctly preserve all analyses it
promised to preserve. Temporarily add this barrier until further
investigation.
llvm-svn: 262488
Daniel Jasper [Wed, 2 Mar 2016 14:26:59 +0000 (14:26 +0000)]
test/Driver/cl-pch-errorhandling.cpp: Copy input file to a temporary
location as we cannot assume the location of the input file to be
writable.
llvm-svn: 262487
Simon Pilgrim [Wed, 2 Mar 2016 14:16:50 +0000 (14:16 +0000)]
[X86][SSSE3] Added combine test for unary shuffle (pshufb) only referencing elements from one of the inputs of a binary shuffle (punpcklbw)
llvm-svn: 262486
Rafael Espindola [Wed, 2 Mar 2016 14:12:37 +0000 (14:12 +0000)]
Fix BUILD_SHARED_LIBS build.
llvm-svn: 262485
Haojian Wu [Wed, 2 Mar 2016 14:12:17 +0000 (14:12 +0000)]
[clang-tidy] Fix an assertion failure of "SLocEntry::getExpansion()" when IncludeInserter handles macro header file.
Summary: Also Fixes PR24749.
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D17805
llvm-svn: 262484
Sagar Thakur [Wed, 2 Mar 2016 13:53:22 +0000 (13:53 +0000)]
[TSAN] Fix test java_race_pc
Incremented the pc for each architecture in accordance with StackTrace:GetPreviousInstructionPC
Reviewers: samsonov, dvyukov
Subscribers: llvm-commits, mohit.bhakkad, jaydeep
Differential: http://reviews.llvm.org/D17802
llvm-svn: 262483
Tamas Berghammer [Wed, 2 Mar 2016 12:42:43 +0000 (12:42 +0000)]
Upgrade the arm/thumb architecture used by the disassembler
Previously we were using thumbv7 and armv8.1a what ended up showing a
few undefined instruction when disassembling code. This CL update the
architectures used to armv8.2a and thumbv8.2a (newest available) so we
display all instruction in the disassambly.
llvm-svn: 262482
Michael Zuckerman [Wed, 2 Mar 2016 12:06:06 +0000 (12:06 +0000)]
[CLANG] [AVX512] [BUILTIN] Adding PSRA{W|WI}{128|256|512}.
Differential Revision: http://reviews.llvm.org/D17706
llvm-svn: 262481
Michael Zuckerman [Wed, 2 Mar 2016 12:05:07 +0000 (12:05 +0000)]
[LLVM][AVX512]PSRAWI Change imm8 to int.
Differential Revision: http://reviews.llvm.org/D17705
llvm-svn: 262480
Renato Golin [Wed, 2 Mar 2016 11:54:07 +0000 (11:54 +0000)]
Revert "[RT] Make tsan tests more portable"
This reverts commit r262476, as it broken the AArch64 VMA42 buildbot.
llvm-svn: 262479
Simon Pilgrim [Wed, 2 Mar 2016 11:43:05 +0000 (11:43 +0000)]
[X86][SSE] Lower 128-bit MOVDDUP with existing VBROADCAST mechanisms
We have a number of useful lowering strategies for VBROADCAST instructions (both from memory and register element 0) which the 128-bit form of the MOVDDUP instruction can make use of.
This patch tweaks lowerVectorShuffleAsBroadcast to enable it to broadcast 2f64 args using MOVDDUP as well.
It does require a slight tweak to the lowerVectorShuffleAsBroadcast mechanism as the existing MOVDDUP lowering uses isShuffleEquivalent which can match binary shuffles that can lower to (unary) broadcasts.
Differential Revision: http://reviews.llvm.org/D17680
llvm-svn: 262478
Nikolay Haustov [Wed, 2 Mar 2016 11:16:56 +0000 (11:16 +0000)]
Revert "[AMDGPU] table-driven parser/printer for amd_kernel_code_t structure fields"
Build failure with clang.
llvm-svn: 262477
Renato Golin [Wed, 2 Mar 2016 11:10:02 +0000 (11:10 +0000)]
[RT] Make tsan tests more portable
by avoiding potential races when scanning stdout and stderr output.
Patch by Maxim Kuvyrkov.
llvm-svn: 262476
Nikolay Haustov [Wed, 2 Mar 2016 10:54:21 +0000 (10:54 +0000)]
Revert "[AMDGPU] Using table-driven amd_kernel_code_t field parser in assembler."
Build failure with clang.
llvm-svn: 262475
Nikolay Haustov [Wed, 2 Mar 2016 10:36:30 +0000 (10:36 +0000)]
[AMDGPU] Using table-driven amd_kernel_code_t field parser in assembler.
complementary patch to table-driven amd_kernel_code_t field parser/printer utility. lit tests passed.
Patch by: Valery Pykhtin
Differential Revision: http://reviews.llvm.org/D17151
llvm-svn: 262474
Nikolay Haustov [Wed, 2 Mar 2016 10:36:25 +0000 (10:36 +0000)]
[AMDGPU] table-driven parser/printer for amd_kernel_code_t structure fields
This is going to be used in .hsatext disassembler and can be used
in current assembler parser (lit tests passed on parsing).
Code using this helpers isn't included in this patch.
Benefits:
unified approach
fast field name lookup on parsing
Later I would like to enhance some of the field naming/syntax using this code.
Patch by: Valery Pykhtin
Differential Revision: http://reviews.llvm.org/D17150
llvm-svn: 262473
Dmitry Vyukov [Wed, 2 Mar 2016 09:54:40 +0000 (09:54 +0000)]
libfuzzer: fix compiler warnings
- unused sigaction/setitimer result (used in assert)
- unchecked fscanf return value
- signed/unsigned comparison
llvm-svn: 262472
Michael Zuckerman [Wed, 2 Mar 2016 09:05:46 +0000 (09:05 +0000)]
[CLANG] [AVX512] [BUILTIN] Adding PSRAV
Differential Revision: http://reviews.llvm.org/D17699
llvm-svn: 262471
Haojian Wu [Wed, 2 Mar 2016 09:01:25 +0000 (09:01 +0000)]
[clang-tidy] Make 'modernize-pass-by-value' fix work on header files.
Reviewers: alexfh
Subscribers: jbcoe, cfe-commits
Differential Revision: http://reviews.llvm.org/D17756
llvm-svn: 262470
Filipe Cabecinhas [Wed, 2 Mar 2016 08:30:40 +0000 (08:30 +0000)]
[test/vptr-non-unique-typeinfo] Address Samsonov's post-commit review
Reviewers: samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17783
llvm-svn: 262469
Craig Topper [Wed, 2 Mar 2016 07:32:45 +0000 (07:32 +0000)]
[X86] Remove unnecessary call to isReg from emitter's DestMem handling for VEX prefix. The operand is always a register. NFC
llvm-svn: 262468
Craig Topper [Wed, 2 Mar 2016 07:32:43 +0000 (07:32 +0000)]
[X86] Make X86MCCodeEmitter::DetermineREXPrefix locate operands more like how VEX prefix handling does.
llvm-svn: 262467
David Majnemer [Wed, 2 Mar 2016 06:48:47 +0000 (06:48 +0000)]
[Sema] PR26444 fix crash when alignment value is >= 2**16
Sema allows max values up to 2**28, use unsigned instead of unsiged
short to hold values that large.
Differential Revision: http://reviews.llvm.org/D17248
Patch by Don Hinton!
llvm-svn: 262466
David Majnemer [Wed, 2 Mar 2016 06:46:52 +0000 (06:46 +0000)]
[X86] Permit reading of the FLAGS register without it being previously defined
We modeled the RDFLAGS{32,64} operations as "using" {E,R}FLAGS.
While technically correct, this is not be desirable for folks who want
to examine aspects of the FLAGS register which are not related to
computation like whether or not CPUID is a valid instruction.
Differential Revision: http://reviews.llvm.org/D17782
llvm-svn: 262465
Craig Topper [Wed, 2 Mar 2016 06:35:22 +0000 (06:35 +0000)]
[X86] Remove assertion I accidentally left in.
llvm-svn: 262464
Davide Italiano [Wed, 2 Mar 2016 06:09:18 +0000 (06:09 +0000)]
[modules] addHeaderInclude() can't fail.
Differential Revision: http://reviews.llvm.org/D17794
llvm-svn: 262463
Craig Topper [Wed, 2 Mar 2016 06:06:18 +0000 (06:06 +0000)]
[X86] Be more structured about how we capture the register number when it is encoded in bits 7:4 of the immediate.
For some instructions the register is not the last operand and the immediate handling had to detect this and hardcode the index to find it. It also required CurOp to be pointing at the last operand handled in the Form switch whereas for any instruction it would be pointing at the next operand.
Now we just capture the value in the Form switch when we know exactly where it is and the CurOp pointer can behave normally.
llvm-svn: 262462
Simon Atanasyan [Wed, 2 Mar 2016 05:38:42 +0000 (05:38 +0000)]
[ELF] Fix reading of PC values of FDEs
The patch fixes two related problems:
- If CIE augmentation string has 'L' token the CIE contains a byte
defines LSDA encoding. We should skip this byte in `getFdeEncoding`
routine. Before this fix we do not skip it and if the next token
is 'R' treat this byte as FDE encoding.
- FDE encoding format has separate flags e.g. DW_EH_PE_pcrel for
definition of relative pointers. We should add .eh_frame address to
the PC value iif the DW_EH_PE_pcrel is specified.
http://www.airs.com/blog/archives/460
There is one more not fixed problem in this code. If PC value is encoded
using signed relative format e.g. DW_EH_PE_sdata4 | DW_EH_PE_pcrel we
should sign extend result of read32 to perform calculation correctly.
I am going to fix that in a separate patch.
Differential Revision: http://reviews.llvm.org/D17733
llvm-svn: 262461
Alexey Bataev [Wed, 2 Mar 2016 04:57:40 +0000 (04:57 +0000)]
[OPENMP 4.5] Codegen for data members in 'reduction' clause.
OpenMP 4.5 allows to privatize non-static data members of current class
in non-static member functions. Patch supports codegen for non-static
data members in 'reduction' clauses.
llvm-svn: 262460
Sanjoy Das [Wed, 2 Mar 2016 04:52:22 +0000 (04:52 +0000)]
[SCEV] Minor naming, braces cleanup; NFC
llvm-svn: 262459
Craig Topper [Wed, 2 Mar 2016 04:42:31 +0000 (04:42 +0000)]
[X86] Use MCPhysReg and uint16_t for static arrays of registers and opcodes respectively should reduce size tiny bit. NFC
llvm-svn: 262458
Matt Arsenault [Wed, 2 Mar 2016 04:12:39 +0000 (04:12 +0000)]
AMDGPU: Fix bug 26659.
Fix checking the same instruction twice instead of the
second branch that uses vccz. I don't think this matters
currently because s_branch_vccnz is always used currently.
llvm-svn: 262457
Matt Arsenault [Wed, 2 Mar 2016 04:05:14 +0000 (04:05 +0000)]
AMDGPU: Cleanup suggested in bug 23960
llvm-svn: 262456
Matt Arsenault [Wed, 2 Mar 2016 03:33:55 +0000 (03:33 +0000)]
Bug 20810: Use report_fatal_error instead of unreachable
llvm-svn: 262455
Sanjoy Das [Wed, 2 Mar 2016 02:56:29 +0000 (02:56 +0000)]
Add a comment with a rational for the unusual code structure
llvm-svn: 262454
Sanjoy Das [Wed, 2 Mar 2016 02:44:08 +0000 (02:44 +0000)]
Qualify getRangeForAffineAR with this-> for MSVC
llvm-svn: 262453
George Burgess IV [Wed, 2 Mar 2016 02:35:04 +0000 (02:35 +0000)]
Attempt to fix ASAN failure in a MemorySSA test.
llvm-svn: 262452
Sanjoy Das [Wed, 2 Mar 2016 02:34:20 +0000 (02:34 +0000)]
Perturb code in an attempt to appease MSVC
For some reason MSVC seems to think I'm calling getConstant() from a
static context. Try to avoid this issue by explicitly specifying
'this->' (though I'm not confident that this will actually work).
llvm-svn: 262451
Eugene Zelenko [Wed, 2 Mar 2016 02:18:18 +0000 (02:18 +0000)]
Fix Clang-tidy modernize-use-nullptr warnings in some files in source/Core; other minor fixes.
llvm-svn: 262450
Sanjoy Das [Wed, 2 Mar 2016 02:15:42 +0000 (02:15 +0000)]
More code permutation to appease MSVC
llvm-svn: 262449
Sanjoy Das [Wed, 2 Mar 2016 01:59:37 +0000 (01:59 +0000)]
Remove "auto" to appease the MSVC bots
llvm-svn: 262448
Rui Ueyama [Wed, 2 Mar 2016 01:49:27 +0000 (01:49 +0000)]
Use C++11 initializers for data members.
llvm-svn: 262447
Matt Arsenault [Wed, 2 Mar 2016 01:36:51 +0000 (01:36 +0000)]
DAGCombiner: Make sure an integer is being truncated
llvm-svn: 262446
Rui Ueyama [Wed, 2 Mar 2016 01:34:36 +0000 (01:34 +0000)]
Remove more dead code.
llvm-svn: 262445
Rui Ueyama [Wed, 2 Mar 2016 01:34:34 +0000 (01:34 +0000)]
Remove default implementations that are always overridden by subclasses.
llvm-svn: 262444
Rui Ueyama [Wed, 2 Mar 2016 01:23:29 +0000 (01:23 +0000)]
Remove more dead code.
llvm-svn: 262443
Reid Kleckner [Wed, 2 Mar 2016 01:21:48 +0000 (01:21 +0000)]
Add a few dllimport/dllexport tests. NFC
Summary:
This change just adds tests for some corner cases of dllimport/dllexport,
primarily for some static methods.
We plan to enable dllimport/dllexport support for the PS4, and these
additional tests are for points we previously were testing internally.
-Warren Ristow
SN Systems - Sony Computer Entertainment Group
Reviewers: rnk
Subscribers: silvas
Differential Revision: http://reviews.llvm.org/D17775
llvm-svn: 262442
Eugene Zelenko [Wed, 2 Mar 2016 01:09:03 +0000 (01:09 +0000)]
Fix Clang-tidy modernize-use-nullptr warnings in some files in source/Core; other minor fixes.
llvm-svn: 262441
Sanjay Patel [Wed, 2 Mar 2016 01:04:09 +0000 (01:04 +0000)]
revert r262424 because there's a *clang test* for AArch64 that checks -O3 asm output
that is broken by this change
llvm-svn: 262440
Daniel Berlin [Wed, 2 Mar 2016 00:58:48 +0000 (00:58 +0000)]
Fix SHARED_LIBS build
llvm-svn: 262439
Sanjoy Das [Wed, 2 Mar 2016 00:57:54 +0000 (00:57 +0000)]
[SCEV] Make getRange smarter around selects
Have ScalarEvolution::getRange re-consider cases like "{C?A:B,+,C?P:Q}"
by factoring out "C" and computing RangeOf{A,+,P} union RangeOf({B,+,Q})
instead.
The latter can be easier to compute precisely in cases like
"{C?0:N,+,C?1:-1}" N is the backedge taken count of the loop; since in
such cases the latter form simplifies to [0,N+1) union [0,N+1).
llvm-svn: 262438
Sanjoy Das [Wed, 2 Mar 2016 00:57:39 +0000 (00:57 +0000)]
[SCEV] Extract out a getRangeForAffineAR; NFC
Pure code-motion change. Will be used later in making getRange more clever.
llvm-svn: 262437
Rui Ueyama [Wed, 2 Mar 2016 00:43:37 +0000 (00:43 +0000)]
Remove dead code.
llvm-svn: 262436
Rui Ueyama [Wed, 2 Mar 2016 00:37:50 +0000 (00:37 +0000)]
Remove remaining files of Core.
llvm-svn: 262435
Rui Ueyama [Wed, 2 Mar 2016 00:31:34 +0000 (00:31 +0000)]
Tidy up CMakefiles.
llvm-svn: 262434
Rui Ueyama [Wed, 2 Mar 2016 00:28:35 +0000 (00:28 +0000)]
Remove unused #include's.
llvm-svn: 262431
Chris Bieneman [Wed, 2 Mar 2016 00:27:15 +0000 (00:27 +0000)]
[CMake] Add convenience target clang-test-depends to build test dependencies.
This is useful when paired with the distribution targets to build prerequisites for running tests.
llvm-svn: 262429
Chris Bieneman [Wed, 2 Mar 2016 00:27:14 +0000 (00:27 +0000)]
[CMake] Add convenience target llvm-test-depends to build test dependencies.
This is useful when paired with the distribution targets to build prerequisites for running tests.
llvm-svn: 262428
Chris Bieneman [Wed, 2 Mar 2016 00:27:12 +0000 (00:27 +0000)]
[CMake] Add distribution target that is the "just-build" side of install-distribution
This is just a convenience target to allow limiting what you build.
llvm-svn: 262427
Sanjay Patel [Tue, 1 Mar 2016 23:55:18 +0000 (23:55 +0000)]
[InstCombine] convert 'isPositive' and 'isNegative' vector comparisons to shifts (PR26701)
As noted in the code comment, I don't think we can do the same transform that we do for
*scalar* integers comparisons to *vector* integers comparisons because it might pessimize
the general case.
Exhibit A for an incomplete integer comparison ISA remains x86 SSE/AVX: it only has EQ and GT
for integer vectors.
But we should now recognize all the variants of this construct and produce the optimal code
for the cases shown in:
https://llvm.org/bugs/show_bug.cgi?id=26701
llvm-svn: 262424
Rui Ueyama [Tue, 1 Mar 2016 23:52:04 +0000 (23:52 +0000)]
Make a few utility functions file-scoped.
makeErrorFile and parseMemberFiles are now used only in DarwinLdDriver.cpp.
This patch moves them to that file.
llvm-svn: 262423
Rui Ueyama [Tue, 1 Mar 2016 23:48:03 +0000 (23:48 +0000)]
Remove dead code.
llvm-svn: 262422
Rui Ueyama [Tue, 1 Mar 2016 23:44:05 +0000 (23:44 +0000)]
Remove CoreDriver.
CoreDriver implements a driver for a hypothetical platform.
It is intended to be used in unittests. However, it is actually
redundant because the features are tested using the real driver
for the real platforms. So we can remove this.
http://reviews.llvm.org/D17698
llvm-svn: 262421
Nico Weber [Tue, 1 Mar 2016 23:16:44 +0000 (23:16 +0000)]
clang-cl: Implement initial limited support for precompiled headers.
In the gcc precompiled header model, one explicitly runs clang with `-x
c++-header` on a .h file to produce a gch file, and then includes the header
with `-include foo.h` and if a .gch file exists for that header it gets used.
This is documented at
http://clang.llvm.org/docs/UsersManual.html#precompiled-headers
cl.exe's model is fairly different, and controlled by the two flags /Yc and
/Yu. A pch file is generated as a side effect of a regular compilation when
/Ycheader.h is passed. While the compilation is running, the compiler keeps
track of #include lines in the main translation unit and writes everything up
to an `#include "header.h"` line into a pch file. Conversely, /Yuheader.h tells
the compiler to skip all code in the main TU up to and including `#include
"header.h"` and instead load header.pch. (It's also possible to use /Yc and /Yu
without an argument, in that case a `#pragma hrdstop` takes the role of
controlling the point where pch ends and real code begins.)
This patch implements limited support for this in that it requires the pch
header to be passed as a /FI force include flag – with this restriction,
it can be implemented almost completely in the driver with fairly small amounts
of code. For /Yu, this is trivial, and for /Yc a separate pch action is added
that runs before the actual compilation. After r261774, the first failing
command makes a compilation stop – this means if the pch fails to build the
main compilation won't run, which is what we want. However, in /fallback builds
we need to run the main compilation even if the pch build fails so that the
main compilation's fallback can run. To achieve this, add a ForceSuccessCommand
that pretends that the pch build always succeeded in /fallback builds (the main
compilation will then fail to open the pch and run the fallback cl.exe
invocation).
If /Yc /Yu are used in a setup that clang-cl doesn't implement yet, clang-cl
will now emit a "not implemented yet; flag ignored" warning that can be
disabled using -Wno-clang-cl-pch.
Since clang-cl doesn't yet serialize some important things (most notably
`pragma comment(lib, ...)`, this feature is disabled by default and only
enabled by an internal driver flag. Once it's more stable, this internal flag
will disappear.
(The default stdafx.h setup passes stdafx.h as explicit argument to /Yc but not
as /FI – instead every single TU has to `#include <stdafx.h>` as first thing it
does. Implementing support for this should be possible with the approach in
this patch with minimal frontend changes by passing a --stop-at / --start-at
flag from the driver to the frontend. This is left for a follow-up. I don't
think we ever want to support `#pragma hdrstop`, and supporting it with this
approach isn't easy: This approach relies on the driver knowing the pch
filename in advance, and `#pragma hdrstop(out.pch)` can set the output
filename, so the driver can't know about it in advance.)
clang-cl now also honors /Fp and puts pch files in the same spot that cl.exe
would put them, but the pch file format is of course incompatible. This has
ramifications on /fallback, so /Yc /Yu aren't passed through to cl.exe in
/fallback builds.
http://reviews.llvm.org/D17695
llvm-svn: 262420
Dehao Chen [Tue, 1 Mar 2016 22:53:02 +0000 (22:53 +0000)]
Perform InstructioinCombiningPass before SampleProfile pass.
Summary: SampleProfile pass needs to be performed after InstructionCombiningPass, which helps eliminate un-inlinable function calls.
Reviewers: davidxl, dnovillo
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17742
llvm-svn: 262419
Simon Pilgrim [Tue, 1 Mar 2016 22:38:33 +0000 (22:38 +0000)]
Updated SSE41 builtin tests to more closely match the llvm fast-isel equivalent tests
llvm-svn: 262418
Kostya Serebryany [Tue, 1 Mar 2016 22:33:14 +0000 (22:33 +0000)]
[libFuzzer] deprecate exit_on_first flag
llvm-svn: 262417
David Blaikie [Tue, 1 Mar 2016 22:29:00 +0000 (22:29 +0000)]
llvm-dwp: Add missing copyright notice to llvm-dwp.cpp
Addressing feedback on IRC by Sean Silva.
llvm-svn: 262416