summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix tuple's conditionally explicit constructors for very weird userEric Fiselier2019-07-032-1/+24
| | | | | | | | | | | | types. It seems some people like to write types that can explicitly convert to anything, but cannot be used to explicitly construct anything. This patch makes tuple tolerate such types, as is required by the standard. llvm-svn: 365074
* [AMDGPU] Kernel arg metadata: added support for "__hip_texture" type.Konstantin Pyzhov2019-07-033-0/+34
| | | | | | | | | Summary: Hip texture type is equivalent to OpenCL image. So, we need to set the Image type for kernel arguments with __hip_texture type. Differential revision: https://reviews.llvm.org/D63850 llvm-svn: 365073
* [LFTR] Remove a stray variable shadow *of the same value* [NFC]Philip Reames2019-07-031-1/+0
| | | | llvm-svn: 365072
* [LFTR] Style and comment changes to clarify the narrow vs wide bitwidth ↵Philip Reames2019-07-031-17/+18
| | | | | | evaluation behavior [NFC] llvm-svn: 365071
* [LFTR] Sink the decision not use truncate scheme for constants into ↵Philip Reames2019-07-031-46/+43
| | | | | | | | genLoopLimit [NFC] We might as well just evaluate the constants using SCEV, and having the cases grouped makes the logic slightly easier to read anyway. llvm-svn: 365070
* Fix precedence in assert from r364961Jessica Paquette2019-07-031-1/+2
| | | | | | | | Precedence was wrong in an assert added in r364961. Add braces around the assertion condition to make it right. See: https://reviews.llvm.org/D64084 llvm-svn: 365069
* [libc++] Update availability markup for Filesystem on Apple platformsLouis Dionne2019-07-032-11/+11
| | | | llvm-svn: 365068
* [LFTR] Remove falsely generalized (dead) code [NFC]Philip Reames2019-07-031-5/+2
| | | | llvm-svn: 365067
* [LFTR] Hoist extend expressions outside of loops w/o waiting for LICMPhilip Reames2019-07-037-59/+124
| | | | | | | | The motivation for this is two fold: 1) Make the output (and thus tests) a bit more readable to a human trying to understand the result of the transform 2) Reduce spurious diffs in a potential future change to restructure all of this logic to use SCEVExpander (which hoists by default) llvm-svn: 365066
* [clang-scan-deps] use `-Wno-error` when scanning for dependenciesAlex Lorenz2019-07-034-0/+25
| | | | | | | | | Warnings can be promoted to errors. But that shouldn't prevent us from getting the dependencies! Differential Revision: https://reviews.llvm.org/D64149 llvm-svn: 365065
* [macCatalyst] Print out macCatalyst in llvm-objdump for the platformAlex Lorenz2019-07-033-3/+3
| | | | | | 'macCatalyst' is more readable than 'maccatalyst'. llvm-svn: 365064
* [GlobalISel][AArch64] Use getConstantVRegValWithLookThrough for selectArithImmedJessica Paquette2019-07-033-16/+55
| | | | | | | | | | | Instead of just stopping to see if we have a G_CONSTANT, instead, look through G_TRUNCs, G_SEXTs, and G_ZEXTs. This gives an average ~1.3% code size improvement on CINT2000 at -O3. Differential Revision: https://reviews.llvm.org/D64108 llvm-svn: 365063
* [X86] Update test; NFCRobert Lougher2019-07-031-8/+8
| | | | | | This updates pr38743.ll after D62605. llvm-svn: 365062
* [X86] Avoid SFB - Skip meta instructionsRobert Lougher2019-07-033-4/+181
| | | | | | | | | | | This patch generalizes the fix in D61680 to ignore all meta instructions, not just debug info. Patch by Chris Dawson. Differential Revision: https://reviews.llvm.org/D62605 llvm-svn: 365061
* [Bitcode] Update CHECK-DAG usage in testsJoel E. Denny2019-07-033-9/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adjusts tests not to depend on deprecated FileCheck behavior that permits overlapping matches within a block of `CHECK-DAG` directives: 1. `thinlto-function-summary-originalnames.ll`: The directive with the pattern `<COMBINED` is surely intended to match `<COMBINED ` (note the trailing space), but it instead matches `<COMBINED_GLOBALVAR_INIT_REFS`, for which there is a separate directive. With the deprecated behavior, both directives match the latter text and neither match the former text. I've adjusted the former directive so it matches only the former text. 2. `thinlto-summary-local-5.0.ll`: Two directives have identical patterns when they were clearly meant to have different patterns. 3. `upgrade-pointer-address-space.ll`: There are three identical directives but only two occurrences of the matching text. With the deprecated behavior, they always match exactly the same text, so the behavior can't have been useful. I removed one of the directives and converted the other two from `CHECK-DAG` to `CHECK`. Reviewed By: probinson, aprantl Differential Revision: https://reviews.llvm.org/D64036 llvm-svn: 365060
* Add plugin.process.gdb-remote.use-libraries-svr4 optionAntonio Afonso2019-07-031-7/+36
| | | | | | | | | | | | | | | | | | | | | Summary: This option allow the toggling of the libraries-svr4 usage in ProcessGDBRemote. It's a follow up of https://reviews.llvm.org/D62503#1564296 and it's meant to test / tweak this new packet with, hopefully, minimum impact and in a faster way. Enable it with `settings set plugin.process.gdb-remote.use-libraries-svr4 true`. For now, by default it's false. I didn't put tests up for this but I did test it manually. Reviewers: labath, jankratochvil Reviewed By: labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D64112 llvm-svn: 365059
* [CodeGen] Make branch funnels pass the machine verifierFrancis Visoiu Mistrih2019-07-036-13/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We previously marked all the tests with branch funnels as `-verify-machineinstrs=0`. This is an attempt to fix it. 1) `ICALL_BRANCH_FUNNEL` has no defs. Mark it as `let OutOperandList = (outs)` 2) After that we hit an assert: ``` Assertion failed: (Op.getValueType() != MVT::Other && Op.getValueType() != MVT::Glue && "Chain and glue operands should occur at end of operand list!"), function AddOperand, file /Users/francisvm/llvm/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp, line 461. ``` The chain operand was added at the beginning of the operand list. Move that to the end. 3) After that we hit another verifier issue in the pseudo expansion where the registers used in the cmps and jmps are not added to the livein lists. Add the `EFLAGS` to all the new MBBs that we create. PR39436 Differential Review: https://reviews.llvm.org/D54155 llvm-svn: 365058
* [X86] ComputeNumSignBitsForTargetNode - add target shuffle support.Simon Pilgrim2019-07-033-33/+50
| | | | llvm-svn: 365057
* [NFC][InstCombine] onehot_merge.ll: add last few tests in the state they ↵Roman Lebedev2019-07-031-0/+39
| | | | | | regress to in D62818 llvm-svn: 365056
* [SLP] add tests for bitcasted vector pointer load; NFCSanjay Patel2019-07-031-0/+102
| | | | | | | | I'm not sure if this falls within the scope of SLP, but we could create vector loads for some of these patterns. llvm-svn: 365055
* Use getAllOnesConstants instead of -1 in DAGCombiner. NFCAmaury Sechet2019-07-031-1/+1
| | | | llvm-svn: 365054
* [SCEV] Preserve flags on add/muls in getSCEVATScopePhilip Reames2019-07-031-2/+2
| | | | | | | | We haven't changed the set of users, just specialized an operand for those users. Given that, the previous wrap flags must still be correct. Sorry for the lack of test case. Noticed this while working on something else, and haven't figured out to exercise this standalone. llvm-svn: 365053
* [scudo][standalone] Link tests against libatomicKostya Kortchinsky2019-07-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | Summary: Some clang versions (< 6.0) do not inline the atomic builtin functions leaving unresolved references to `__atomic_load_8` and so on (seems to be mostly 64-bit atomics on 32-bit platforms). I tried without success to use some cmake magic to detect when that would be the case, and decided to fall back to unconditionally linking libatomic. Reviewers: morehouse, eugenis, vitalybuka, hctim, tejohnson Reviewed By: tejohnson Subscribers: mgorny, delcypher, jfb, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D64134 llvm-svn: 365052
* [DAGCombine] More diamong carry pattern optimization.Amaury Sechet2019-07-033-44/+117
| | | | | | | | | | | | | | | Summary: This diff improve the capability of DAGCOmbine to generate linear carries propagation in presence of a diamond pattern. It is now able to match a large variety of different patterns rather than some hardcoded one. Arguably, the codegen in test cases is not better, but this is to be expected. The goal of this transformation is more about canonicalisation than actual optimisation. Reviewers: hfinkel, RKSimon, craig.topper Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D57302 llvm-svn: 365051
* [X86][AVX] combineX86ShufflesRecursively - peek through extract_subvectorSimon Pilgrim2019-07-035-88/+81
| | | | | | If we have more then 2 shuffle ops to combine, try to use combineX86ShuffleChainWithExtract to see if some are from the same super vector. llvm-svn: 365050
* [ELF][RISCV] Error on R_RISCV_PCREL_LO12_[IS] that point to absolute symbolsFangrui Song2019-07-032-0/+12
| | | | | | | | | | | | | | The referenced symbol is expected to point to an R_RISCV_*_HI20 relocation. An absolute symbol has no associated section, therefore there cannot be a matching R_RISCV_*_HI20. This fixes the crash reported by PR42038. For reference, ld.bfd errors: (.init+0x4): dangerous relocation: %pcrel_lo missing matching %pcrel_hi Differential Revision: https://reviews.llvm.org/D63273 llvm-svn: 365049
* Revert D63432 "[ELF] Allow placing SHF_MERGE sections with different ↵Fangrui Song2019-07-034-86/+49
| | | | | | | | | | | | | | | | alignments into the same MergeSyntheticSection" This reverts r365015. David Zarzycki reported this change broke stage2 and stage3 tests. The root cause is still not very clear, but I guess some SHF_MERGE sections with the same name have different alignments. They were not merged before but were merged after r365015. Something that assumes address uniqueness of such mergeable data caused the bug. llvm-svn: 365048
* [ThinLTO] Fix gcc warnings from commitTeresa Johnson2019-07-031-1/+1
| | | | | | | | Remove an unnecessary const from an Optional return type introduced in r364960 that gcc 7.4.0 warns about. It is unnecessary and possibly incorrect. llvm-svn: 365047
* [ARM] Fix for NDEBUG buildsSam Parker2019-07-031-4/+3
| | | | | | | | Fix unused variable warning as well as a nonsense assert. Differential Revision: https://reviews.llvm.org/D63816 llvm-svn: 365046
* [scudo][standalone] Potential fix for missing sized deleteKostya Kortchinsky2019-07-032-1/+4
| | | | | | | | | | | | | | | | | | | | | Summary: In some setups, using `-fsized-deallocation` would end up not finding a sized delete operator at link time. For now, avoid using the flag and declare the sized delete operator in the cpp test only. This is a tentative fix as I do not have the failing setup. Reviewers: rnk, morehouse, hctim, eugenis, vitalybuka Reviewed By: rnk, hctim Subscribers: mgorny, delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D64086 llvm-svn: 365045
* [X86][AVX] Combine vpermi(bitcast(x)) -> bitcast(vpermi(x))Simon Pilgrim2019-07-032-2/+18
| | | | | | | | | | iff the number of elements doesn't change. This gets around an issue with combineX86ShuffleChain not being able to hint which domain is preferred for shuffles that can be done with either. Fixes regression introduced in rL365041 llvm-svn: 365044
* [SelectionDAG] Propagate alias metadata to target intrinsic nodesJames Molloy2019-07-034-8/+16
| | | | | | | | When a target intrinsic has been determined to touch memory, we construct a MachineMemOperand during SDAG construction. In this case, we should propagate AAMDNodes metadata to the MachineMemOperand where available. Differential revision: https://reviews.llvm.org/D64131 llvm-svn: 365043
* [docs][llvm-objcopy] Write documentation for llvm-objcopyJames Henderson2019-07-032-16/+482
| | | | | | | | | | | | This patch addresses https://bugs.llvm.org/show_bug.cgi?id=42183 by replacing the stub markdown doc for llvm-objcopy with a full one describing the current options available in llvm-objcopy. Reviewed by: jakehehrlich, MaskRay Differential Revision: https://reviews.llvm.org/D63820 llvm-svn: 365042
* [X86][AVX] combineX86ShuffleChainWithExtract - add number of non-zero ↵Simon Pilgrim2019-07-032-2/+5
| | | | | | | | | | extract_subvectors to the combine depth This better accounts for the cost/benefit of removing extract_subvectors from the shuffle and will be more useful in future patches. The vpermq predicate regression will be fixed shortly. llvm-svn: 365041
* [ThinLTO] Optimize writeonly globals outEugene Leviant2019-07-0327-191/+556
| | | | | | Differential revision: https://reviews.llvm.org/D63444 llvm-svn: 365040
* [llvm-ar][test] Add to MRI test coverageOwen Reynolds2019-07-035-0/+157
| | | | | | | | This reapplies 363232 that was reverted due to a buildbot test failure, this build bot has now been fixed. Differential Revision: https://reviews.llvm.org/D63197 llvm-svn: 365039
* [CMake] Avoid libcxxabi dependency when building LLDB from the monorepo on macOSStefan Granitz2019-07-031-0/+3
| | | | | | | | libc++abi became mandatory to link the libc++ binaries. LLDB only needs the build artifacts and not the linked output (we don't ship `libc++.dylib` and/or `libc++.a`). Disable the respective link steps to avoid the dependency to libc++abi. <rdar://problem/51980716> llvm-svn: 365038
* Revert "[analyzer][CFG] Return the correct terminator condition"Kristof Umann2019-07-032-16/+62
| | | | | | | | This reverts commit 7a57118a6fcfa3770f984453543bbdfd0b233e84. Causes a bunch of crashes, I need to time to evaluate this. llvm-svn: 365037
* [analyzer][CFG] Return the correct terminator conditionKristof Umann2019-07-032-62/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the following terminator statement: if (A && B && C && D) The built CFG is the following: [B5 (ENTRY)] Succs (1): B4 [B1] 1: 10 2: j 3: [B1.2] (ImplicitCastExpr, LValueToRValue, int) 4: [B1.1] / [B1.3] 5: int x = 10 / j; Preds (1): B2 Succs (1): B0 [B2] 1: C 2: [B2.1] (ImplicitCastExpr, LValueToRValue, _Bool) T: if [B4.4] && [B3.2] && [B2.2] Preds (1): B3 Succs (2): B1 B0 [B3] 1: B 2: [B3.1] (ImplicitCastExpr, LValueToRValue, _Bool) T: [B4.4] && [B3.2] && ... Preds (1): B4 Succs (2): B2 B0 [B4] 1: 0 2: int j = 0; 3: A 4: [B4.3] (ImplicitCastExpr, LValueToRValue, _Bool) T: [B4.4] && ... Preds (1): B5 Succs (2): B3 B0 [B0 (EXIT)] Preds (4): B1 B2 B3 B4 However, even though the path of execution in B2 only depends on C's value, CFGBlock::getCondition() would return the entire condition (A && B && C). For B3, it would return A && B. I changed this the actual condition. Differential Revision: https://reviews.llvm.org/D63538 llvm-svn: 365036
* [ELF][RISCV] Allow R_RISCV_ADD in relocateNonAlloc()Fangrui Song2019-07-032-1/+7
| | | | | | | | | | | | gcc may generate .debug_info/.debug_aranges/.debug_line/etc that are relocated by R_RISCV_ADD*/R_RISCV_SUB* pairs. Allow R_RISCV_ADD in non-SHF_ALLOC section to fix link errors like: ld.lld: error: print.c:(.debug_frame+0x60): has non-ABS relocation R_RISCV_ADD64 against symbol '.L0 ' Differential Revision: https://reviews.llvm.org/D63259 llvm-svn: 365035
* [mips] Mark general scheduling model as completeSimon Atanasyan2019-07-031-2/+2
| | | | llvm-svn: 365034
* [mips] Add missing atomic instructions to general scheduling definitionsSimon Atanasyan2019-07-031-0/+16
| | | | llvm-svn: 365033
* [mips] Add missing microMIPS instructions to general scheduling definitionsSimon Atanasyan2019-07-031-12/+25
| | | | llvm-svn: 365032
* Fix -Wcast-qual const warning. NFCI.Simon Pilgrim2019-07-031-1/+1
| | | | llvm-svn: 365031
* Make a buildbot using a buggy gcc happyKristof Umann2019-07-031-3/+5
| | | | | | | | | When specializing a template in a namespace, it has to be in a namespace block, else gcc will get confused. Hopefully this fixes the issue. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 llvm-svn: 365030
* Specialize an anchor() function in the correct namespaceKristof Umann2019-07-031-2/+2
| | | | llvm-svn: 365029
* [analyzer][Dominator] Add post dominators to CFG + a new debug checkerKristof Umann2019-07-036-63/+224
| | | | | | | | | | | | | | | | Transform clang::DominatorTree to be able to also calculate post dominators. * Tidy up the documentation * Make it clang::DominatorTree template class (similarly to how llvm::DominatorTreeBase works), rename it to clang::CFGDominatorTreeImpl * Clang's dominator tree is now called clang::CFGDomTree * Clang's brand new post dominator tree is called clang::CFGPostDomTree * Add a lot of asserts to the dump() function * Create a new checker to test the functionality Differential Revision: https://reviews.llvm.org/D62551 llvm-svn: 365028
* [X86][SSE] lowerUINT_TO_FP_v2i32 - explicitly cast half word to doubleSimon Pilgrim2019-07-031-1/+1
| | | | | | Fixes MSVC analyzer extension->double warning. llvm-svn: 365027
* [Dominators] PR42041: Skip nullpointer successorsKristof Umann2019-07-033-65/+198
| | | | | | | | | | | | | | | | | https://bugs.llvm.org/show_bug.cgi?id=42041 In Clang's CFG, we use nullpointers to represent unreachable nodes, for example, in the included testfile, block B0 is unreachable from block B1, resulting in a nullpointer dereference somewhere in llvm::DominatorTreeBase<clang::CFGBlock, false>::recalculate. This patch fixes this issue by specializing llvm::DomTreeBuilder::SemiNCAInfo::ChildrenGetter::Get for clang::CFG to not contain nullpointer successors. Differential Revision: https://reviews.llvm.org/D62507 llvm-svn: 365026
* [X86][SSE] LowerINSERT_VECTOR_ELT - ensure insertion index correctness. NFCI.Simon Pilgrim2019-07-031-1/+2
| | | | | | Assert that the insertion index is in range and use uint64_t for the index to fix MSVC/cppcheck truncation warning. llvm-svn: 365025
OpenPOWER on IntegriCloud