Craig Topper [Sun, 2 Apr 2017 19:17:22 +0000 (19:17 +0000)]
[APInt] Add a public typedef for the internal type of APInt use it instead of integerPart. Make APINT_BITS_PER_WORD and APINT_WORD_SIZE public.
This patch is one step to attempt to unify the main APInt interface and the tc functions used by APFloat.
This patch adds a WordType to APInt and uses that in all the tc functions. I've added temporary typedefs to APFloat to alias it to integerPart to keep the patch size down. I'll work on removing that in a future patch.
In future patches I hope to reuse the tc functions to implement some of the main APInt functionality.
I may remove APINT_ from BITS_PER_WORD and WORD_SIZE constants so that we don't have the repetitive APInt::APINT_ externally.
Differential Revision: https://reviews.llvm.org/D31523
llvm-svn: 299341
Krystyna Gajczyk [Sun, 2 Apr 2017 19:12:20 +0000 (19:12 +0000)]
Fixes for modernize-use-using check:
- removed unnessacary namespaces
- added option to print warning in macros
- no fix for typedef with array
- removed "void" word from functions with 0 parameters
Differential Revision: https://reviews.llvm.org/D29262
llvm-svn: 299340
Craig Topper [Sun, 2 Apr 2017 17:57:30 +0000 (17:57 +0000)]
[InstCombine] Make InstCombiner::OptAndOp take a BinaryOperator instead of an Instruction.
The callers have already performed the necessary cast before calling. This allows us to remove a comment that says the instruction must be a BinaryOperator and make it explicit in the argument type.
Had to add a default case to the switch because BinaryOperator::getOpcode() returns a BinaryOps enum.
llvm-svn: 299339
Simon Pilgrim [Sun, 2 Apr 2017 17:45:41 +0000 (17:45 +0000)]
[X86][MMX] Improve support for folding fptosi from XMM to MMX
llvm-svn: 299338
Craig Topper [Sun, 2 Apr 2017 17:34:30 +0000 (17:34 +0000)]
[InstCombine] Remove redundant combine from visitAnd
As far as I can tell this combine is fully handled by SimplifyDemandedInstructionBits.
I was only looking at this because it is the only user of APIntOps::isShiftedMask which is itself broken. As demonstrated by r299187. I was going to fix isShiftedMask and needed to make sure we had coverage for the new cases it would expose to this combine. But looks like we can nuke it instead.
Differential Revision: https://reviews.llvm.org/D31543
llvm-svn: 299337
Simon Pilgrim [Sun, 2 Apr 2017 16:20:34 +0000 (16:20 +0000)]
[X86][MMX] Simplify tablegen patterns by always combining MOVDQ2Q from v2i64
llvm-svn: 299336
Simon Pilgrim [Sun, 2 Apr 2017 15:52:28 +0000 (15:52 +0000)]
[X86][MMX] Added support for subvector extraction to MMX register
llvm-svn: 299335
NAKAMURA Takumi [Sun, 2 Apr 2017 15:05:18 +0000 (15:05 +0000)]
APInt.h: Prune \param(s) in \returns. [-Wdocumentation]
llvm-svn: 299334
Simon Pilgrim [Sun, 2 Apr 2017 14:21:14 +0000 (14:21 +0000)]
Regenerate test with codegen. NFCI.
llvm-svn: 299333
Simon Pilgrim [Sun, 2 Apr 2017 13:59:37 +0000 (13:59 +0000)]
Regenerate test with codegen. NFCI.
llvm-svn: 299332
Simon Pilgrim [Sun, 2 Apr 2017 13:50:44 +0000 (13:50 +0000)]
Regenerate test. NFCI.
llvm-svn: 299331
Daniel Berlin [Sun, 2 Apr 2017 13:23:44 +0000 (13:23 +0000)]
NewGVN: Handle coercion of constant stores, loads, memory insts.
Summary:
Depends on D30928.
This adds support for coercion of stores and memory instructions that do not require insertion to process.
Another few tests down.
I added the relevant tests from rle.ll
Reviewers: davide
Subscribers: llvm-commits, Prazek
Differential Revision: https://reviews.llvm.org/D30929
llvm-svn: 299330
Nikolai Bozhenov [Sun, 2 Apr 2017 13:14:30 +0000 (13:14 +0000)]
[BypassSlowDivision] Do not bypass division of hash-like values
Disable bypassing if one of the operands looks like a hash value. Slow
division often occurs in hashtable implementations and fast division is
never taken there because a hash value is extremely unlikely to have
enough upper bits set to zero.
A value is considered to be hash-like if it is produced by
1) XOR operation
2) Multiplication by a constant wider than the shorter type
3) PHI node with all incoming values being hash-like
Differential Revision: https://reviews.llvm.org/D28200
llvm-svn: 299329
Simon Pilgrim [Sun, 2 Apr 2017 13:10:20 +0000 (13:10 +0000)]
[X86][MMX] Add generic fptosi 4f32-4i32 test
llvm-svn: 299328
Zvi Rackover [Sun, 2 Apr 2017 10:42:21 +0000 (10:42 +0000)]
Add another interesting shufflevector test case for InstSimplify. NFC.
Test case shows opportunity to constant fold a shuffle with one variable
input vector operand.
llvm-svn: 299327
Craig Topper [Sun, 2 Apr 2017 06:59:43 +0000 (06:59 +0000)]
[X86] Use tcAdd/tcSubtract to implement the slow case of operator+=/operator-=.
llvm-svn: 299326
Craig Topper [Sun, 2 Apr 2017 06:59:41 +0000 (06:59 +0000)]
[APInt] Combine declaration and initialization. NFC
llvm-svn: 299325
Craig Topper [Sun, 2 Apr 2017 06:59:38 +0000 (06:59 +0000)]
[APInt] Simplify some code by using operator+=(uint64_t) instead of doing a more complex assignment into a temporary APInt just to use the APInt operator+=.
llvm-svn: 299324
Craig Topper [Sun, 2 Apr 2017 06:59:36 +0000 (06:59 +0000)]
[APInt] Fix typo in comment. NFC
llvm-svn: 299323
Daniel Berlin [Sun, 2 Apr 2017 05:09:15 +0000 (05:09 +0000)]
MemorySSA: Add support for caching clobbering access in stores
Summary:
This enables us to cache the clobbering access for stores, despite the
fact that we can't rewrite the use-def chains themselves.
Early testing shows that, after this change, for larger testcases, it will be a significant net positive (memory and time) to remove the walker caching.
Reviewers: george.burgess.iv, davide
Subscribers: Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D31567
llvm-svn: 299322
Craig Topper [Sun, 2 Apr 2017 03:02:53 +0000 (03:02 +0000)]
[X86] Add __extension__ to f16c macro intrinsics to suppress warnings about compound literals when compiled for with earlier language standards enabled.
Fixes PR32491.
llvm-svn: 299321
Craig Topper [Sat, 1 Apr 2017 21:50:10 +0000 (21:50 +0000)]
[APInt] Use conditional operator to simplify some code. NFC
llvm-svn: 299320
Craig Topper [Sat, 1 Apr 2017 21:50:08 +0000 (21:50 +0000)]
[APInt] Implement flipAllBitsSlowCase with tcComplement. NFCI
llvm-svn: 299319
Craig Topper [Sat, 1 Apr 2017 21:50:06 +0000 (21:50 +0000)]
[APInt] Fix indentation. NFC
llvm-svn: 299318
Craig Topper [Sat, 1 Apr 2017 21:50:03 +0000 (21:50 +0000)]
[APInt] Implement AndAssignSlowCase using tcAnd. Do the same for Or and Xor. NFCI
llvm-svn: 299317
Faisal Vali [Sat, 1 Apr 2017 21:30:49 +0000 (21:30 +0000)]
[NFC, Scoped Enum] Convert Sema::ExpressionEvaluationContext into a scoped Enum
- also replace direct equality checks against the ConstantEvaluated enumerator with isConstantEvaluted(), in anticipation of adding finer granularity to the various ConstantEvaluated contexts and reinstating certain restrictions on where lambda expressions can occur in C++17.
- update the clang tablegen backend that uses these Enumerators, and add the relevant scope where needed.
llvm-svn: 299316
Davide Italiano [Sat, 1 Apr 2017 21:07:07 +0000 (21:07 +0000)]
[Driver] Don't crash on invalid values of -mrelocation-model=.
This is handled in a similar way we handle invalid -mcode-model.
PR: 31840
llvm-svn: 299315
Craig Topper [Sat, 1 Apr 2017 20:30:57 +0000 (20:30 +0000)]
[APInt] Allow GreatestCommonDivisor to take rvalue inputs efficiently. Use moves instead of copies in the loop.
Summary:
GreatestComonDivisor currently makes a copy of both its inputs. Then in the loop we do one move and two copies, plus any allocation the urem call does.
This patch changes it to take its inputs by value so that we can do a move of any rvalue inputs instead of copying. Then in the loop we do 3 move assignments and no copies. This way the only possible allocations we have in the loop is from the urem call.
Reviewers: dblaikie, RKSimon, hans
Reviewed By: dblaikie
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31572
llvm-svn: 299314
Davide Italiano [Sat, 1 Apr 2017 19:47:52 +0000 (19:47 +0000)]
[WASM] Remove other comparison of unsigned expression >= 0.
This should finally fix the GCC 7 build with -Werror.
llvm-svn: 299313
Davide Italiano [Sat, 1 Apr 2017 19:40:51 +0000 (19:40 +0000)]
[WASM] Remove a set but never used variable.
llvm-svn: 299312
Davide Italiano [Sat, 1 Apr 2017 19:37:15 +0000 (19:37 +0000)]
[WASM] Remove an assertion that can never fire.
uint* is by definition always >=0.
llvm-svn: 299311
Davide Italiano [Sat, 1 Apr 2017 19:30:17 +0000 (19:30 +0000)]
[AMDGPU] Garbage collect now unused dead code. NFCI.
llvm-svn: 299310
Sanjay Patel [Sat, 1 Apr 2017 19:05:11 +0000 (19:05 +0000)]
[InstSimplify] add constant folding for fdiv/frem
Also, add a helper function so we don't have to repeat this code for each binop.
llvm-svn: 299309
Sanjay Patel [Sat, 1 Apr 2017 18:44:03 +0000 (18:44 +0000)]
[InstSimplify] add tests for missed constant folding; NFC
llvm-svn: 299308
Sanjay Patel [Sat, 1 Apr 2017 18:40:30 +0000 (18:40 +0000)]
fix formatting; NFC
llvm-svn: 299307
Benjamin Kramer [Sat, 1 Apr 2017 17:59:01 +0000 (17:59 +0000)]
[ObjC++] Use the correct EH personality in GNU mode
Previously, it would just always use the ObjC DWARF personality, even with SjLj
or SEH exceptions.
Patch by Jonathan Schleifer, test case by me.
llvm-svn: 299306
Sanjay Patel [Sat, 1 Apr 2017 15:53:12 +0000 (15:53 +0000)]
fix formatting; NFC
llvm-svn: 299305
Sanjay Patel [Sat, 1 Apr 2017 15:05:54 +0000 (15:05 +0000)]
[DAGCombiner] enable vector transforms for any/all {sign} bits set/clear
The code already allowed vector types in via "isInteger" (which might want
a more specific name), so use splat-friendly constant predicates to match
those types.
llvm-svn: 299304
Sanjay Patel [Sat, 1 Apr 2017 14:32:18 +0000 (14:32 +0000)]
[PowerPC, x86] add vector tests for any/all {sign} bits set/clear; NFC
llvm-svn: 299303
Daniel Berlin [Sat, 1 Apr 2017 10:04:28 +0000 (10:04 +0000)]
MemorySSA: Update expensive checking version of def_chain_iterator for templating changes
llvm-svn: 299301
Daniel Berlin [Sat, 1 Apr 2017 09:44:33 +0000 (09:44 +0000)]
NewGVN: Don't try to kill off the stored value of stores when
processing the congruence class of the store.
Because we use the stored value of a store as the def, it isn't dead
just because it appears as a def when it comes from a store.
Note: I have not hit any cases with the memory code as it is where
this breaks anything, just because of what memory congruences we
actually allow. In a followup that improves memory congruence,
this bug actually breaks real stuff (but the verifier catches it).
llvm-svn: 299300
Daniel Berlin [Sat, 1 Apr 2017 09:44:29 +0000 (09:44 +0000)]
NewGVN: Clean up GVNExpression memory hierarchy, restructure hash computation a bit so we don't have to redefine it for loads, stores, and calls
llvm-svn: 299299
Daniel Berlin [Sat, 1 Apr 2017 09:44:24 +0000 (09:44 +0000)]
NewGVN: Use def_chain iterator in singleReachablePhiPath instead of recursion
llvm-svn: 299298
Daniel Berlin [Sat, 1 Apr 2017 09:44:19 +0000 (09:44 +0000)]
Move def_chain iterator to MemorySSA.h so it can be reused
llvm-svn: 299297
Daniel Berlin [Sat, 1 Apr 2017 09:44:14 +0000 (09:44 +0000)]
MemorySSA.h - make clang-format happy
llvm-svn: 299296
Daniel Berlin [Sat, 1 Apr 2017 09:01:12 +0000 (09:01 +0000)]
MemorySSA: Push const correctness further.
llvm-svn: 299295
Daniel Berlin [Sat, 1 Apr 2017 08:59:45 +0000 (08:59 +0000)]
MemorySSA: Kill the WalkTargetCache now that we have getBlockDefs.
llvm-svn: 299294
Craig Topper [Sat, 1 Apr 2017 06:50:00 +0000 (06:50 +0000)]
[APInt] Implement operator! using operator==(uint64_t). NFCI
llvm-svn: 299293
Craig Topper [Sat, 1 Apr 2017 05:08:57 +0000 (05:08 +0000)]
[APInt] Remove the mul/urem/srem/udiv/sdiv functions from the APIntOps namespace. Replace the few usages with calls to the class methods. NFC
llvm-svn: 299292
Craig Topper [Sat, 1 Apr 2017 04:26:20 +0000 (04:26 +0000)]
[DAGCombiner] Fix fold (or (shuf A, V_0, MA), (shuf B, V_0, MB)) -> (shuf A, B, Mask) to explicitly ensure that only one of the inputs of each shuffle is a zero vector.
This can only happen when we have a mix of zero and undef elements and the two vectors have a different arrangement of zeros/undefs. The shuffle should eventually be constant folded to all zeros.
Fixes PR32484.
llvm-svn: 299291
Duncan P. N. Exon Smith [Sat, 1 Apr 2017 03:20:48 +0000 (03:20 +0000)]
string: Remove always_inline from basic_string::__init
This is effectively a partial revert of r278356, which started inlining
basic_string::__init. Even if we want to help the compiler along with
an inlinehint, we shouldn't hamstring it by forcing it to inline all the
time.
Libc++ uses always_inline widely as a limit-the-ABI-hack, but since
__init is already on the dylib boundary, it makes no sense here and just
harms the debugging experience at -O0.
rdar://problem/
31013102
llvm-svn: 299290
Rui Ueyama [Sat, 1 Apr 2017 01:42:20 +0000 (01:42 +0000)]
Change the error format to report corrupted .eh_frame.
llvm-svn: 299289
Quentin Colombet [Sat, 1 Apr 2017 01:26:24 +0000 (01:26 +0000)]
Revert "Feature generic option to setup start/stop-after/before"
This reverts commit r299282.
Didn't intend to commit this :(
llvm-svn: 299288
Quentin Colombet [Sat, 1 Apr 2017 01:26:21 +0000 (01:26 +0000)]
Revert "Localizer fun"
This reverts commit r299283.
Didn't intend to commit this :(
llvm-svn: 299287
Quentin Colombet [Sat, 1 Apr 2017 01:26:17 +0000 (01:26 +0000)]
Revert "Instrument SDISel C++ patterns"
This reverts commit r299284.
Didn't intend to commit this :(
llvm-svn: 299286
Quentin Colombet [Sat, 1 Apr 2017 01:26:14 +0000 (01:26 +0000)]
[RegBankSelect] Support REG_SEQUENCE for generic mapping
REG_SEQUENCE falls into the same category as COPY for operands mapping:
- They don't have MCInstrDesc with register constraints
- The input variable could use whatever register classes
- It is possible to have register class already assigned to the operands
In particular, given REG_SEQUENCE are always target specific because of
the subreg indices. Those indices must apply to the register class of
the definition of the REG_SEQUENCE and therefore, the target must set a
register class to that definition. As a result, the generic code can
always use that register class to derive a valid mapping for a
REG_SEQUENCE.
llvm-svn: 299285
Quentin Colombet [Sat, 1 Apr 2017 01:21:32 +0000 (01:21 +0000)]
Instrument SDISel C++ patterns
llvm-svn: 299284
Quentin Colombet [Sat, 1 Apr 2017 01:21:28 +0000 (01:21 +0000)]
Localizer fun
WIP
llvm-svn: 299283
Quentin Colombet [Sat, 1 Apr 2017 01:21:24 +0000 (01:21 +0000)]
Feature generic option to setup start/stop-after/before
This patch refactors the code used in llc such that all the users of the
addPassesToEmitFile API have access to a homogeneous way of handling
start/stop-after/before options right out of the box.
Previously each user would have needed to duplicate this logic and set
up its own options.
NFC
llvm-svn: 299282
Gor Nishanov [Sat, 1 Apr 2017 00:22:47 +0000 (00:22 +0000)]
[coroutines] Add cleanup for compiler injected objects/allocations in coroutine body
Summary:
* Use pushCleanup to emit freeing coroutine memory on normal and EH exits.
* Surround emitted code with CodeGenFunction::RunCleanupsScope.
Reviewers: rsmith, rnk, EricWF
Reviewed By: rnk
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D31460
llvm-svn: 299281
Rui Ueyama [Fri, 31 Mar 2017 23:40:21 +0000 (23:40 +0000)]
Change the error message format for duplicate symbols.
This patch is intended to improve readability of "duplicate symbol"
error messages.
Without this patch:
/ssd/clang/bin/ld.lld: error: /ssd/llvm-project/lld/ELF/Relocations.cpp:1054: duplicate symbol 'lld::elf::demangle(llvm::StringRef)'
/ssd/clang/bin/ld.lld: error: /ssd/llvm-project/lld/ELF/Strings.cpp:93: previous definition was here
With this patch:
/ssd/clang/bin/ld.lld: error: duplicate symbol: lld::elf::demangle(llvm::StringRef)
>>> defined at Strings.cpp:93 (/ssd/llvm-project/lld/ELF/Strings.cpp:93)
>>> Strings.cpp.o:(lld::elf::demangle(llvm::StringRef)) in archive lib/liblldELF.a
>>> defined at Relocations.cpp:1054 (/ssd/llvm-project/lld/ELF/Relocations.cpp:1054)
>>> Relocations.cpp.o:(.text+0x4C30) in archive lib/liblldELF.a
Discussion thread:
http://lists.llvm.org/pipermail/llvm-dev/2017-March/111459.html
Differential Revision: https://reviews.llvm.org/D31507
llvm-svn: 299280
Peter Collingbourne [Fri, 31 Mar 2017 23:22:19 +0000 (23:22 +0000)]
Fix a test to check assembly output instead of bitcode.
llvm-svn: 299279
Eric Christopher [Fri, 31 Mar 2017 23:12:27 +0000 (23:12 +0000)]
Reduce the number of times we query the subtarget for the same information.
llvm-svn: 299278
Eric Christopher [Fri, 31 Mar 2017 23:12:24 +0000 (23:12 +0000)]
Small cleanup to remove extraneous cast.
llvm-svn: 299277
Jim Ingham [Fri, 31 Mar 2017 22:39:55 +0000 (22:39 +0000)]
DisassembleRange can return an empty DisassemblerSP
check for it.
<rdar://problem/
31379799>
llvm-svn: 299276
Konstantin Zhuravlyov [Fri, 31 Mar 2017 22:36:39 +0000 (22:36 +0000)]
AMDGPU/llvm-readobj: Rename RuntimeMDNoteType -> CodeObjectMetadataNoteType to
match the new metadata. NFC.
llvm-svn: 299275
Teresa Johnson [Fri, 31 Mar 2017 22:35:47 +0000 (22:35 +0000)]
[ThinLTO] Handle -emit-llvm* in ThinLTO backends
Summary:
Use PreCodeGenModuleHook to invoke the correct writer when emitting LLVM
IR, returning false to skip codegen from within thinBackend.
Reviewers: pcc, mehdi_amini
Subscribers: Prazek, cfe-commits
Differential Revision: https://reviews.llvm.org/D31534
llvm-svn: 299274
Craig Topper [Fri, 31 Mar 2017 22:23:42 +0000 (22:23 +0000)]
[APInt] Fix bugs in isShiftedMask to match behavior of the similar function in MathExtras.h
This removes a parameter from the routine that was responsible for a lot of the issue. It was a bit count that had to be set to the BitWidth of the APInt and would get passed to getLowBitsSet. This guaranteed the call to getLowBitsSet would create an all ones value. This was then compared to (V | (V-1)). So the only shifted masks we detected had to have the MSB set.
The one in tree user is a transform in InstCombine that never fires due to earlier transforms covering the case better. I've submitted a patch to remove it completely, but for now I've just adapted it to the new interface for isShiftedMask.
llvm-svn: 299273
Bob Haarman [Fri, 31 Mar 2017 22:17:02 +0000 (22:17 +0000)]
COFF: tests for thinlto with mangled names
Summary: This change adds tests for r299268.
Reviewers: pcc, rnk
Reviewed By: pcc
Subscribers: mehdi_amini, llvm-commits, Prazek
Differential Revision: https://reviews.llvm.org/D31549
llvm-svn: 299272
Konstantin Zhuravlyov [Fri, 31 Mar 2017 22:14:54 +0000 (22:14 +0000)]
[AMDGPU] Fix typo in test filename. NFC.
llvm-svn: 299271
Derek Schuff [Fri, 31 Mar 2017 22:14:14 +0000 (22:14 +0000)]
Add virtual destructor to WasmYAML::Section or avoid memory leak
Tested locally with -DLLVM_USE_SANITIZER=Address
Differential Revision: https://reviews.llvm.org/D31551
Patch by Sam Clegg
llvm-svn: 299270
Brad Smith [Fri, 31 Mar 2017 22:13:17 +0000 (22:13 +0000)]
Add/update PIE defaults for OpenBSD.
llvm-svn: 299269
Bob Haarman [Fri, 31 Mar 2017 21:56:30 +0000 (21:56 +0000)]
LTO: call getRealLinkageName on IRNames before feeding to getGUID
Summary: GlobalValue has two getGUID methods: an instance method and a static method. The static method takes a string, which is expected to be what GlobalValue::getRealLinkageName() would return. In LTO.cpp, we were not doing this consistently, sometimes passing an IR name instead. This change makes it so that we call getRealLinkageName() first, making the static getGUID return value consistent with the instance method. Without this change, compiling FileCheck with ThinLTO on Windows fails with numerous undefined symbol errors. With the change, it builds successfully.
Reviewers: pcc, rnk
Reviewed By: pcc
Subscribers: tejohnson, mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D31444
llvm-svn: 299268
Craig Topper [Fri, 31 Mar 2017 21:35:30 +0000 (21:35 +0000)]
[InstCombine] When adding an Instruction and its Users to the worklist at the same time, make sure we put the Users in first. Then put in the instruction.
This way we ensure we immediately revisit the instruction and do any additional optimizations before visiting the users. Otherwise we might visit the users, then the instruction, then users again, then instruction again.
llvm-svn: 299267
Sanjay Patel [Fri, 31 Mar 2017 21:30:50 +0000 (21:30 +0000)]
[DAGCombiner] refactor and/or-of-setcc to get rid of duplicated code; NFCI
llvm-svn: 299266
Reid Kleckner [Fri, 31 Mar 2017 21:16:22 +0000 (21:16 +0000)]
Fix binary static archive that got mangled by patch
llvm-svn: 299265
Reid Kleckner [Fri, 31 Mar 2017 21:10:53 +0000 (21:10 +0000)]
[llvm-ar] Extract objects to their basename in the CWD
This is helpful when extracting objects from archives produced by MSVC's
lib.exe, which users absolute paths to describe the archive members.
llvm-svn: 299264
Craig Topper [Fri, 31 Mar 2017 21:08:37 +0000 (21:08 +0000)]
[InstCombine] Add test case demonstrating missed opportunities for removing add/sub when the LSBs of one input are known to be 0 and MSBs of the output aren't consumed.
llvm-svn: 299263
Krzysztof Parzyszek [Fri, 31 Mar 2017 21:03:59 +0000 (21:03 +0000)]
[Hexagon] Remove unused variables
Found by PVS-Studio. Fixes llvm.org/PR31676.
llvm-svn: 299262
Tim Hammerquist [Fri, 31 Mar 2017 21:03:58 +0000 (21:03 +0000)]
add more RegisterContext files to xcode project
llvm-svn: 299261
Tamas Berghammer [Fri, 31 Mar 2017 20:48:00 +0000 (20:48 +0000)]
Stop calling ValueObject::SetName from synthetic child providers
Summary:
Calling ValueObject::SetName from a sythetic child provider would change
the underying value object used for the non-synthetic child as well what
is clearly unintentional.
Reviewers: jingham, labath
Subscribers: lldb-commits
Differential Revision: https://reviews.llvm.org/D31371
llvm-svn: 299259
Krzysztof Parzyszek [Fri, 31 Mar 2017 20:36:00 +0000 (20:36 +0000)]
[Hexagon] Fix typo in HexagonEarlyIfCConv.cpp
Found by PVS-Studio. Fixes llvm.org/PR32480.
llvm-svn: 299258
Stephen Canon [Fri, 31 Mar 2017 20:35:02 +0000 (20:35 +0000)]
Fix 80-column violation in previous commit.
llvm-svn: 299257
Stephen Canon [Fri, 31 Mar 2017 20:31:33 +0000 (20:31 +0000)]
Fix APFloat mod (committing for simonbyrne)
The previous version was prone to intermediate rounding or overflow.
Differential Revision: https://reviews.llvm.org/D29346
llvm-svn: 299256
Sanjay Patel [Fri, 31 Mar 2017 20:28:06 +0000 (20:28 +0000)]
[DAGCombiner] add fold for 'All sign bits set?'
(and (setlt X, 0), (setlt Y, 0)) --> (setlt (and X, Y), 0)
We have 7 similar folds, but this one got away. The fact that the
x86 test with a branch didn't change is probably a separate bug. We
may also be missing this and the related folds in instcombine.
llvm-svn: 299252
Tamas Berghammer [Fri, 31 Mar 2017 20:23:22 +0000 (20:23 +0000)]
Add support for sythetic operator dereference
Summary:
After this change a sythetic child provider can generate a special child
named "$$dereference$$" what if present is used when "operator*" or
"operator->" used on a ValueObject. The goal of the change is to make
expressions like "up->foo" work inside the "frame variable" command.
Reviewers: labath, jingham
Subscribers: lldb-commits
Differential Revision: https://reviews.llvm.org/D31368
llvm-svn: 299251
Stanislav Mekhanoshin [Fri, 31 Mar 2017 20:16:54 +0000 (20:16 +0000)]
[AMDGPU] Remove assumption that vector and scalar types do not alias
Differential Revision: https://reviews.llvm.org/D31547
llvm-svn: 299250
Tamas Berghammer [Fri, 31 Mar 2017 20:07:20 +0000 (20:07 +0000)]
Do not dereference std::unique_ptr by default
Summary:
Displaying the object pointed by the unique_ptr can cause an infinite
recursion when we have a pointer loop so this change stops that
behavior. Additionally it makes the unique_ptr act more like a class
containing a pointer (what is the underlying truth) instead of some
"magic" class.
Reviewers: labath, jingham
Differential Revision: https://reviews.llvm.org/D31366
llvm-svn: 299249
Craig Topper [Fri, 31 Mar 2017 20:01:16 +0000 (20:01 +0000)]
[APInt] Remove shift functions from APIntOps namespace. Replace the few users with the APInt class methods. NFCI
llvm-svn: 299248
Joerg Sonnenberger [Fri, 31 Mar 2017 19:58:07 +0000 (19:58 +0000)]
Do not translate rint into nearbyint, but truncate it like nearbyint.
A common way to implement nearbyint is by fiddling with the floating
point environment and calling rint. This is used at least by the BSD
libm and musl. As such, canonicalizing the latter to the former will
create infinite loops for libm and generally pessimize performance, at
least when the generic C versions are used.
This change preserves the rint in the libcall translation and also
handles the domain truncation logic, so that rint with float argument
will be reduced to rintf etc.
llvm-svn: 299247
Matt Arsenault [Fri, 31 Mar 2017 19:53:03 +0000 (19:53 +0000)]
AMDGPU: Remove unnecessary ands when f16 is legal
Add a new node to act as a fancy bitcast from f16 operations to
i32 that implicitly zero the high 16-bits of the result.
Alternatively could try making v2f16 legal and canonicalizing
on build_vectors.
llvm-svn: 299246
Jan Vesely [Fri, 31 Mar 2017 19:26:23 +0000 (19:26 +0000)]
AMDGPU/R600: Fix amdgpu alias analysis pass.
R600 uses higher AS number to access kernel parameters
Fixes: r298846
Differential Revision: https://reviews.llvm.org/D31520
llvm-svn: 299245
Sanjay Patel [Fri, 31 Mar 2017 18:51:03 +0000 (18:51 +0000)]
[PowerPC] add tests for setcc+setcc+logic; NFC
These are the same tests added for x86 with r299238,
but PPC doesn't specify all branches as cheap, so we
see different patterns in tests with branches.
llvm-svn: 299244
Craig Topper [Fri, 31 Mar 2017 18:48:14 +0000 (18:48 +0000)]
[APInt] Rewrite getLoBits in a way that will do one less memory allocation in the multiword case. Rewrite getHiBits to use the class method version of lshr instead of the one in APIntOps. NFCI
llvm-svn: 299243
Craig Topper [Fri, 31 Mar 2017 18:30:01 +0000 (18:30 +0000)]
[APInt] Remove unused functions from the APIntOps namespace. The corresponding methods on the APInt object should be used instead. NFC
llvm-svn: 299242
Sanjay Patel [Fri, 31 Mar 2017 18:18:58 +0000 (18:18 +0000)]
[DAGCombiner] remove redundant code and add comments; NFCI
llvm-svn: 299241
Balaram Makam [Fri, 31 Mar 2017 18:16:53 +0000 (18:16 +0000)]
[AArch64] Add new subtarget feature to fold LSL into address mode.
Summary:
This feature enables folding of logical shift operations of up to 3 places into addressing mode on Kryo and Falkor that have a fastpath LSL.
Reviewers: mcrosier, rengolin, t.p.northover
Subscribers: junbuml, gberry, llvm-commits, aemerson
Differential Revision: https://reviews.llvm.org/D31113
llvm-svn: 299240
Stephane Sezer [Fri, 31 Mar 2017 18:00:48 +0000 (18:00 +0000)]
Verify memory address range validity in GDBRemoteCommunicationClient
Summary:
This aims to verify the validity of the response from the debugging
server in GDBRemoteCommunicationClient::GetMemoryRegionInfo. I was
working with ds2 (https://github.com/facebook/ds2) and encountered a bug
that caused the server's response to have a 'size' value of 0, which
caused lldb to behave incorrectly.
Reviewers: k8stone, labath, clayborg
Reviewed By: labath, clayborg
Subscribers: clayborg, sas, lldb-commits
Differential Revision: https://reviews.llvm.org/D31485
Change by Alex Langford <apl@fb.com>
llvm-svn: 299239
Sanjay Patel [Fri, 31 Mar 2017 17:55:07 +0000 (17:55 +0000)]
[x86] add/consolidate tests for setcc+setcc+and/or; NFC
llvm-svn: 299238
Adam Nemet [Fri, 31 Mar 2017 17:51:12 +0000 (17:51 +0000)]
Improve DebugInfo/strip-loop-metadata.ll test
This wasn't covering for the case where you have multiple latches and hence
the use of the same loop-id which needs to be mapped to the same loop-id.
llvm-svn: 299237