summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [clangd] Also accept flags from CLANGD_FLAGS variable.Sam McCall2019-07-253-10/+26
| | | | | | | | | | | | | | | | This simplifies various workflows, particularly in debugging/development. e.g. editors will tend to propagate flags, so you can run `env CLANGD_FLAGS=-input-mirror-file=/tmp/mirror vim foo.cc` rather than change the configuration in a persistent way. (This also gives us a generic lever when we don't know how to customize the flags in some particular LSP client). While here, add a test for this and other startup logging, and fix a couple of direct writes to errs() that should have been logs. Differential Revision: https://reviews.llvm.org/D65153 llvm-svn: 366991
* [PowerPC][NFC] Added `getDefMIPostRA` methodKai Luo2019-07-252-21/+38
| | | | | | | | | | | Summary: In PostRA phase, we often have to find out the most recent definition of a register. This patch adds getDefMIPostRA so that other methods can use it rather than implementing it repeatedly. Differential Revision: https://reviews.llvm.org/D65131 llvm-svn: 366990
* [Clang] New loop pragma vectorize_predicateSjoerd Meijer2019-07-2513-16/+145
| | | | | | | | | | | | | | | | | | | This adds a new vectorize predication loop hint: #pragma clang loop vectorize_predicate(enable) that can be used to indicate to the vectoriser that all (load/store) instructions should be predicated (masked). This allows, for example, folding of the remainder loop into the main loop. This patch will be followed up with D64916 and D65197. The former is a refactoring in the loopvectorizer and the groundwork to make tail loop folding a more general concept, and in the latter the actual tail loop folding transformation will be implemented. Differential Revision: https://reviews.llvm.org/D64744 llvm-svn: 366989
* [ELF][MIPS] Improve testsFangrui Song2019-07-2529-466/+466
| | | | | | | | | | * Add --no-show-raw-insn to llvm-objdump -d tests * When linking an executable with %t.so, the path %t.so will be recorded in the DT_NEEDED entry if %t.so doesn't have DT_SONAME. .dynstr will have varying lengths on different systems. Add -soname to make tests more robust. llvm-svn: 366988
* [MC] Add MCInstrAnalysis::evaluateMemoryOperandAddressSeiya Nuta2019-07-253-1/+40
| | | | | | | | | | | | | | | | | | | | | Summary: Add a new method which tries to compute the target address referenced by an operand. This patch supports x86_64 RIP-relative addressing for now. It is necessary to print referenced symbol names in llvm-objdump. Reviewers: andreadb, MaskRay, grosbach, jgalenson, craig.topper Reviewed By: MaskRay, craig.topper Subscribers: bcain, rupprecht, jhenderson, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D63847 llvm-svn: 366987
* [BasicAA] Temporarily disable two testsGeorge Burgess IV2019-07-251-2/+5
| | | | | | | | | | | | | | | These tests are breaking three independent upstream buildbots (as well downstream ones). These breakages have appeared mysteriously, consistently, and during different revisions. Sadly, none of {ASAN,TSAN,MSAN,UBSAN} flag anything, so the cause here is nonobvious. Until we've figured this out, it seems best to disable these tests entirely, so that the affected bots don't remain silent about any other, unrelated failures. Please see PR42719 for more information. llvm-svn: 366986
* LLGS: fix tracking execve on linuxPavel Labath2019-07-253-79/+16
| | | | | | | | | | | | | | | | | | | Summary: Due to a logic error, lldb-server ended up asserting/crashing every time the debugged process attempted an execve(). This fixes the error, and extends TestExec to work on other platforms too. The "extension" consists of avoiding non-standard posix_spawn extensions and using the classic execve() call, which should be available on any platform that actually supports re-execing. I change the test decorator from @skipUnlessDarwin to @skipIfWindows. Reviewers: clayborg, jasonmolenda Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D65207 llvm-svn: 366985
* [llvm-objdump][NFC] Make the PrettyPrinter::printInst() output bufferedSeiya Nuta2019-07-251-16/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Every time PrettyPrinter::printInst is called, stdout is flushed and it makes llvm-objdump slow. This patches adds a string buffer to prevent stdout from being flushed. Benchmark results (./llvm-objdump-master: without this patch, ./bin/llvm-objcopy: with this patch): $ hyperfine --warmup 10 './llvm-objdump-master -d ./bin/llvm-objcopy' './bin/llvm-objdump -d ./bin/llvm-objcopy' Benchmark #1: ./llvm-objdump-master -d ./bin/llvm-objcopy Time (mean ± σ): 2.230 s ± 0.050 s [User: 1.533 s, System: 0.682 s] Range (min … max): 2.115 s … 2.278 s 10 runs Benchmark #2: ./bin/llvm-objdump -d ./bin/llvm-objcopy Time (mean ± σ): 386.4 ms ± 13.0 ms [User: 376.6 ms, System: 6.1 ms] Range (min … max): 366.1 ms … 407.0 ms 10 runs Summary './bin/llvm-objdump -d ./bin/llvm-objcopy' ran 5.77 ± 0.23 times faster than './llvm-objdump-master -d ./bin/llvm-objcopy' Reviewers: alexshap, Bigcheese, jhenderson, rupprecht, grimar, MaskRay Reviewed By: jhenderson, MaskRay Subscribers: dexonsmith, jhenderson, javed.absar, kristof.beyls, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64969 llvm-svn: 366984
* cli-wrapper-mpxtable.cpp: fix file headerFangrui Song2019-07-251-2/+1
| | | | llvm-svn: 366983
* [TableGen] Fix comments/headers referencing clang (NFC)Jonas Devlieghere2019-07-253-6/+7
| | | | | | | Remove references to clang's TableGen implementation. Presumably these files were originally copied over. llvm-svn: 366982
* Implement change #4 of P1466: Change weekday to accept both 0 and 7 as ↵Marshall Clow2019-07-2520-66/+162
| | | | | | Sunday. Add accessors 'c_encoding' and 'iso_encoding' to provide different interpretations of the weekday. Remove 'operator unsigned' llvm-svn: 366981
* [lit] Protect full test suite from FILECHECK_OPTSJoel E. Denny2019-07-252-3/+10
| | | | | | | | | | | | | | | | | | | | | lit's test suite calls lit multiple times for various sample test suites. `FILECHECK_OPTS` is safe for FileCheck calls in lit's test suite. It's not safe for FileCheck calls in the sample test suites, whose output affects the results of lit's test suite. Without this patch, only one such sample test suite is protected from `FILECHECK_OPTS`, and I admit I haven't discovered other cases for which I can produce false failures using `FILECHECK_OPTS`. However, it's hard to predict the future, especially false passes. Thus, this patch protects all existing and future sample test suites from `FILECHECK_OPTS` (and the deprecated `FILECHECK_DUMP_INPUT_ON_FAILURE`). Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D65156 llvm-svn: 366980
* Revert "[Sema] Enable -Wimplicit-float-conversion for integral to floating ↵Petr Hosek2019-07-256-98/+10
| | | | | | | | | | | point precision loss" This reverts commit r366972 which broke the following tests: Clang :: CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp Clang :: CXX/dcl.decl/dcl.init/dcl.init.list/p7-cxx11-nowarn.cpp llvm-svn: 366979
* github-upload-release.py: Fix script name in examplesTom Stellard2019-07-251-4/+4
| | | | llvm-svn: 366978
* Add github-release.py scriptTom Stellard2019-07-251-0/+77
| | | | | | | | | | | | | | | | | | Summary: This script can be used for uploading relases sources and binaries to github. Reviewers: hans Reviewed By: hans Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64841 llvm-svn: 366977
* [PowerPC] exclude more icmps in LSR which is converted in later hardware ↵Chen Zheng2019-07-253-13/+6
| | | | | | | | loop pass Differential Revision: https://reviews.llvm.org/D64795 llvm-svn: 366976
* [FileCollector] Remove LLDB shim around llvm::FileCollector (NFC)Jonas Devlieghere2019-07-255-56/+15
| | | | | | | | The FileCollector got lifted into LLVM and a shim was introduced in LLDB to keep the old API that takes FileSpecs. This patch removes that shim and converts the arguments in place. llvm-svn: 366975
* [FileSystem] Fix ambiguous symbol on Windows.Jonas Devlieghere2019-07-251-1/+1
| | | | | | | The using declarations make FileCollector ambiguous. Specify that FileSystem takes an lldb_private::FileCollector. llvm-svn: 366974
* [FileCollector] Update unit test to match coding style.Jonas Devlieghere2019-07-251-34/+34
| | | | | | | I changed the FileCollector coding style but didn't update the corresponding unit test. llvm-svn: 366973
* [Sema] Enable -Wimplicit-float-conversion for integral to floating point ↵Ziang Wan2019-07-256-10/+98
| | | | | | | | | | | | | | | precision loss Issue an warning when the code tries to do an implicit int -> float conversion, where the float type ha a narrower significant than the float type. The new warning is controlled by flag -Wimplicit-int-float-conversion, under -Wimplicit-float-conversion and -Wconversion. Differential Revision: https://reviews.llvm.org/D64666 llvm-svn: 366972
* [llvm-lipo] Implement alignment function in -createShoaib Meenai2019-07-255-4/+503
| | | | | | | | | | | Summary: Removes hard coded valuse for alignment in -create. Patch by Anusha Basana <anusha.basana@gmail.com> Differential Revision: https://reviews.llvm.org/D64871 llvm-svn: 366970
* [Object] Add public MaxSectionAlignment to MachOUniversalShoaib Meenai2019-07-252-6/+9
| | | | | | | | | | | Change MAXSECTALIGN to a public MaxSectionAlignment in MachOUniversal. Will be used in a follow-up. Patch by Anusha Basana <anusha.basana@gmail.com> Differential Revision: https://reviews.llvm.org/D65117 llvm-svn: 366969
* [llvm-lipo] Add test for -verify_archsShoaib Meenai2019-07-251-0/+1
| | | | | | | | | | | Add test to verify clean failure, exit code 1 for valid architecture not present in the universal binary. Patch by Anusha Basana <anusha.basana@gmail.com> Differential Revision: https://reviews.llvm.org/D65251 llvm-svn: 366968
* [sanitizer_common] Allow customization of StartSymbolizerSubprocessJulian Lettner2019-07-252-7/+13
| | | | | | | | | | | | | | Summary: Make SymbolizerProcess::StartSymbolizerSubprocess virtual and protected to allow subclasses to customize it via "override and call". Subscribers: kubamracek, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D65252 llvm-svn: 366967
* [FileCollector] Change coding style from LLDB to LLVM (NFC)Jonas Devlieghere2019-07-256-110/+107
| | | | | | | | This patch changes the coding style of the FileCollector from the LLDB to the LLVM coding style. Alex recently lifted it into LLVM and I volunteered to do the conversion. llvm-svn: 366966
* [Remarks][NFC] Rename remarks::Parser to remarks::RemarkParserFrancis Visoiu Mistrih2019-07-256-28/+28
| | | | llvm-svn: 366965
* [docs] Split out a section on LoopInfo in the new loop documentationPhilip Reames2019-07-241-6/+37
| | | | llvm-svn: 366964
* [ARM] Remove dead code from ARMConstantIslands.Eli Friedman2019-07-241-5/+0
| | | | | | | tLDRHi is not a pc-relative load; it can't directly refer to a constant pool or jump table. llvm-svn: 366963
* [InstCombine] Swap order of checks to improve compile time (NFC)Evandro Menezes2019-07-241-3/+3
| | | | llvm-svn: 366962
* Apply a few more reviewer suggestions from D65164Philip Reames2019-07-241-6/+11
| | | | llvm-svn: 366961
* Define some basic terminology around loops in our documentationPhilip Reames2019-07-242-0/+113
| | | | | | | | | | | | I've noticed a lot of confusion around this area recently with key terms being misused in a number of threads. To help reign that in, let's go ahead and document the current terminology and meaning thereof. My hope is to grow this over time into a broader discussion of canonical loop forms - yes, there are more than one ... many more than one - but for the moment, simply having the key terminology is a good stopping place. Note: I am landing this *without* an LGTM. All feedback so far has been positive, and trying to apply all of the suggested changes/extensions would cause the review to never end. Instead, I decided to land it with the obvious fixes made based on reviewer comments, then iterate from there. Differential Revision: https://reviews.llvm.org/D65164 llvm-svn: 366960
* [AArch64][GlobalISel] Select immediate modes for ADD when selecting G_GEPJessica Paquette2019-07-243-10/+87
| | | | | | | | | | | | | | | Before, we weren't able to select things like this for G_GEP: add x0, x8, #8 And instead we'd materialize the 8. This teaches GISel to do that. It gives some considerable code size savings on 252.eon-- about 4%! Differential Revision: https://reviews.llvm.org/D65248 llvm-svn: 366959
* Fix unittest build issue in r366956Alex Lorenz2019-07-241-0/+1
| | | | | | | I marked the fields as private, but they're needed by the unittest. I'll have to fix that up separarely in a follow-up. llvm-svn: 366958
* [AArch64][GlobalISel] Don't try to use GISel if subtarget doesn't have neon ↵Amara Emerson2019-07-242-0/+19
| | | | | | | | | | | | | | or fp. Throughout the legalizerinfo we currently make the assumption that the target has neon and FP target features available. Fixing it will require a refactor of the whole thing, so until then make sure we fall back. Works around PR42734 Differential Revision: https://reviews.llvm.org/D65244 llvm-svn: 366957
* [Support] move FileCollector from LLDB to llvm/SupportAlex Lorenz2019-07-248-80/+110
| | | | | | | | | The file collector class is useful for creating reproducers, not just for LLDB, but for other tools as well in LLVM/Clang. Differential Revision: https://reviews.llvm.org/D65237 llvm-svn: 366956
* [Codegen] (X & (C l>>/<< Y)) ==/!= 0 --> ((X <</l>> Y) & C) ==/!= 0 foldRoman Lebedev2019-07-2416-1500/+1330
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This was originally reported in D62818. https://rise4fun.com/Alive/oPH InstCombine does the opposite fold, in hope that `C l>>/<< Y` expression will be hoisted out of a loop if `Y` is invariant and `X` is not. But as it is seen from the diffs here, if it didn't get hoisted, the produced assembly is almost universally worse. Much like with my recent "hoist add/sub by/from const" patches, we should get almost universal win if we hoist constant, there is almost always an "and/test by imm" instruction, but "shift of imm" not so much, so we may avoid having to materialize the immediate, and thus need one less register. And since we now shift not by constant, but by something else, the live-range of that something else may reduce. Special care needs to be applied not to disturb x86 `BT` / hexagon `tstbit` instruction pattern. And to not get into endless combine loop. Reviewers: RKSimon, efriedma, t.p.northover, craig.topper, spatel, arsenm Reviewed By: spatel Subscribers: hiraditya, MaskRay, wuzish, xbolva00, nikic, nemanjai, jvesely, wdng, nhaehnle, javed.absar, tpr, kristof.beyls, jsji, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62871 llvm-svn: 366955
* [AArch64][GlobalISel] Fold G_MUL into XRO load addressing mode when possibleJessica Paquette2019-07-242-9/+216
| | | | | | | | | | | | If we have a G_MUL, and either the LHS or the RHS of that mul is the legal shift value for a load addressing mode, we can fold it into the load. This gives some code size savings on some SPEC tests. The best are around 2% on 300.twolf and 3% on 254.gap. Differential Revision: https://reviews.llvm.org/D65173 llvm-svn: 366954
* Revert "NFC: utils/perf-training: Python 3 compatibility for lit.cfg"Azharuddin Mohammed2019-07-241-1/+1
| | | | | | | | | This reverts commit 9178b10163f758cbf8a5290ea6a827990427ddc0 (r365969). We are back to using Python2 and this is failing. This should instead be made to be compatible with both Python 2 and 3. llvm-svn: 366953
* IR: Teach GlobalIndirectSymbol::getBaseObject() to handle more kinds of ↵Peter Collingbourne2019-07-244-5/+51
| | | | | | | | | | | | | | | | | | | | | expressions. For aliases, any expression that lowers at the MC level to global_object or global_object+constant is valid at the object file level. getBaseObject() should return a result if the aliasee ends up being of that form even if the IR used to produce it is somewhat unconventional. Note that this is different from what stripInBoundsOffsets() and that family of functions is doing. Those functions are concerned about semantic properties of IR, whereas here we only care about the lowering result. Therefore reimplement getBaseObject() in a way that matches the lowering result. This fixes a crash when producing a summary for aliases such as that in the included test case. Differential Revision: https://reviews.llvm.org/D65115 llvm-svn: 366952
* [GlobalISel] Support for inlining memcpy, memset and memmove calls.Amara Emerson2019-07-2411-6/+1126
| | | | | | | | | | | | | This introduces a new family of combiner helper routines that re-use the target specific cost model from SelectionDAG, and generate inline implementations of the memcpy family of intrinsics. The combines are only enabled at optimization levels higher than -O0, and give very substantial performance improvements. Differential Revision: https://reviews.llvm.org/D65167 llvm-svn: 366951
* [Symbol] Fix some botched logic in Variable::GetLanguageAlex Langford2019-07-241-5/+5
| | | | | | | | | | | | | | Summary: I messed up the logic for this. Fixing with some improvements suggested by Pavel. Reviewers: labath, jdoerfert Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D65165 llvm-svn: 366950
* [Transforms] move copying of load metadata to helper function; NFCSanjay Patel2019-07-243-45/+56
| | | | | | | There's another proposed load combine that can make use of this code in D64432. llvm-svn: 366949
* [WebAssembly] Set __tls_align to 1 when there is no TLSGuanzhong Chen2019-07-242-5/+47
| | | | | | | | | | | | | | | | | | Summary: We want the tool conventions to state that `__tls_align` will be a power of 2. It makes sense to not have an exception for when there is no TLS. Reviewers: tlively, sunfish Reviewed By: tlively Subscribers: dschuff, sbc100, jgravelle-google, aheejin, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65177 llvm-svn: 366948
* [CodeGen] Add missing comment (NFC)Evandro Menezes2019-07-241-14/+19
| | | | | | | Add similar comments on the load limits pertaining to `memcmp()` similar to those for other string functions. llvm-svn: 366947
* [Remarks] Add support for serializing metadata for every remark streamerFrancis Visoiu Mistrih2019-07-246-135/+166
| | | | | | | This allows every serializer format to implement metaSerializer() and return the corresponding meta serializer. llvm-svn: 366946
* [InstCombine] Teach foldOrOfICmps to allow icmp eq MIN_INT/MAX to be part of ↵Craig Topper2019-07-242-36/+59
| | | | | | | | | | | | | | | a range comparision. Similar for foldAndOfICmps We can treat icmp eq X, MIN_UINT as icmp ule X, MIN_UINT and allow it to merge with icmp ugt X, C. Similar for the other constants. We can do simliar for icmp ne X, (U)INT_MIN/MAX in foldAndOfICmps. And we already handled UINT_MIN there. Fixes PR42691. Differential Revision: https://reviews.llvm.org/D65017 llvm-svn: 366945
* [LLD] Do not print additional newlines after reaching error limitAlexander Richardson2019-07-242-1/+26
| | | | | | | | | | | | | | | | | | | | Summary: This could previously happen if errors that are emitted after reaching the error limit. In that case, the flag inside the newline() function will be set to true which causes the next call to print a newline even though the actual message will be discarded. Reviewers: ruiu, grimar, MaskRay, espindola Reviewed By: ruiu Subscribers: emaste, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65198 llvm-svn: 366944
* [AArch64][GlobalISel] Fix a crash during s128 G_ICMP legalization due to ↵Amara Emerson2019-07-242-4/+44
| | | | | | | | | | | r366317. r366317 added a legalization for s128 G_ICMP narrow scalar which tried to hard code the result type of the new legalized G_SELECT. Change this to instead use type of the original G_ICMP result and allow the target to legalize it if necessary later. llvm-svn: 366943
* Let CorrelatedValuePropagation preserve LazyValueInfoDavid Bolvansky2019-07-241-0/+2
| | | | | | | | | | | | | | | | | | | | | Summary: This patch makes CorrelatedValuePropagation preserve LazyValueInfo by adding LazyValueInfo::eraseValue & calling it whenever an instruction is erased. Passes `make check` , test-suite, and SPECrate 2017. Patch by aqjune (Juneyoung Lee) Reviewers: reames, mzolotukhin Reviewed By: reames Subscribers: xbolva00, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59349 llvm-svn: 366942
* Fix exporting SARIF files from scan-build on Windows.Aaron Ballman2019-07-241-2/+2
| | | | | | | | In Perl, -z is defined as checking if a "file has zero size" and makes no mention what it does when given a directory. It looks like the behavior differs across platforms, which is why on Windows the SARIF file was always being deleted. Patch by Joe Ranieri. llvm-svn: 366941
OpenPOWER on IntegriCloud