summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* gn build: Merge r354365Nico Weber2019-02-201-0/+1
| | | | llvm-svn: 354411
* [lld-link] preserve @llvm.used symbols in LTOBob Haarman2019-02-203-0/+18
| | | | | | | | | | | | | | | | | | | | | | | Summary: We translate @llvm.used to COFF by generating /include directives in the .drectve section. However, in LTO links, this happens after directives have already been processed, so the new directives do not take effect. This change marks @llvm.used symbols as GCRoots so that they are preserved as intended. Fixes PR40733. Reviewers: rnk, pcc, ruiu Reviewed By: ruiu Subscribers: mehdi_amini, steven_wu, dexonsmith, dang, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58255 llvm-svn: 354410
* [BPF] make test case reloc-btf.ll tolerable for old compilersYonghong Song2019-02-201-2/+2
| | | | | | | | | | | | | | | The test case reloc-btf.ll is generated with an IR containing spFlags introduced by https://reviews.llvm.org/rL347806. In the case of BTF backporting, the old compiler may not have this patch, so this test will fail during validation. This patch removed spFlags from IR in the test case and used the old way for various flags. Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Yonghong Song <yhs@fb.com> llvm-svn: 354409
* Revert "[InstSimplify] use any-zero matcher for fcmp folds"Sanjay Patel2019-02-202-29/+34
| | | | | | | This reverts commit 058bb8351351d56d2a4e8a772570231f9e5305e5. Forgot to update another test affected by this change. llvm-svn: 354408
* [GVN] Fix last crasher w/non-integral pointersPhilip Reames2019-02-202-3/+77
| | | | | | | | | | Same case as for memset and memcpy, but this time for clobbering stores and loads. We still can't allow coercion to or from non-integrals, regardless of the transform. Now that I'm done the whole little sequence, it seems apparent that we'd entirely missed reasoning about clobbers in the original GVN support for non-integral pointers. My appologies, I thought we'd upstreamed all of this, but it turns out we were still carrying a downstream hack which hid all of these issues. My chanks to Cherry Zhang for helping debug. llvm-svn: 354407
* [InstSimplify] use any-zero matcher for fcmp foldsSanjay Patel2019-02-202-34/+29
| | | | | | | | | The m_APFloat matcher does not work with anything but strict splat vector constants, so we could miss these folds and then trigger an assertion in instcombine: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13201 llvm-svn: 354406
* Sort enum members so that arch-dependent members are at the right place. NFC.Rui Ueyama2019-02-201-2/+2
| | | | llvm-svn: 354405
* [InstSimplify] add vector tests for fcmp+fabs; NFCSanjay Patel2019-02-191-0/+63
| | | | llvm-svn: 354404
* [GVN] Fix a crash bug w/non-integral pointers and memtransfersPhilip Reames2019-02-192-0/+64
| | | | | | Problem is very similiar to the one fixed for memsets in r354399, we try to coerce a value to non-integral type, and then crash while try to do so. Since we shouldn't be doing such coercions to start with, easy fix. From inspection, I see two other cases which look to be similiar and will follow up with most test cases and fixes if confirmed. llvm-svn: 354403
* [msan] Fix name_to_handle_at test on overlayfs.Evgeniy Stepanov2019-02-191-1/+1
| | | | | | Udev supports name_to_handle_at. Use /dev/null instead of /bin/cat. llvm-svn: 354402
* [GVN] Fix a non-integral pointer bug w/vector typesPhilip Reames2019-02-192-2/+33
| | | | | | GVN generally doesn't forward structs or array types, but it *will* forward vector types to non-vectors and vice versa. As demonstrated in tests, we need to inhibit the same set of transforms for vector of non-integral pointers as for non-integral pointers themselves. llvm-svn: 354401
* [lldb-instr] Don't print REGISTER macro when RECORD is already presentJonas Devlieghere2019-02-192-8/+10
| | | | | | | | | | | Currently we'd always print the LLDB_REGISTER macro, even if the LLDB_RECORD macro was already present. This patches changes that to make it easier to incrementally update the macros. Note that it's still possible for the RECORD and REGISTER macros to get out of sync. llvm-svn: 354400
* [GVN] Fix a crash bug around non-integral pointersPhilip Reames2019-02-192-3/+84
| | | | | | If we encountered a location where we tried to forward the value of a memset to a load of a non-integral pointer, we crashed. Such a forward is not legal in general, but we can forward null pointers. Test for both cases are included. llvm-svn: 354399
* [Test] Autogenerate existing tests before adding morePhilip Reames2019-02-191-10/+28
| | | | llvm-svn: 354398
* [WebAssembly] Update MC for bulk memoryThomas Lively2019-02-1943-119/+263
| | | | | | | | | | | | | | | | | | Summary: Rename MemoryIndex to InitFlags and implement logic for determining data segment layout in ObjectYAML and MC. Also adds a "passive" flag for the .section assembler directive although this cannot be assembled yet because the assembler does not support data sections. Reviewers: sbc100, aardappel, aheejin, dschuff Subscribers: jgravelle-google, hiraditya, sunfish, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D57938 llvm-svn: 354397
* [X86] Mark FP32_TO_INT16_IN_MEM/FP32_TO_INT32_IN_MEM/FP32_TO_INT64_IN_MEM as ↵Craig Topper2019-02-193-53/+55
| | | | | | | | | | | | | | clobbering EFLAGS to prevent mis-scheduling during conversion from SelectionDAG to MIR. After r354178, these instruction expand to a sequence that uses an OR instruction. That OR clobbers EFLAGS so we need to state that to avoid accidentally using the clobbered flags. Our tests show the bug, but I didn't notice because the SETcc instructions didn't move after r354178 since it used to be safe to do the fp->int conversion first. We should probably convert this whole sequence to SelectionDAG instead of a custom inserter to avoid mistakes like this. Fixes PR40779 llvm-svn: 354395
* [LangRef] add to description of alloca instructionSanjay Patel2019-02-191-9/+10
| | | | | | | | As mentioned in D58359, we can explicitly state that the memory allocated is uninitialized and reading that memory produces undef. llvm-svn: 354394
* [InstCombine] reduce even more unsigned saturated add with 'not' opSanjay Patel2019-02-192-23/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want to use the sum in the icmp to allow matching with m_UAddWithOverflow and eliminate the 'not'. This is discussed in D51929 and is another step towards solving PR14613: https://bugs.llvm.org/show_bug.cgi?id=14613 Name: uaddsat, -1 fval %notx = xor i32 %x, -1 %a = add i32 %x, %y %c = icmp ugt i32 %notx, %y %r = select i1 %c, i32 %a, i32 -1 => %a = add i32 %x, %y %c2 = icmp ugt i32 %y, %a %r = select i1 %c2, i32 -1, i32 %a Name: uaddsat, -1 fval + ult %notx = xor i32 %x, -1 %a = add i32 %x, %y %c = icmp ult i32 %y, %notx %r = select i1 %c, i32 %a, i32 -1 => %a = add i32 %x, %y %c2 = icmp ugt i32 %y, %a %r = select i1 %c2, i32 -1, i32 %a https://rise4fun.com/Alive/nTp llvm-svn: 354393
* [libFuzzer] docs: add a FAQ entry about dlcloseKostya Serebryany2019-02-191-0/+7
| | | | llvm-svn: 354392
* Move MinGW-specific code out of LinkerDriver::link. NFC.Rui Ueyama2019-02-194-71/+76
| | | | | | | | LinkerDriver::link is getting too long, it's time to simplify it. Differential Revision: https://reviews.llvm.org/D58395 llvm-svn: 354391
* second test on git-llvm-pushRenato Golin2019-02-191-0/+2
| | | | llvm-svn: 354390
* Fix builds with llvm/runtimes/compiler-rt after r354365Daniel Sanders2019-02-191-0/+1
| | | | | | | Compiler-rt doesn't include config-ix which was providing CheckSymbolExists to the LLVM build. Add it to HandleLLVMOptions to fix this llvm-svn: 354389
* [ArgumentPromotion] Add a lit.local.cfg to disable X86 specific tests if the ↵Craig Topper2019-02-191-0/+3
| | | | | | | | X86 target doesn't exist. Hopefully this fixes some buildbot failure after r354376 llvm-svn: 354388
* [MinGW] Hook up the --exclude-all-symbols optionMartin Storsjo2019-02-193-0/+7
| | | | | | Differential Revision: https://reviews.llvm.org/D58380 llvm-svn: 354387
* [COFF] Add -exclude-all-symbols for MinGWMartin Storsjo2019-02-193-4/+41
| | | | | | | | | | | | | This is a private undocumented option, intended to be used by the MinGW driver frontend. Also restructure the condition to put if (Config->MinGW) first. This changes the behaviour for the tautological combination of -export-all-symbols without -lldmingw. Differential Revision: https://reviews.llvm.org/D58380 llvm-svn: 354386
* Add Facebook Minidump directory streams and options to dump them.Greg Clayton2019-02-195-2/+267
| | | | | | | | Facebook creates minidump files that contain specific information about why things crash. Adding ways to dump these allows tools to be made that can auto download symbols based on the information that is contained in the minidump files. Differential Revision: https://reviews.llvm.org/D58398 llvm-svn: 354385
* [InstCombine] rearrange saturated add folds; NFCSanjay Patel2019-02-192-12/+44
| | | | | | | | | | This is no-functional-change-intended, but that was also true when it was part of rL354276, and I managed to lose 2 predicates for the fold with constant...causing much bot distress. So this time I'm adding a couple of negative tests to avoid that. llvm-svn: 354384
* Testing git-llvm-push scriptRenato Golin2019-02-191-0/+9
| | | | llvm-svn: 354383
* PowerPC: Fix typos in commentsJinsong Ji2019-02-191-2/+2
| | | | llvm-svn: 354382
* [ConstantFold] Fix misfolding fcmp of a ConstantExpr NaN with itself.Andrew Scheidecker2019-02-192-7/+14
| | | | | | | | | | | The code incorrectly inferred that the relationship of a constant expression to itself is FCMP_OEQ (ordered and equal), when it's actually FCMP_UEQ (unordered *or* equal). This change corrects that, and adds some more limited folds that can be done in this case. Differential revision: https://reviews.llvm.org/D51216 llvm-svn: 354381
* [ConstantFold] Fix misfolding of icmp with a bitcast FP second operand.Andrew Scheidecker2019-02-192-4/+19
| | | | | | | | | In the process of trying to eliminate the bitcast, this was producing a malformed icmp with FP operands. Differential revision: https://reviews.llvm.org/D51215 llvm-svn: 354380
* [llvm-cov] Add support for gcov --hash-filenames optionVedant Kumar2019-02-196-4/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | The patch adds support for --hash-filenames to llvm-cov. This option adds md5 hash of the source path to the name of the generated .gcov file. The option is crucial for cases where you have multiple files with the same name but can't use --preserve-paths as resulting filenames exceed the limit. from gcov(1): ``` -x --hash-filenames By default, gcov uses the full pathname of the source files to to create an output filename. This can lead to long filenames that can overflow filesystem limits. This option creates names of the form source-file##md5.gcov, where the source-file component is the final filename part and the md5 component is calculated from the full mangled name that would have been used otherwise. ``` Patch by Igor Ignatev! Differential Revision: https://reviews.llvm.org/D58370 llvm-svn: 354379
* Testing commit accessAndrew Scheidecker2019-02-191-1/+0
| | | | llvm-svn: 354378
* [msan] Remove cxa_atexit_race.ccVitaly Buka2019-02-191-35/+0
| | | | | | | | | | | | | | | | | | | | | Summary: The goal of the test to check that msan does not crash when code is racy on __cxa_atexit. Original crash was caused by race condition in the glibc. With the msan patch the msan does not crashes however the race is still there and the test triggers it. Because the test relies on triggering of undefined behavior results are not very predictable and it may occasionally crashes or hangs. I don't see how to reasonably improve the test, so I remove it. Reviewers: eugenis, peter.smith Subscribers: jfb, jdoerfert, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58396 llvm-svn: 354377
* [X86] Don't consider functions ABI compatible for ArgumentPromotion pass if ↵Craig Topper2019-02-193-0/+203
| | | | | | | | | | | | | | | | | | | | | | | | | | | | they view 512-bit vectors differently. The use of the -mprefer-vector-width=256 command line option mixed with functions using vector intrinsics can create situations where one function thinks 512 vectors are legal, but another fucntion does not. If a 512 bit vector is passed between them via a pointer, its possible ArgumentPromotion might try to pass by value instead. This will result in type legalization for the two functions handling the 512 bit vector differently leading to runtime failures. Had the 512 bit vector been passed by value from clang codegen, both functions would have been tagged with a min-legal-vector-width=512 function attribute. That would make them be legalized the same way. I observed this issue in 32-bit mode where a union containing a 512 bit vector was being passed by a function that used intrinsics to one that did not. The caller ended up passing in zmm0 and the callee tried to read it from ymm0 and ymm1. The fix implemented here is just to consider it a mismatch if two functions would handle 512 bit differently without looking at the types that are being considered. This is the easist and safest fix, but it can be improved in the future. Differential Revision: https://reviews.llvm.org/D58390 llvm-svn: 354376
* Revert "Revert "[llvm-objdump] Allow short options without arguments to be ↵Matthew Voss2019-02-198-25/+55
| | | | | | | | | | | | grouped"" - Tests that use multiple short switches now test them grouped and ungrouped. - Ensure the output of ungrouped and grouped variants is identical Differential Revision: https://reviews.llvm.org/D57904 llvm-svn: 354375
* Fix builds for older macOS deployment targets after r354365Daniel Sanders2019-02-191-18/+24
| | | | | | | | | | | Surprisingly, check_symbol_exists is not sufficient. The macOS linker checks the called functions against a compatibility list for the given deployment target and check_symbol_exists doesn't trigger this check as it never calls the function. This fixes the GreenDragon bots where the deployment target is 10.9 llvm-svn: 354374
* [sanitizers] add a regression test for the bug fixed in r354366Kostya Serebryany2019-02-191-0/+6
| | | | llvm-svn: 354373
* [OpenMP] Remove XFAIL for cancellation tests using gccJonathan Peyton2019-02-192-2/+1
| | | | llvm-svn: 354370
* [OpenMP 5.0] Add omp_get_supported_active_levels()Jonathan Peyton2019-02-198-0/+39
| | | | | | | | | | This patch adds the new 5.0 API function omp_get_supported_active_levels(). Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D58211 llvm-svn: 354368
* [OpenMP] Adding GOMP compatible cancellationJonathan Peyton2019-02-195-113/+246
| | | | | | | | | | | Remove fatal error messages from the cancellation API for GOMP Add __kmp_barrier_gomp_cancel() to implement cancellation of parallel regions. This new function uses the linear barrier algorithm with a cancellable nonsleepable wait loop. Differential Revision: https://reviews.llvm.org/D57969 llvm-svn: 354367
* [sanitizer] fix a memory safety bug (!!!) in sanitizer suppressions code, ↵Kostya Serebryany2019-02-191-1/+1
| | | | | | discovered by Aaron Jacobs llvm-svn: 354366
* Annotate timeline in Instruments with passes and other timed regions.Daniel Sanders2019-02-196-0/+195
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Instruments is a useful tool for finding performance issues in LLVM but it can be difficult to identify regions of interest on the timeline that we can use to filter the profiler or allocations instrument. Xcode 10 and the latest macOS/iOS/etc. added support for the os_signpost() API which allows us to annotate the timeline with information that's meaningful to LLVM. This patch causes timer start and end events to emit signposts. When used with -time-passes, this causes the passes to be annotated on the Instruments timeline. In addition to visually showing the duration of passes on the timeline, it also allows us to filter the profile and allocations instrument down to an individual pass allowing us to find the issues within that pass without being drowned out by the noise from other parts of the compiler. Using this in conjunction with the Time Profiler (in high frequency mode) and the Allocations instrument is how I found the SparseBitVector that should have been a BitVector and the DenseMap that could be replaced by a sorted vector a couple months ago. I added NamedRegionTimers to TableGen and used the resulting annotations to identify the slow portions of the Register Info Emitter. Some of these were placed according to educated guesses while others were placed according to hot functions from a previous profile. From there I filtered the profile to a slow portion and the aforementioned issues stood out in the profile. To use this feature enable LLVM_SUPPORT_XCODE_SIGNPOSTS in CMake and run the compiler under Instruments with -time-passes like so: instruments -t 'Time Profiler' bin/llc -time-passes -o - input.ll' Then open the resulting trace in Instruments. There was a talk at WWDC 2018 that explained the feature which can be found at https://developer.apple.com/videos/play/wwdc2018/405/ if you'd like to know more about it. Reviewers: bogner Reviewed By: bogner Subscribers: jdoerfert, mgorny, kristina, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D52954 llvm-svn: 354365
* [libObject][NFC] Use sys::path::convert_to_slash.Jordan Rupprecht2019-02-191-5/+1
| | | | | | | | | | | | | | | | Summary: As suggested in rL353995 Reviewers: compnerd Reviewed By: compnerd Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58298 llvm-svn: 354364
* [X86][SSE] Generalize X86ISD::BLENDI support to more value typesSimon Pilgrim2019-02-1919-385/+290
| | | | | | | | | | | | | | | | | | D42042 introduced the ability for the ExecutionDomainFixPass to more easily change between BLENDPD/BLENDPS/PBLENDW as the domains required. With this ability, we can avoid most bitcasts/scaling in the DAG that was occurring with X86ISD::BLENDI lowering/combining, blend with the vXi32/vXi64 vectors directly and use isel patterns to lower to the float vector equivalent vectors. This helps the shuffle combining and SimplifyDemandedVectorElts be more aggressive as we lose track of fewer UNDEF elements than when we go up/down through bitcasts. I've introduced a basic blend(bitcast(x),bitcast(y)) -> bitcast(blend(x,y)) fold, there are more generalizations I can do there (e.g. widening/scaling and handling the tricky v16i16 repeated mask case). The vector-reduce-smin/smax regressions will be fixed in a future improvement to SimplifyDemandedBits to peek through bitcasts and support X86ISD::BLENDV. Reapplied after reversion at rL353699 - AVX2 isel fix was applied at rL354358, additional test at rL354360/rL354361 Differential Revision: https://reviews.llvm.org/D57888 llvm-svn: 354363
* [NFC] Remove unused headers in Optional.hSerge Guelton2019-02-191-2/+0
| | | | llvm-svn: 354362
* Fix stupid assembly comment typoSimon Pilgrim2019-02-191-2/+2
| | | | llvm-svn: 354361
* [X86][SSE] Add pblendw commuted load test caseSimon Pilgrim2019-02-191-3/+15
| | | | | | Reduced test case for the regression caused in D57888/rL353610 llvm-svn: 354360
* [SDAG] Use shift amount type in MULO promotion; NFCNikita Popov2019-02-192-2/+13
| | | | | | | | | | Directly use the correct shift amount type if it is possible, and future-proof the code against vectors. The added test makes sure that bitwidths that do not fit into the shift amount type do not assert. Split out from D57997. llvm-svn: 354359
* [X86][AVX2] Hide VPBLENDD instructions behind AVX2 predicateSimon Pilgrim2019-02-191-0/+2
| | | | | | This was the cause of the regression in D57888 - the commuted load pattern wasn't hidden by the predicate so once we enabled v4i32 blends on SSE41+ targets then isel was incorrectly matched against AVX2+ instructions. llvm-svn: 354358
OpenPOWER on IntegriCloud