summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [ELF] - Eliminate dead "if". NFC.George Rimar2018-07-051-2/+0
| | | | | | | | | | | | We call switchTo() from assignAddresses() for switching to Aether, and from assignOffsets(). First calls assignOffsets() one by one for each output section. (https://github.com/llvm-mirror/lld/blob/master/ELF/LinkerScript.cpp#L1045) That I believe means the condition removed in this patch is dead. llvm-svn: 336356
* [X86] Fix some vector cmp builtins - TRUE/FALSE predicatesGabor Buella2018-07-054-153/+120
| | | | | | | | | | | | | | | | | This patch removes on optimization used with the TRUE/FALSE predicates, as was suggested in https://reviews.llvm.org/D45616 for r335339. The optimization was buggy, since r335339 used it also for *_mask builtins, without actually applying the mask -- the mask argument was just ignored. Reviewers: craig.topper, uriel.k, RKSimon, andrew.w.kaylor, spatel, scanon, efriedma Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D48715 llvm-svn: 336355
* [ELF] - Convert excessive dyn_cast -> cast. NFC.George Rimar2018-07-051-3/+2
| | | | | | | | | Currently, there are only OutputSection and SymbolAssignment commands possible at the first level under SECTIONS tag. Hence, dyn_cast was excessive. llvm-svn: 336354
* [ELF] - Test we are able to assign version to symbols that are not "_Z*"George Rimar2018-07-051-0/+22
| | | | | | | | | | This is to test the following line of the code: https://github.com/llvm-mirror/lld/blob/master/ELF/SymbolTable.cpp#L681 If symbol does not start from _Z prefix and we have extern "C++", we do not call demangler and use its name as is. llvm-svn: 336353
* [llvm-exegesis] Add uop computation for more X87 instruction classes.Clement Courbet2018-07-054-70/+85
| | | | | | | | | | | | | | Summary: This allows measuring comparisons (UCOM_FpIr32,UCOM_Fpr32,...), conditional moves (CMOVBE_Fp32,...) Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48713 llvm-svn: 336352
* Fix comment typo. NFCI.Simon Pilgrim2018-07-051-1/+1
| | | | llvm-svn: 336351
* [CodeGen] Fix potential null pointer dereference. NFC.Michael Kruse2018-07-051-3/+5
| | | | | | | | | | ScalarEvolution::getSCEV dereferences its argument, s.t. passing nullptr leads to undefined behaviour. Check for nullptr before calling it instead of checking its argument afterwards. llvm-svn: 336350
* [ELF] - Check we do not assign version to undefined symbol when using extern ↵George Rimar2018-07-051-0/+19
| | | | | | | | | C++. This tests the following 'continue' line in getDemangledSyms(): https://github.com/llvm-mirror/lld/blob/master/ELF/SymbolTable.cpp#L677 llvm-svn: 336349
* [AArch64, PowerPC, x86] add tests for signbit bit hacks; NFCSanjay Patel2018-07-053-0/+459
| | | | llvm-svn: 336348
* [mips] Add '-mcrc', '-mno-crc' options to enable/disable CRC ASEVladimir Stefanovic2018-07-053-2/+18
| | | | | | | | | '-mcrc' is shared with ARM. '-mno-crc' is Mips-only (ARM uses '-mnocrc'). Differential revision: https://reviews.llvm.org/D48169 llvm-svn: 336347
* [X86] NFC - add more test cases for vector cmp intrinsicsGabor Buella2018-07-053-222/+3152
| | | | | | | | | | | | | | | | | | | | | | | | | | Add test cases with each predicate using the following intrinsics: _mm_cmp_pd _mm_cmp_ps _mm256_cmp_pd _mm256_cmp_ps _mm_cmp_pd_mask _mm_cmp_ps_mask _mm256_cmp_pd_mask _mm256_cmp_ps_mask _mm512_cmp_pd_mask _mm512_cmp_ps_mask _mm_mask_cmp_pd_mask _mm_mask_cmp_ps_mask _mm256_mask_cmp_pd_mask _mm256_mask_cmp_ps_mask _mm512_mask_cmp_pd_mask _mm512_mask_cmp_ps_mask Some of these are marked with FIXME, as there is bug in lowering e.g. _mm512_mask_cmp_ps_mask. llvm-svn: 336346
* [ELF] - Add test to check we don't crash when tracing reserved symbol.George Rimar2018-07-051-0/+3
| | | | | | | | | This is to test the following line of code: https://github.com/llvm-mirror/lld/blob/master/ELF/SymbolTable.cpp#L601 Without that line linker would crash. llvm-svn: 336345
* [SLPVectorizer] Begin abstracting InstructionsState alternate matching away ↵Simon Pilgrim2018-07-051-42/+55
| | | | | | | | | | from opcodes. NFCI. This is an early step towards matching Instructions by attributes other than the opcode. This will be necessary for cast/call alternates which share the same opcode but have different types/intrinsicIDs etc. - which we could vectorize as long as we split them using the alternate mechanism. Differential Revision: https://reviews.llvm.org/D48945 llvm-svn: 336344
* [llvm-exegesis][NFC]clang-formatClement Courbet2018-07-051-7/+7
| | | | llvm-svn: 336343
* [ELF] - Test LLD creates empty .imports file.George Rimar2018-07-051-2/+6
| | | | | | | | | This covers the following code line with a test: https://github.com/llvm-mirror/lld/blob/master/ELF/LTO.cpp#L213 After that, coverage of LTO.cpp is 100%. llvm-svn: 336342
* Revert "[CMake] Run libFuzzer tests with check-all."Yvan Roux2018-07-051-0/+2
| | | | | | | Revert due to AArch64 bots breakage, upstream PR raised to track the issue: https://bugs.llvm.org/show_bug.cgi?id=38034 llvm-svn: 336341
* [ELF] - Add test to check we produce an error if unable to write an empty ↵George Rimar2018-07-051-0/+10
| | | | | | | | | | | | index file. Test case ensures lld generates an error if unable to write an empty index file for lazy object file that is not added to link. This covers the following line with a test: https://github.com/llvm-mirror/lld/blob/master/ELF/LTO.cpp#L206 llvm-svn: 336340
* [AMDGPU] Add VALU to V_INTERP InstructionsRyan Taylor2018-07-052-0/+20
| | | | | | | | | | | | Wait states are not properly being inserted after buffer_store for v_interp instructions. Add VALU to V_INTERP instructions so that the GCNHazardRecognizer can check and insert the appropriate wait states when needed. Differential Revision: https://reviews.llvm.org/D48772 Change-Id: Id540c9b074fc69b5c1de6b182276aa089c74aa64 llvm-svn: 336339
* [ELF] - Remove dead code. NFC.George Rimar2018-07-051-3/+0
| | | | | | | | | | | | | I think code is dead, because the only way to see Path as empty seems would be if replaceThinLTOSuffix() replaced some prefix with empty prefix (making the result Path empty). But it is impossible to pass the empty prefix, we would file in driver: https://github.com/llvm-mirror/lld/blob/master/ELF/Driver.cpp#L669 llvm-svn: 336338
* [ADT] Switch to indirect even the trivial case through an object pointerChandler Carruth2018-07-051-30/+26
| | | | | | | | | | | | | | | | | that has required alignment. This avoids issues that keep coming up with function pointers being less aligned. I'm pretty annoyed that we can't take advantage of function alignment even on platforms where they *are* aligned, but build modes and other things make taking advantage of it somewhere between hard and impossible. The best case scenario would still embed various build modes into the ABI causing really hard to debug issues if you compiled one object file differently from another. =/ This should at least bring the bots back that were having trouble with this. llvm-svn: 336337
* Partially revert r336268 in address-offsets.llKrasimir Georgiev2018-07-051-40/+40
| | | | | | | | | | | | | | Summary: There the typos are intentional, explicitly introduced to disable these cases in r280285. Reviewers: bkramer Reviewed By: bkramer Subscribers: dschuff, sbc100, jgravelle-google, aheejin, llvm-commits Differential Revision: https://reviews.llvm.org/D48962 llvm-svn: 336336
* [ELF] - Advance position in a memory region when change the Dot.George Rimar2018-07-053-0/+41
| | | | | | | | | | | | This is https://bugs.llvm.org//show_bug.cgi?id=37836 Previously LLD could assign to Dot or set the address for the section with address expression but did not advance the position in a memory region. Patch fixes the issue. llvm-svn: 336335
* [TableGen] Increase the number of supported decoder fix-ups.Sander de Smalen2018-07-054-36/+58
| | | | | | | | | | | | | | | | The vast number of added instructions for SVE causes TableGen to fail with an assertion: Assertion `Delta < 65536U && "disassembler decoding table too large!"' This patch increases the number of supported decoder fix-ups. Reviewers: dmgreen, stoklund, petpav01 Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D48937 llvm-svn: 336334
* [X86][SSE] Add extra v16i16 shl x,c -> pmullw testSimon Pilgrim2018-07-051-0/+27
| | | | | | We want to compare shifts with repeated vs non-repeated v8i16 shuffle masks (for PBLENDW ymm) llvm-svn: 336333
* [ASTImporter] Fix import of objects with anonymous typesGabor Marton2018-07-052-11/+31
| | | | | | | | | | | | | | | | Summary: Currently, anonymous types are merged into the same redecl chain even if they are structurally inequivalent. This results that global objects are not imported, if there are at least two global objects with different anonymous types. This patch provides a fix. Reviewers: a.sidorin, balazske, r.stahl Subscribers: rnkovacs, dkrupp, cfe-commits Differential Revision: https://reviews.llvm.org/D48773 llvm-svn: 336332
* Try to fix -Wimplicit-fallthrough warning. NFCI.Simon Pilgrim2018-07-051-0/+1
| | | | llvm-svn: 336331
* [NFS] Wipe trailing whitespacesKirill Bobyrev2018-07-053-810/+811
| | | | | | | | This patch is a preparation for another one containing meaningful changes. This patch simply removes trailing whitespaces in few files affected by the upcoming patch and reformats llvm-svn: 336330
* Fix -Wunused-variable warning. NFCI.Simon Pilgrim2018-07-051-1/+1
| | | | llvm-svn: 336329
* [mips] Fix atomic operations at O0, v3Aleksandar Beserminji2018-07-0512-765/+10095
| | | | | | | | | | | | | | | | | | | | | | | Similar to PR/25526, fast-regalloc introduces spills at the end of basic blocks. When this occurs in between an ll and sc, the stores can cause the atomic sequence to fail. This patch fixes the issue by introducing more pseudos to represent atomic operations and moving their lowering to after the expansion of postRA pseudos. This version addresses issues with the initial implementation and covers all atomic operations. This resolves PR/32020. Thanks to James Cowgill for reporting the issue! Patch By: Simon Dardis Differential Revision: https://reviews.llvm.org/D31287 llvm-svn: 336328
* Dropped non-supoorted "--no-as-needed" flag from OMPT tests for macOSJoachim Protze2018-07-053-4/+8
| | | | | | | | | | | | | | | | | The flag "--no-as-needed" is not recognized by the linker on macOS making the following tests fail: ompt/loadtool/tool_available/tool_available.c ompt/loadtool/tool_not_available/tool_not_available.c This patch removes this flag for macOS and adds it only for Linux and Windows. I tested it on Ubuntu 16.04 and macOS HighSierra, with Clang/LLVM 6.0.1 and OpenMP trunk. This solution was also discussed in the OpenMP-dev mailing list. Patch provided by Simone Atzeni Differential Revision: https://reviews.llvm.org/D48888 llvm-svn: 336327
* [OMPT] Add synchronization to threads_nested.c testcaseJoachim Protze2018-07-051-2/+4
| | | | | | | | | | | The testcase potentially fails when a thread is reused. The added synchronization makes sure this does not happen. Patch provided by Simon Convent Differential Revision: https://reviews.llvm.org/D48932 llvm-svn: 336326
* [NEON] Fix combining of vldx_dup intrinsics with updating of base addressesIvan A. Kosarev2018-07-052-0/+49
| | | | | | | | | | | | | Resolves: Unsupported ARM Neon intrinsics in Target-specific DAG combine function for VLDDUP https://bugs.llvm.org/show_bug.cgi?id=38031 Related diff: D48439 Differential Revision: https://reviews.llvm.org/D48920 llvm-svn: 336325
* Reverting r336322 for now, as it causes an assert failureSander de Smalen2018-07-0520-394/+1
| | | | | | | in TableGen, for which there is already a patch in Phabricator (D48937) that needs to be committed first. llvm-svn: 336324
* Partial revert of "NFC - Various typo fixes in tests"Mikael Holmen2018-07-053-15/+19
| | | | | | | | This partially reverts r336268 since it causes buildbot failures. Added FIXME at the places where the CHECKs are misspelled. llvm-svn: 336323
* [AArch64][SVE] Asm: Support for predicated FP rounding instructions.Sander de Smalen2018-07-0520-1/+394
| | | | | | | | | | | | | | | | | | This patch also adds instructions for predicated FP square-root and reciprocal exponent. The added instructions are: - FRINTI Round to integral value (current FPCR rounding mode) - FRINTX Round to integral value (current FPCR rounding mode, signalling inexact) - FRINTA Round to integral value (to nearest, with ties away from zero) - FRINTN Round to integral value (to nearest, with ties to even) - FRINTZ Round to integral value (toward zero) - FRINTM Round to integral value (toward minus Infinity) - FRINTP Round to integral value (toward plus Infinity) - FSQRT Floating-point square root - FRECPX Floating-point reciprocal exponent llvm-svn: 336322
* [clangd] Log sema completion context kind and query scopes. NFCEric Liu2018-07-051-2/+9
| | | | | | | | | | Reviewers: sammccall Subscribers: ilya-biryukov, MaskRay, jkorous, cfe-commits Differential Revision: https://reviews.llvm.org/D48724 llvm-svn: 336321
* Revert "[clangd] FileDistance: temporarily disable in CodeComplete, it's ↵Sam McCall2018-07-051-2/+1
| | | | | | | | | behaving badly" The bad behavior seems to have been fixed by r336242 after all. I thought it was persisting, but that was a different bug fixed by D48940 llvm-svn: 336320
* [ARM] ParallelDSP: only support i16 loads for nowSjoerd Meijer2018-07-052-29/+71
| | | | | | | | | We were miscompiling i8 loads, so reject them as unsupported narrow operations for now. Differential Revision: https://reviews.llvm.org/D48944 llvm-svn: 336319
* [clangd] Treat class constructor as in the same scope as the class in ranking.Eric Liu2018-07-054-7/+52
| | | | | | | | | | Reviewers: sammccall Subscribers: ilya-biryukov, MaskRay, jkorous, cfe-commits Differential Revision: https://reviews.llvm.org/D48933 llvm-svn: 336318
* [AArch64][SVE] Asm: Support for signed/unsigned MIN/MAX/ABDSander de Smalen2018-07-0516-0/+513
| | | | | | | | | | | | | | | | | | | | This patch implements the following varieties: - Unpredicated signed max, e.g. smax z0.h, z1.h, #-128 - Unpredicated signed min, e.g. smin z0.h, z1.h, #-128 - Unpredicated unsigned max, e.g. umax z0.h, z1.h, #255 - Unpredicated unsigned min, e.g. umin z0.h, z1.h, #255 - Predicated signed max, e.g. smax z0.h, p0/m, z0.h, z1.h - Predicated signed min, e.g. smin z0.h, p0/m, z0.h, z1.h - Predicated signed abd, e.g. sabd z0.h, p0/m, z0.h, z1.h - Predicated unsigned max, e.g. umax z0.h, p0/m, z0.h, z1.h - Predicated unsigned min, e.g. umin z0.h, p0/m, z0.h, z1.h - Predicated unsigned abd, e.g. uabd z0.h, p0/m, z0.h, z1.h llvm-svn: 336317
* [Power9] Optimize codgen for conversions of int to float128Lei Huang2018-07-053-10/+153
| | | | | | | | | | | | Optimize code sequences for integer conversion to fp128 when the integer is a result of: * float->int * float->long * double->int * double->long Differential Revision: https://reviews.llvm.org/D48429 llvm-svn: 336316
* [X86] Remove X86 specific scalar FMA intrinsics and upgrade to tart ↵Craig Topper2018-07-0510-184/+201
| | | | | | independent FMA and extractelement/insertelement. llvm-svn: 336315
* [Power9][NFC] add back-end tests for passing homogeneous fp128 aggregates by ↵Lei Huang2018-07-051-3/+187
| | | | | | | | | | | value Tests to verify that we are passing fp128 via VSX registers as per ABI. These are related to clang commit rL336308. Differential Revision: https://reviews.llvm.org/D48310 llvm-svn: 336314
* [Power9] Add tests for passing float128 in VSX reg for non-homogenous aggregatesLei Huang2018-07-051-0/+206
| | | | | | Add missing testcase for rL336310 llvm-svn: 336313
* [demangler] Avoid alignment warningSerge Pavlov2018-07-051-1/+1
| | | | | | | | | | | | | | The alignment specified by a constant for the field `BumpPointerAllocator::InitialBuffer` exceeded the alignment guaranteed by `malloc` and `new` on Windows. This change set the alignment value to that of `long double`, which is defined by the used platform. It fixes https://bugs.llvm.org/show_bug.cgi?id=37944. Differential Revision: https://reviews.llvm.org/D48889 llvm-svn: 336312
* [demangler] Avoid alignment warningSerge Pavlov2018-07-051-1/+1
| | | | | | | | | | | | | | The alignment specified by a constant for the field `BumpPointerAllocator::InitialBuffer` exceeded the alignment guaranteed by `malloc` and `new` on Windows. This change set the alignment value to that of `long double`, which is defined by the used platform. It fixes https://bugs.llvm.org/show_bug.cgi?id=37944. Differential Revision: https://reviews.llvm.org/D48889 llvm-svn: 336311
* [Power9] Ensure float128 in non-homogenous aggregates are passed via VSX regLei Huang2018-07-054-0/+43
| | | | | | | | | | | | | Non-homogenous aggregates are passed in consecutive GPRs, in GPRs and in memory, or in memory. This patch ensures that float128 members of non-homogenous aggregates are passed via VSX registers. This is done via custom lowering a bitcast of a build_pari(i64,i64) to float128 to a new PPCISD node, BUILD_FP128. Differential Revision: https://reviews.llvm.org/D48308 llvm-svn: 336310
* [clangd] Track origins of symbols (various indexes, Sema).Sam McCall2018-07-0513-13/+85
| | | | | | | | | | | | Summary: Surface it in the completion items C++ API, and when a flag is set. Reviewers: ioeric Subscribers: ilya-biryukov, MaskRay, jkorous, cfe-commits Differential Revision: https://reviews.llvm.org/D48938 llvm-svn: 336309
* [Power9] Update fp128 as a valid homogenous aggregate base typeLei Huang2018-07-053-4/+140
| | | | | | | | | Update clang to treat fp128 as a valid base type for homogeneous aggregate passing and returning. Differential Revision: https://reviews.llvm.org/D48044 llvm-svn: 336308
* [Power9]Legalize and emit code for quad-precision convert from single-precisionLei Huang2018-07-054-29/+172
| | | | | | | | | Legalize and emit code for quad-precision floating point operation conversion of single-precision value to quad-precision. Differential Revision: https://reviews.llvm.org/D47569 llvm-svn: 336307
OpenPOWER on IntegriCloud