Justin Lebar [Mon, 15 Aug 2016 20:38:56 +0000 (20:38 +0000)]
Add the notion of deferred diagnostics.
Summary:
This patch lets you create diagnostics that are emitted if and only if a
particular FunctionDecl is codegen'ed.
This is necessary for CUDA, where some constructs -- e.g. calls from
host+device functions to host functions when compiling for device -- are
allowed to appear in semantically-correct programs, but only if they're
never codegen'ed.
Reviewers: rnk
Subscribers: cfe-commits, tra
Differential Revision: https://reviews.llvm.org/D23241
llvm-svn: 278735
Justin Lebar [Mon, 15 Aug 2016 20:38:52 +0000 (20:38 +0000)]
[CUDA] Include CUDA headers before anything else.
Summary:
There's no point to --cuda-path if we then go and include /usr/include
first. And if you install the right packages, Ubuntu will install (very
old) CUDA headers there.
Reviewers: tra
Subscribers: cfe-commits, Prazek
Differential Revision: https://reviews.llvm.org/D23341
llvm-svn: 278734
Justin Lebar [Mon, 15 Aug 2016 20:38:48 +0000 (20:38 +0000)]
[CUDA] Fix CUDA install version parsing.
Summary:
getAsInteger returns true on error. Oops.
No test because the behavior at the moment is identical with or without
this change.
Reviewers: tra
Subscribers: cfe-commits, Prazek
Differential Revision: https://reviews.llvm.org/D23340
llvm-svn: 278733
Hemant Kulkarni [Mon, 15 Aug 2016 20:36:16 +0000 (20:36 +0000)]
Fix a test that failed due to:
https://llvm.org/svn/llvm-project/llvm/trunk@278725
91177308-0d34-0410-b5e6-
96231b3b80d8
llvm-svn: 278732
David L Kreitzer [Mon, 15 Aug 2016 20:21:41 +0000 (20:21 +0000)]
Enhance SCEV to compute the trip count for some loops with unknown stride.
Patch by Pankaj Chawla
Differential Revision: https://reviews.llvm.org/D22377
llvm-svn: 278731
Saleem Abdulrasool [Mon, 15 Aug 2016 20:16:13 +0000 (20:16 +0000)]
StaticAnalyzer: Report found fields order in PaddingChecker
Report the found fields order in PaddingChecker.
Patch by Alexander Shaposhnikov!
llvm-svn: 278730
Chris Bieneman [Mon, 15 Aug 2016 20:15:22 +0000 (20:15 +0000)]
[CMake] Apple stage1 doesn't need to set libcxx options
LibCXX settings are configured in stage2 so we don't need them here.
llvm-svn: 278729
Chris Bieneman [Mon, 15 Aug 2016 20:12:43 +0000 (20:12 +0000)]
[CMake] Renaming test variable to be consistent
Based on post-commit review by compnerd.
llvm-svn: 278728
Sanjay Patel [Mon, 15 Aug 2016 20:02:40 +0000 (20:02 +0000)]
[InstCombine] add test for missing vector icmp fold
llvm-svn: 278727
Sanjay Patel [Mon, 15 Aug 2016 19:58:21 +0000 (19:58 +0000)]
[InstCombine] add tests for vector icmp folds
llvm-svn: 278726
Hemant Kulkarni [Mon, 15 Aug 2016 19:49:24 +0000 (19:49 +0000)]
llvm-objdump: Implement source[line numbers] interleaving
Differential Revsion: https://reviews.llvm.org/D22932
llvm-svn: 278725
Kostya Serebryany [Mon, 15 Aug 2016 19:44:04 +0000 (19:44 +0000)]
[libFuzzer] print a verbose message after executing inputs in non-fuzzing mode
llvm-svn: 278724
Eric Fiselier [Mon, 15 Aug 2016 19:37:20 +0000 (19:37 +0000)]
Use -O1 when testing with ASAN and MSAN to prevent Clang OOM errors.
Currently certain tests get killed when compiled with ASAN at -O0 because
they eat all of the systems memory. This doesn't happen at -O1, so enable that
to work around the issue.
llvm-svn: 278722
Kostya Serebryany [Mon, 15 Aug 2016 19:36:13 +0000 (19:36 +0000)]
[libFuzzer] fix the bot
llvm-svn: 278721
Filipe Cabecinhas [Mon, 15 Aug 2016 19:30:21 +0000 (19:30 +0000)]
Split DescribeAddressIfShadow between a function that gets all the information, and one that prints it.
Summary:
Replacement for part of D23518
This is the first patch to start reifying information about errors. It deals only with reifying shadow address-related information.
It will allow us to generate structures with all the relevant information for a given error so a debugger can get to them or they can be included in a core dump.
Reviewers: kcc, samsonov
Subscribers: kubabrecka, llvm-commits
Differential Revision: https://reviews.llvm.org/D23519
llvm-svn: 278718
Sanjay Patel [Mon, 15 Aug 2016 19:16:33 +0000 (19:16 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278717
Eric Fiselier [Mon, 15 Aug 2016 18:58:57 +0000 (18:58 +0000)]
Fix PR28506. Re-enable missing math.h C++11 decls on SunOS. Patch from Michal Gorny.
llvm-svn: 278716
Daniel Sanders [Mon, 15 Aug 2016 18:56:54 +0000 (18:56 +0000)]
[msan] Correct @LINE expression in obstack.cc
Summary:
[[@LINE-30]] only worked because the resulting 3 matches the first character of
30. With the additional blank lines the resulting 5 no longer matches 30.
Reviewers: eugenis
Subscribers: eugenis, llvm-commits
Differential Revision: https://reviews.llvm.org/D23515
llvm-svn: 278715
Sanjay Patel [Mon, 15 Aug 2016 18:56:10 +0000 (18:56 +0000)]
update test to use FileCheck and autogenerated checks
llvm-svn: 278714
Reid Kleckner [Mon, 15 Aug 2016 18:51:42 +0000 (18:51 +0000)]
Fix WAsm test after LSR change in r278658
Now the increment is done in a different location
llvm-svn: 278713
Daniel Sanders [Mon, 15 Aug 2016 18:50:36 +0000 (18:50 +0000)]
[msan] Fix line number sensitivity in chained_origin.cc and chained_origin_memcpy.cc
Reviewers: eugenis
Subscribers: eugenis, llvm-commits
Differential Revision: https://reviews.llvm.org/D23512
llvm-svn: 278712
Matthias Braun [Mon, 15 Aug 2016 18:50:13 +0000 (18:50 +0000)]
Revert "[Thumb] Validate branch target for CBZ/CBNZ instructions."
This currently breaks the greendragon clang-stage1-configure-RA/ and
brotli. It is probably just uncovering a pre-existing problem. Reverting
temporarily to get the buildbots green again. A reduced testcase will
follow shortly.
This reverts commit r278659.
llvm-svn: 278711
Paul Robinson [Mon, 15 Aug 2016 18:45:52 +0000 (18:45 +0000)]
Replace an obsolete company name.
llvm-svn: 278710
Sanjay Patel [Mon, 15 Aug 2016 18:45:10 +0000 (18:45 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278709
Sanjay Patel [Mon, 15 Aug 2016 18:39:54 +0000 (18:39 +0000)]
[InstCombine] add test for missing vector icmp fold
llvm-svn: 278708
Sanjay Patel [Mon, 15 Aug 2016 18:35:44 +0000 (18:35 +0000)]
minimize test
llvm-svn: 278707
Evgeniy Stepanov [Mon, 15 Aug 2016 18:35:40 +0000 (18:35 +0000)]
[ubsan] Initialize Android logging.
This adds standalone ubsan output to "adb logcat", the same as ASan does.
llvm-svn: 278706
Sanjay Patel [Mon, 15 Aug 2016 18:32:50 +0000 (18:32 +0000)]
remove unnecessary IR comments about uses
llvm-svn: 278705
Sanjay Patel [Mon, 15 Aug 2016 18:26:56 +0000 (18:26 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278704
Wolfgang Pieb [Mon, 15 Aug 2016 18:18:26 +0000 (18:18 +0000)]
Local variables whose address is taken and passed on to a call are described
in debug info using their stack slots instead of as an indirection of param reg + 0
offset. This is done by detecting FrameIndexSDNodes in SelectionDAG and generating
FrameIndexDbgValues for them. This ultimately generates DBG_VALUEs with stack
location operands.
Differential Revision: http://reviews.llvm.org/D23283
llvm-svn: 278703
Sanjay Patel [Mon, 15 Aug 2016 17:55:39 +0000 (17:55 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278689
Kostya Serebryany [Mon, 15 Aug 2016 17:48:28 +0000 (17:48 +0000)]
[libFuzzer] add InsertRepeatedBytes and EraseBytes.
New mutation: InsertRepeatedBytes.
Updated mutation: EraseByte => EraseBytes.
This helps https://github.com/google/sanitizers/issues/710
where libFuzzer was not able to find a known bug.
Now it finds it in minutes.
Hopefully, the change is general enough to help other targets.
llvm-svn: 278687
Eugene Zelenko [Mon, 15 Aug 2016 17:44:29 +0000 (17:44 +0000)]
[Documentation] Improve checks groups descriptions in clang-tidy/index.rst
Use table to avoid tautology. List all existing checks groups. Use alphabetical order.
Differential revision: https://reviews.llvm.org/D23471
llvm-svn: 278686
Sanjay Patel [Mon, 15 Aug 2016 17:19:07 +0000 (17:19 +0000)]
[InstCombine] auto-generate exact checks
Note that several of these tests belong in InstSimplify rather than
InstCombine because they return existing operands or constants.
llvm-svn: 278684
Sanjay Patel [Mon, 15 Aug 2016 17:10:35 +0000 (17:10 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278683
Yaxun Liu [Mon, 15 Aug 2016 16:54:25 +0000 (16:54 +0000)]
AMDGPU: Update AMDGPURuntimeMetadata.h for enums of address space qualifiers
llvm-svn: 278682
Tobias Grosser [Mon, 15 Aug 2016 16:43:36 +0000 (16:43 +0000)]
Disable invariant load hoisting temporarily
With invariant load hoisting enabled the LLVM buildbots currently show some
miscompiles, which are possibly caused by invariant load hosting itself.
Confirming and fixing this requires a more in-depth analysis. To meanwhile get
back green buildbots that allow us to observe other regressions, we disable
invariant code hoisting temporarily. The relevant bug is tracked at:
http://llvm.org/PR28985
llvm-svn: 278681
Tobias Grosser [Mon, 15 Aug 2016 16:43:33 +0000 (16:43 +0000)]
[test] Force invariant load hoisting one last time
Without invariant load hoisting an (unrelated) bug is exposed in this test
case: http://llvm.org/PR28984
llvm-svn: 278680
Matt Arsenault [Mon, 15 Aug 2016 16:18:36 +0000 (16:18 +0000)]
AMDGPU: Don't fold subregister extracts into tied operands
llvm-svn: 278676
Tobias Grosser [Mon, 15 Aug 2016 15:56:24 +0000 (15:56 +0000)]
[tests] Force invariant load hoisting for test cases that need it -- III
llvm-svn: 278673
Reid Kleckner [Mon, 15 Aug 2016 15:42:31 +0000 (15:42 +0000)]
Revert "[SimplifyCFG] Rewrite SinkThenElseCodeToEnd"
This reverts commit r278660.
It causes downstream assertion failure in InstCombine on shuffle
instructions. Comes up in __mm_swizzle_epi32.
llvm-svn: 278672
Daniel Sanders [Mon, 15 Aug 2016 15:14:08 +0000 (15:14 +0000)]
[mips] XFAIL mips64el tests that fail on clang-cmake-mipsel
These tests were recently enabled and have never worked on this builder.
Three tests were sensitive to line number changes:
test/msan/Linux/obstack.cc
test/msan/chained_origin.cc
test/msan/chained_origin_memcpy.cc
and this sensitivity will be addressed in a follow-up patch. Of these,
obstack.cc's sensitivity to line numbers is unexplained since it already uses
[[@LINE]].
llvm-svn: 278671
Pavel Labath [Mon, 15 Aug 2016 14:32:32 +0000 (14:32 +0000)]
Fix expression evaluation with operator new
Summary:
referencing a user-defined operator new was triggering an assert in clang because we were
registering the function name as string "operator new", instead of using the special operator
enum, which clang has for this purpose. Method operators already had code to handle this, and now
I extend this to cover free standing operator functions as well. Test included.
Reviewers: spyffe
Subscribers: sivachandra, paulherman, lldb-commits
Differential Revision: http://reviews.llvm.org/D17856
llvm-svn: 278670
Tobias Grosser [Mon, 15 Aug 2016 13:58:16 +0000 (13:58 +0000)]
[tests] Force invariant load hoisting for test cases that need it II
llvm-svn: 278669
Tobias Grosser [Mon, 15 Aug 2016 13:58:04 +0000 (13:58 +0000)]
[test] Correct spelling in test case
and explicitly enable invariant load hoisting for this test case.
llvm-svn: 278668
Tobias Grosser [Mon, 15 Aug 2016 13:27:49 +0000 (13:27 +0000)]
[tests] Force invariant load hoisting for test cases that need it
This will make it easier to switch the default of Polly's invariant load
hoisting strategy and also makes it very clear that these test cases
indeed require invariant code hoisting to work.
llvm-svn: 278667
Roman Gareev [Mon, 15 Aug 2016 12:22:54 +0000 (12:22 +0000)]
Perform replacement of access relations and creation of new arrays according to the packing transformation
This is the third patch to apply the BLIS matmul optimization pattern on matmul
kernels (http://www.cs.utexas.edu/users/flame/pubs/TOMS-BLIS-Analytical.pdf).
BLIS implements gemm as three nested loops around a macro-kernel, plus two
packing routines. The macro-kernel is implemented in terms of two additional
loops around a micro-kernel. The micro-kernel is a loop around a rank-1
(i.e., outer product) update. In this change we perform replacement of
the access relations and create empty arrays, which are steps to implement
the packing transformation. In subsequent changes we will implement copying
to created arrays.
Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: http://reviews.llvm.org/D22187
llvm-svn: 278666
Valery Pykhtin [Mon, 15 Aug 2016 10:56:48 +0000 (10:56 +0000)]
[AMDGPU] fix failure on printing of non-existing instruction operands.
Differential revision: https://reviews.llvm.org/D23323
llvm-svn: 278665
Pavel Labath [Mon, 15 Aug 2016 09:53:08 +0000 (09:53 +0000)]
Fix a race in Broadcaster/Listener interaction
Summary:
The following problem was occuring:
- broadcaster B had two listeners: L1 and L2 (thread T1)
- (T1) B has started to broadcast an event, it has locked a shared_ptr to L1 (in
ListenerIterator())
- on another thread T2 the penultimate reference to L1 was destroyed (the transient object in B is
now the last reference)
- (T2) the last reference to L2 was destroyed as well
- (T1) B has finished broadcasting the event to L1 and destroyed the last shared_ptr
- (T1) this triggered the destructor, which called into B->RemoveListener()
- (T1) all pointers in the m_listeners list were now stale, so RemoveListener emptied the list
- (T1) Eventually control returned to the ListenerIterator() for doing broadcasting, which was
still in the middle of iterating through the list
- (T1) Only now, it was holding onto a dangling iterator. BOOM.
I fix this issue by making sure nothing can interfere with the
iterate-and-remove-expired-pointers loop, by moving this logic into a single function, which
first locks (or clears) the whole list and then returns the list of valid and locked Listeners
for further processing. Instead of std::list I use an llvm::SmallVector which should hopefully
offset the fact that we create a copy of the list for the common case where we have only a few
listeners (no heap allocations).
A slight difference in behaviour is that now RemoveListener does not remove an element from the
list -- it only sets it's mask to 0, which means it will be removed during the next iteration of
GetListeners(). This is purely an implementation detail and it should not be externally
noticable.
I was not able to reproduce this bug reliably without inserting sleep statements into the code,
so I do not add a test for it. Instead, I add some unit tests for the functions that I do modify.
Reviewers: clayborg, jingham
Subscribers: tberghammer, lldb-commits
Differential Revision: https://reviews.llvm.org/D23406
llvm-svn: 278664
Eugene Leviant [Mon, 15 Aug 2016 09:19:51 +0000 (09:19 +0000)]
[ELF] Linkerscript: fix bug in assignOffsets (check Sym for non-null)
llvm-svn: 278663
Pavel Labath [Mon, 15 Aug 2016 09:17:13 +0000 (09:17 +0000)]
Fixup r278524 for non-apple targets
The commit started passing a nullptr port into GDBRemoteCommunication::StartDebugserverProcess.
The function was mostly handling the null value correctly, but it one case it did not check it's
value before assigning to it. Fix that.
llvm-svn: 278662
Sjoerd Meijer [Mon, 15 Aug 2016 08:22:42 +0000 (08:22 +0000)]
MachineLoop: add methods findLoopControlBlock and findLoopPreheader
This adds two new utility functions findLoopControlBlock and findLoopPreheader
to MachineLoop and MachineLoopInfo. These functions are refactored and taken
from the Hexagon target as they are target independent; thus this is intendend to
be a non-functional change.
Differential Revision: https://reviews.llvm.org/D22959
llvm-svn: 278661
James Molloy [Mon, 15 Aug 2016 08:04:56 +0000 (08:04 +0000)]
[SimplifyCFG] Rewrite SinkThenElseCodeToEnd
The new version has several advantages:
1) IMSHO it's more readable and neater
2) It handles loads and stores properly
3) It can handle any number of incoming blocks rather than just two. I'll be taking advantage of this in a followup patch.
With this change we can now finally sink load-modify-store idioms such as:
if (a)
return *b += 3;
else
return *b += 4;
=>
%z = load i32, i32* %y
%.sink = select i1 %a, i32 5, i32 7
%b = add i32 %z, %.sink
store i32 %b, i32* %y
ret i32 %b
When this works for switches it'll be even more powerful.
llvm-svn: 278660
Prakhar Bahuguna [Mon, 15 Aug 2016 07:57:44 +0000 (07:57 +0000)]
[Thumb] Validate branch target for CBZ/CBNZ instructions.
Summary:
The assembler currently does not check the branch target for CBZ/CBNZ
instructions, which only permit branching forwards with a positive offset. This
adds validation for the branch target to ensure negative PC-relative offsets are
not encoded into the instruction, whether specified as a literal or as an
assembler symbol.
Reviewers: rengolin, t.p.northover
Subscribers: llvm-commits, rengolin
Differential Revision: https://reviews.llvm.org/D23312
llvm-svn: 278659
James Molloy [Mon, 15 Aug 2016 07:53:03 +0000 (07:53 +0000)]
[LSR] Don't try and create post-inc expressions on non-rotated loops
If a loop is not rotated (for example when optimizing for size), the latch is not the backedge. If we promote an expression to post-inc form, we not only increase register pressure and add a COPY for that IV expression but for all IVs!
Motivating testcase:
void f(float *a, float *b, float *c, int n) {
while (n-- > 0)
*c++ = *a++ + *b++;
}
It's imperative that the pointer increments be located in the latch block and not the header block; if not, we cannot use post-increment loads and stores and we have to keep both the post-inc and pre-inc values around until the end of the latch which bloats register usage.
llvm-svn: 278658
Eugene Leviant [Mon, 15 Aug 2016 07:24:20 +0000 (07:24 +0000)]
[ELF] Do not add start and end symbols in case they are already defined
llvm-svn: 278657
David Majnemer [Mon, 15 Aug 2016 07:20:40 +0000 (07:20 +0000)]
[CodeGen] Ignore unnamed bitfields before handling vector fields
We processed unnamed bitfields after our logic for non-vector field
elements in records larger than 128 bits. The vector logic would
determine that the bit-field disqualifies the record from occupying a
register despite the unnamed bit-field not participating in the record
size nor its alignment.
N.B. This behavior matches GCC and ICC.
llvm-svn: 278656
David Majnemer [Mon, 15 Aug 2016 06:39:18 +0000 (06:39 +0000)]
[CodeGen] Correctly implement the AVX512 psABI rules
An __m512 vector type wrapped in a structure should be passed in a
vector register.
Our prior implementation was based on a draft version of the psABI.
This fixes PR28975.
N.B. The update to the ABI was made here:
https://github.com/hjl-tools/x86-psABI/commit/30f9c9
llvm-svn: 278655
Craig Topper [Mon, 15 Aug 2016 06:31:57 +0000 (06:31 +0000)]
[X86] PADDUSB/W instructions should be commutable.
llvm-svn: 278654
Craig Topper [Mon, 15 Aug 2016 04:47:30 +0000 (04:47 +0000)]
[X86] Mark some of the X86 SDNodes as commutative.
llvm-svn: 278653
Craig Topper [Mon, 15 Aug 2016 04:47:28 +0000 (04:47 +0000)]
[X86] X86ISD::FANDN is not commutative or associative.
llvm-svn: 278652
David Majnemer [Mon, 15 Aug 2016 03:56:06 +0000 (03:56 +0000)]
[ScopedNoAliasAA] collectMDInDomain should be a free function
collectMDInDomain doesn't use any class members, making it a free
function is not a functional change.
llvm-svn: 278651
Richard Smith [Mon, 15 Aug 2016 02:47:23 +0000 (02:47 +0000)]
cxx_status: update features implemented in clang 3.9 from "svn" to "Clang 3.9" now that svn trunk is 4.0.
llvm-svn: 278650
Richard Smith [Mon, 15 Aug 2016 02:37:43 +0000 (02:37 +0000)]
cxx_status: mark decomposition declarations as "partial": the implementation is
essentially complete, other than parts where design questions have been raised
(lambda capture, decomposition of arrays by copy).
llvm-svn: 278649
Richard Smith [Mon, 15 Aug 2016 02:34:23 +0000 (02:34 +0000)]
Disable lambda-capture of decomposition declaration bindings for now, until CWG
agrees on how they're supposed to work.
llvm-svn: 278648
Richard Smith [Mon, 15 Aug 2016 02:24:00 +0000 (02:24 +0000)]
Add a triple to this test to make buildbots happier.
llvm-svn: 278647
David Majnemer [Mon, 15 Aug 2016 02:23:50 +0000 (02:23 +0000)]
[ScopedNoAliasAA] Only collect noalias nodes if we have alias.scope nodes
No functional change is intended.
llvm-svn: 278646
David Majnemer [Mon, 15 Aug 2016 02:23:48 +0000 (02:23 +0000)]
[ScopedNoAliasAA] Replace !ScopeNodes.size() with ScopeNodes.empty()
No functional change is intended.
llvm-svn: 278645
David Majnemer [Mon, 15 Aug 2016 02:23:46 +0000 (02:23 +0000)]
Revert "[ScopedNoAliasAA] Remove an unneccesary set"
This reverts commit r278641. I'm not sure why but this has upset the
multistage builders...
llvm-svn: 278644
Eric Fiselier [Mon, 15 Aug 2016 01:51:54 +0000 (01:51 +0000)]
Check in SFINAE base class for use in optional/variant
llvm-svn: 278643
Richard Smith [Mon, 15 Aug 2016 01:33:41 +0000 (01:33 +0000)]
P0217R3: code generation support for decomposition declarations.
llvm-svn: 278642
David Majnemer [Mon, 15 Aug 2016 00:13:04 +0000 (00:13 +0000)]
[ScopedNoAliasAA] Remove an unneccesary set
We are trying to prove that one group of operands is a subset of
another. We did this by populating two Sets and determining that every
element within one was inside the other.
However, this is unnecessary. We can simply construct a single set and
test if each operand is within it.
llvm-svn: 278641
Richard Smith [Sun, 14 Aug 2016 23:15:52 +0000 (23:15 +0000)]
Explicitly generate a reference variable to hold the initializer for a
tuple-like decomposition declaration. This significantly simplifies the
semantics of BindingDecls for AST consumers (they can now always be evalated
at the point of use).
llvm-svn: 278640
Sanjay Patel [Sun, 14 Aug 2016 22:56:46 +0000 (22:56 +0000)]
[InstCombine] add test for missing vector icmp fold
llvm-svn: 278639
Eric Fiselier [Sun, 14 Aug 2016 22:51:54 +0000 (22:51 +0000)]
Add private option to change build dialect from C++11
Although libc++ only requires C++11 to build, there are other
reasons to turn on a newer dialect in the build. For example
IDE's may not highlight any C++14/C++17 in the headers when
configured for C++11. This patch add's a private option for
changing this.
llvm-svn: 278638
Sanjay Patel [Sun, 14 Aug 2016 22:44:10 +0000 (22:44 +0000)]
[InstCombine] add tests for vector icmp folds
llvm-svn: 278637
Sanjay Patel [Sun, 14 Aug 2016 22:30:07 +0000 (22:30 +0000)]
[InstCombine] add test for potentially missing vector icmp fold
llvm-svn: 278636
Sanjay Patel [Sun, 14 Aug 2016 22:29:27 +0000 (22:29 +0000)]
[InstCombine] add test for missing vector icmp fold
llvm-svn: 278635
Sanjay Patel [Sun, 14 Aug 2016 22:28:50 +0000 (22:28 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278634
Sanjay Patel [Sun, 14 Aug 2016 21:48:21 +0000 (21:48 +0000)]
[InstCombine] remove unnecessary function attributes from tests
llvm-svn: 278633
Sanjay Patel [Sun, 14 Aug 2016 21:36:22 +0000 (21:36 +0000)]
[InstCombine] add tests for missing vector icmp folds
llvm-svn: 278632
Sanjay Patel [Sun, 14 Aug 2016 21:05:08 +0000 (21:05 +0000)]
[InstCombine] add test for missing vector icmp fold
llvm-svn: 278631
Sanjay Patel [Sun, 14 Aug 2016 20:39:42 +0000 (20:39 +0000)]
[InstCombine] add test for missing vector icmp fold
llvm-svn: 278630
Craig Topper [Sun, 14 Aug 2016 17:57:22 +0000 (17:57 +0000)]
[AVX-512] Mark VPMADDWD as commutable to match SSE/AVX version.
llvm-svn: 278629
Craig Topper [Sun, 14 Aug 2016 17:57:19 +0000 (17:57 +0000)]
[AVX-512] Add masked commutable floating point max/min instructions to folding tables.
llvm-svn: 278628
Craig Topper [Sun, 14 Aug 2016 17:57:16 +0000 (17:57 +0000)]
[AVX-512] Add masked logical operations to memory folding tables.
llvm-svn: 278627
Igor Breger [Sun, 14 Aug 2016 13:58:57 +0000 (13:58 +0000)]
[AVX512] Fix VFPCLASSSD/VFPCLASSSS intrinsic lowering. The i1 result should be zero extended according to SPEC.
Differential Revision: http://reviews.llvm.org/D23489
llvm-svn: 278626
Ed Maste [Sun, 14 Aug 2016 11:30:11 +0000 (11:30 +0000)]
elf-core: set powerpc vector byte order correctly
It was being set to the fp reg set's byte order due to an apparent
copy-and-pasteo.
llvm-svn: 278625
Igor Breger [Sun, 14 Aug 2016 09:34:39 +0000 (09:34 +0000)]
autogenerate checks
llvm-svn: 278624
Igor Breger [Sun, 14 Aug 2016 05:25:07 +0000 (05:25 +0000)]
[AVX512] Fix insertelement i1 lowering.
1. Use shuffle to insert element i1 into vector. The previous implementation was incorrect ( dest_bit OR src_bit , it doesn't clear the bit if src_bit=0 )
2. Improve shuffle i1 vector, use CVT2MASK if supported instead TRUNCATE.
Differential Revision: http://reviews.llvm.org/D23347
llvm-svn: 278623
Saleem Abdulrasool [Sun, 14 Aug 2016 05:07:20 +0000 (05:07 +0000)]
Revert "gold: add a cast to appease std::max NFC"
This was fixed differently by Teresa and this should no longer be needed.
llvm-svn: 278622
Diana Picus [Sun, 14 Aug 2016 02:10:18 +0000 (02:10 +0000)]
Revert "CodeGen: If Convert blocks that would form a diamond when tail-merged."
This reverts commit r278287.
This commit broke the clang-cmake-thumbv7-a15-full-sh bot.
See https://llvm.org/bugs/show_bug.cgi?id=28949
llvm-svn: 278621
Diana Picus [Sun, 14 Aug 2016 02:10:12 +0000 (02:10 +0000)]
Revert "Codegen: Don't tail-duplicate blocks with un-analyzable fallthrough."
This reverts commit r278288.
r278287 broke the clang-cmake-thumbv7-a15-full-sh bot.
Revert this so we can get to r278287.
llvm-svn: 278620
Sanjoy Das [Sun, 14 Aug 2016 01:04:50 +0000 (01:04 +0000)]
[IRCE] Change variable grouping; NFC
llvm-svn: 278619
Sanjoy Das [Sun, 14 Aug 2016 01:04:46 +0000 (01:04 +0000)]
[IRCE] Create llvm::Loop instances for cloned out loops
llvm-svn: 278618
Sanjoy Das [Sun, 14 Aug 2016 01:04:36 +0000 (01:04 +0000)]
[IRCE] Don't iterate on loops that were cloned out
IRCE has the ability to further version pre-loops and post-loops that it
created, but this isn't useful at all. This change teaches IRCE to
leave behind some metadata in the loops it creates (by cloning the main
loop) so that these new loops are not re-processed by IRCE.
Today this bug is hidden by another bug -- IRCE does not update LoopInfo
properly so the loop pass manager does not re-invoke IRCE on the loops
it split out. However, once the latter is fixed the bug addressed in
this change causes IRCE to infinite-loop in some cases (e.g. it splits
out a pre-loop, a pre-pre-loop from that, a pre-pre-pre-loop from that
and so on).
llvm-svn: 278617
Sanjoy Das [Sun, 14 Aug 2016 01:04:31 +0000 (01:04 +0000)]
[IRCE] Add better DEBUG diagnostic; NFC
NFC meaning IRCE should not _do_ anything different, but
-debug-only=irce will be a little friendlier.
llvm-svn: 278616
Mehdi Amini [Sun, 14 Aug 2016 00:01:27 +0000 (00:01 +0000)]
Fix bitcode auto-upgrade when using bitcode lazy loading
The auto-upgrade path could be called before the VST (global
names) was fully parsed, and thus intrinsic names were not
available and the autoupgrade logic could not operate.
Fix link failures with ThinLTO.
This is a recommit of r278610 with a different fix.
llvm-svn: 278615
Ron Lieberman [Sat, 13 Aug 2016 23:41:11 +0000 (23:41 +0000)]
Fix unsupported relocation type R_HEX_6_X' for symbol .rodata
LowerTargetConstantPool is not properly setting the TargetFlag to indicate
desired relocation. Coding error, the offset parameter was omitted, so the
TargetFlag was used as the offset, and the TargetFlag defaulted to zero.
This only affects -fpic compilation, and only those items created in a
Constant Pool, for example a vector of constants. Halide ran into this issue.
llvm-svn: 278614
Mehdi Amini [Sat, 13 Aug 2016 23:39:14 +0000 (23:39 +0000)]
Revert "Fix bitcode auto-upgrade when using bitcode lazy loading"
This reverts commit r278610. Tests are broken
llvm-svn: 278613