summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [WebAssembly] Revert r319488 "Add visibility flag to Wasm symbol flags"Heejin Ahn2017-12-027-52/+4
| | | | | | | | | This patch reportedly broke one of LLVM bots (ubuntu-gcc7.1-werror). See http://lab.llvm.org:8011/builders/ubuntu-gcc7.1-werror/builds/3369 for details. llvm-svn: 319602
* Move comment back to being next to the code it's a comment for.Richard Smith2017-12-021-3/+3
| | | | llvm-svn: 319601
* Cache modulo values for the .gnu.hash section.Rui Ueyama2017-12-022-11/+13
| | | | | | | | | | This change actually makes the linker slightly faster. My observation is that, with this patch, link time of clang without debug is about 1% faster. Differential Revision: https://reviews.llvm.org/D40697 llvm-svn: 319600
* Add a symbols subcommand to lldb-test.Zachary Turner2017-12-022-1/+36
| | | | | | Differential Revision: https://reviews.llvm.org/D40745 llvm-svn: 319599
* Don't use llvm::EnablePrettyStackTrace on macOS.Jim Ingham2017-12-021-0/+2
| | | | | | | | | | | | | | | | | LLDB.framework gets loaded into Xcode and other frameworks, and this is inserting a signal handler into the process even when lldb isn't used. I have a bunch of reports of this SignalHandler blowing out the stack, which renders crash reports for the crash useless. And in any case libraries really shouldn't be installing signal handlers. I only turned this off for APPLE platforms, I'll let the maintainers of other platforms decide what policy they want to have w.r.t. this. llvm-svn: 319598
* Fix warning in DynamicLoaderDarwinKernel.cpp, NFCVedant Kumar2017-12-011-1/+1
| | | | llvm-svn: 319597
* Fix warnings in JSON.cpp, NFCVedant Kumar2017-12-011-3/+0
| | | | | | These asserts are no-ops, and are supplanted by -Wcovered-switch. llvm-svn: 319596
* Fix warnings in DNBDataRef.cpp, NFCVedant Kumar2017-12-011-6/+6
| | | | llvm-svn: 319595
* [AST] Try to fix build bot with modules broken r319589. However real fix may ↵Eugene Zelenko2017-12-011-0/+1
| | | | | | belong to other place. llvm-svn: 319594
* [CodeGen] convert math libcalls/builtins to equivalent LLVM intrinsicsSanjay Patel2017-12-016-215/+294
| | | | | | | | | | | | | | | | There are 20 LLVM math intrinsics that correspond to mathlib calls according to the LangRef: http://llvm.org/docs/LangRef.html#standard-c-library-intrinsics We were only converting 3 mathlib calls (sqrt, fma, pow) and 12 builtin calls (ceil, copysign, fabs, floor, fma, fmax, fmin, nearbyint, pow, rint, round, trunc) to their intrinsic-equivalents. This patch pulls the transforms together and handles all 20 cases. The switch is guarded by a check for const-ness to make sure we're not doing the transform if errno could possibly be set by the libcall or builtin. Differential Revision: https://reviews.llvm.org/D40044 llvm-svn: 319593
* [WebAssembly] Add support for visibility flagSam Clegg2017-12-0114-47/+105
| | | | | | | | Patch by Nicholas Wilson Differential Revision: https://reviews.llvm.org/D40690 llvm-svn: 319592
* Revert "[X86] Improvement in CodeGen instruction selection for LEAs."Matt Morehouse2017-12-0118-692/+163
| | | | | | This reverts r319543, due to ASan bot breakage. llvm-svn: 319591
* [libFuzzer] add a flag -malloc_limit_mbKostya Serebryany2017-12-016-2/+15
| | | | llvm-svn: 319590
* [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other ↵Eugene Zelenko2017-12-016-155/+260
| | | | | | minor fixes (NFC). llvm-svn: 319589
* [MachineOutliner] NFC: Throw out self-intersections on candidates earlyJessica Paquette2017-12-011-11/+42
| | | | | | | | | | | | | | | Currently, the outliner considers candidates that intersect with themselves in the candidate pruning step. That is, candidates of the form "AA" in ranges like "AAAAAA". In that range, it looks like there are 5 instances of "AA" that could possibly be outlined, and that's considered in the benefit calculation. However, only at most 3 instances of "AA" could ever be outlined in "AAAAAA". Thus, it's possible to pass through "AA" to the candidate selection step even though it's *never* the case that "AA" could be outlined. This makes it so that when we find candidates, we consider only non-overlapping occurrences of that candidate. llvm-svn: 319588
* [DAG][ARM] Revert "Reenable post-legalize store merge"Nirav Dave2017-12-014-389/+27
| | | | | | due to failures in AArch and ARM code gen. llvm-svn: 319587
* [MC] Handle unknown literal register numbers in .cfi_* directivesJake Ehrlich2017-12-015-10/+59
| | | | | | | | | | | | | | | | | r230670 introduced a step to map EH register numbers to standard DWARF register numbers. This failed to consider the case when a user .cfi_* directive uses an integer literal rather than a register name, to specify a DWARF register number that has no corresponding LLVM register number (e.g. a special register that the compiler and assembler have no name for). Fixes PR34028. Patch by Roland McGrath Differential Revision: https://reviews.llvm.org/D36493 llvm-svn: 319586
* [OPENMP] Emit `__tgt_target_teams` for all teams directives.Alexey Bataev2017-12-0120-119/+119
| | | | | | | | Previously we emitted `__tgt_target_teams` only for standalone teams directives. This patch allows emit this function for all teams-based directives. llvm-svn: 319585
* [c++17] When deducing the type of a non-type template parameter from the typeRichard Smith2017-12-012-2/+7
| | | | | | | | | of its argument, perform function-to-pointer and array-to-pointer decay on the parameter type first. Otherwise deduction will fail, as the type of the argument will be decayed. llvm-svn: 319584
* [IndVars] Fix a bug introduced in r317012Philip Reames2017-12-012-3/+43
| | | | | | | | Turns out we can have comparisons which are indirect users of the induction variable that we can make invariant. In this case, there is no loop invariant value contributing and we'd fail an assert. The test case was found by a java fuzzer and reduced. It's a real cornercase. You have to have a static loop which we've already proven only executes once, but haven't broken the backedge on, and an inner phi whose result can be constant folded by SCEV using exit count reasoning but not proven by isKnownPredicate. To my knowledge, only the fuzzer has hit this case. llvm-svn: 319583
* [cmake] Revert (rL319574): Resubmit Remove redundant call to cmake when ↵Don Hinton2017-12-011-13/+28
| | | | | | | | | | building host tools. Still fails for some bots. Differential Revision: https://reviews.llvm.org/D40229 llvm-svn: 319582
* [opt-remarks] If hotness threshold is set, ignore remarks without hotnessAdam Nemet2017-12-014-9/+123
| | | | | | | | | | | | | | These are blocks that haven't not been executed during training. For large projects this could make a significant difference. For the project, I was looking at, I got an order of magnitude decrease in the size of the total YAML files with this and r319235. Differential Revision: https://reviews.llvm.org/D40678 Re-commit after fixing the failing testcase in rL319576, rL319577 and rL319578. llvm-svn: 319581
* Prevent vain lldb::user_id_t 0xffffffff lookupsJan Kratochvil2017-12-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | I have found LLDB commonly looks up lldb::user_id_t 0xffffffff failing to find its DIE. One would rather expect LLDB_INVALID_UID == 0xffffffffffffffff in such case. DWARFASTParserClang.cpp:495 492 type_sp.reset( 493 new Type(die.GetID(), dwarf, type_name_const_str, byte_size, NULL, 494 DIERef(encoding_uid).GetUID(dwarf), encoding_data_type, 495 &decl, clang_type, resolve_state)); encoding_uid = (DWARFFormValue) {m_cu = 0x0, m_form = 0, m_value = {value = {uval = 0, sval = 0, cstr = 0x0}, data = 0x0}} -> DIERef::DIERef(const DWARFFormValue &form_value = {m_cu = 0x0, m_form = 0, m_value = {value = {uval = 0, sval = 0, cstr = 0x0}, data = 0x0}}) -> (DIERef) {cu_offset = 0xffffffff, die_offset = 0xffffffff} -> lldb::user_id_t DIERef::GetUID(SymbolFileDWARF *dwarf = 0x61d00000b480) const -> Type::Type(lldb::user_id_t encoding_uid = 0xffffffff) But 0xffffffff != #define LLDB_INVALID_UID UINT64_MAX Differential revision: https://reviews.llvm.org/D37492 llvm-svn: 319580
* [clangd] Define constants in the right namespace. NFCSam McCall2017-12-011-1/+5
| | | | llvm-svn: 319579
* Fix the second part of the broken comment from r306079Adam Nemet2017-12-011-2/+6
| | | | | | | | The driver-based test is still not identical to the front-end line, remove the hotness threshold from there and add a new front-end based test with threshold. llvm-svn: 319578
* Fix opt-remark with hotness testcase for sample-based PGOAdam Nemet2017-12-012-7/+7
| | | | | | | | | | | | 1. Require hotness on all remark lines with -verify. 3. Fix the samplePGO file to actually produce hotness on each line. The second remark has hotness 60 rather 30 which I don't quite understand but testing this is strictly better than before. It also unblocks the commit of D40678. llvm-svn: 319577
* Partially fix comment in test broken in r306079 and r306948Adam Nemet2017-12-011-6/+6
| | | | | | | | | | | A RUN line was referring to the previous RUN line but a new test was added in between them. Just reorder the lines. Note this still does not completely fix this the brokenness of the comment as the driver-based test gained a new hotness-threshold argument in r306948 but I'll fix that is a separate commit. llvm-svn: 319576
* [ubsan] Re-commit: lit changes for lld testing, future lto testing.Roman Lebedev2017-12-0113-22/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: As discussed in https://github.com/google/oss-fuzz/issues/933, it would be really awesome to be able to use ThinLTO for fuzzing. However, as @kcc has pointed out, it is currently undefined (untested) whether the sanitizers actually function properly with LLD and/or LTO. This patch is inspired by the cfi test, which already do test with LTO (and/or LLD), since LTO is required for CFI to function. I started with UBSan, because it's cmakelists / lit.* files appeared to be the cleanest. This patch adds the infrastructure to easily add LLD and/or LTO sub-variants of the existing lit test configurations. Also, this patch adds the LLD flavor, that explicitly does use LLD to link. The check-ubsan does pass on my machine. And to minimize the [initial] potential buildbot breakage i have put some restrictions on this flavour. Please review carefully, i have not worked with lit/sanitizer tests before. The original attempt, r319525 was reverted in r319526 due to the failures in compiler-rt standalone builds. Reviewers: eugenis, vitalybuka Reviewed By: eugenis Subscribers: #sanitizers, pcc, kubamracek, mgorny, llvm-commits, mehdi_amini, inglorion, kcc Differential Revision: https://reviews.llvm.org/D39508 llvm-svn: 319575
* [cmake] Resubmit Remove redundant call to cmake when building host tools.Don Hinton2017-12-011-28/+13
| | | | | | | | | | | | | | | | | Only pass Native to LLVM_TARGETS_TO_BUILD. Summary: Remove the redundant, config-time call to cmake when building host tools for cross compiles or optimized tablegen.. The config-time call to cmake is redundant because it will always get called again when the CONFIGURE_LLVM_${target_name} target fires at build-time. This speeds up initial configuration, but has no affect on build behavior. Differential Revision: https://reviews.llvm.org/D40229 llvm-svn: 319574
* [DAGCombine] Simplify ISD::AND handling in ReduceLoadWidthEli Friedman2017-12-011-20/+5
| | | | | | | | Followup to D39595. Removes a bunch of redundant checks. Differential Revision: https://reviews.llvm.org/D40667 llvm-svn: 319573
* [libFuzzer] remove stale flags; NFCKostya Serebryany2017-12-014-13/+0
| | | | llvm-svn: 319572
* [libFuzzer] add an experimental search heuristic flag -reduce_depthKostya Serebryany2017-12-015-5/+18
| | | | llvm-svn: 319571
* [compiler-rt] Remove out of date commentShoaib Meenai2017-12-011-4/+0
| | | | | | | | | Per beanz, building compiler-rt standalone is a pretty important use case, so the comment is very out of date. Differential Revision: https://reviews.llvm.org/D40740 llvm-svn: 319570
* [compiler-rt] Add install-*-stripped targetsShoaib Meenai2017-12-012-0/+17
| | | | | | | | | | | These targets strip during installation, and are required to support install-distribution-stripped in LLVM (to support a stripped distribution). LLVM has an add_llvm_install_targets function for this purpose, but we can't rely on LLVM being present. Differential Revision: https://reviews.llvm.org/D40687 llvm-svn: 319569
* [X86][AVX512] Tag subvector extract/insert instructions scheduler classesSimon Pilgrim2017-12-011-32/+65
| | | | llvm-svn: 319568
* [IR] Avoid dangling else warning. NFC.Benjamin Kramer2017-12-011-1/+2
| | | | llvm-svn: 319567
* IR printing improvement for loop passes - handle -print-module-scopeFedor Sergeev2017-12-012-2/+24
| | | | | | | | | | | | | | | | | Summary: Adding support for -print-module-scope similar to how it is being done for function passes. This option causes loop-pass printer to emit a whole-module IR instead of just a loop itself. Reviewers: sanjoy, silvas, weimingz Reviewed By: sanjoy Subscribers: apilipenko, skatkov, llvm-commits Differential Revision: https://reviews.llvm.org/D40247 llvm-svn: 319566
* Add test for pr35478.Rafael Espindola2017-12-011-0/+18
| | | | | | | | This would have found the regression in r318924. Thanks to James Henderson for finding the issue! llvm-svn: 319565
* [DebugInfo] Bail out if making no progress dumping line tables.Paul Robinson2017-12-012-0/+101
| | | | llvm-svn: 319564
* Revert r318924 Skip over empty sections when checking for contiguous relroRafael Espindola2017-12-012-79/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR35478 https://bugs.llvm.org/show_bug.cgi?id=35478 points out a flaw in the implementation of r318924 from D40364. The implementation depends on the Size field being set or the SyntheticSection::empty() being accurate. These functions are not reliable as some linker script commands that have yet to be processed may affect the results, causing some non-zero size sections to be reported as zero size. I think the first step is to revert r318924 and come up with a better solution for the underlying problem rather than trying to layer more heuristics onto the zero sized output section. Chances are I'll be out of office by the time anyone sees this so feel free to commit the revert if you agree with me. Fixes PR35478 Current thoughts on the underlying problem: Revisiting the motivation for adding the zero size check in the first place; it was to prevent 0 sized SyntheticSections that a user does not have full control over from needlessly breaking the PT_GNU_RELRO, rather than trying to accommodate arbitrarily complex linker scripts. Looking at the code, it looks like removeUnusedSyntheticSections() should remove zero sized synthetic sections. It does, but it doesn't set the Parent to nullptr, this has the side effect that Sec == InX::BssRelRo->getParent() will make the parent OutputSection of InX::BssRelRo RelRo even if there is no InX::BssRelRo. I tried a quick experiment with setting the Parent to nullptr and this flushed out a few interesting test failures, it feels like playing Jenga with every change: In the isRelroSection() we have to consider the case where there is no .plt and .plt.got but there is a ifunc plt with accompanying (ifunc .got or .plt.got) The PPC64 has PltHeaderSize == 0. Unfortunately HeaderSize == 0 is used to choose between the ifunc plt or normal plt. We seem to get away with this at the moment, but tests start to fail when Parent is set to nullptr for the .got.plt. The InX::BssRelRo and InX::Bss never get their sizes set and they are always removed by removeUnusedSyntheticSections(), their purpose seems to be as some kind of proxy for add .bss or .bss.relro InputSections into their parent OutputSections, they therefore don't behave like other SyntheticSections anyway. My thinking is that some work is needed to make sure that the Sec == SyntheticSection->getParent() does a bit more checking before returning true, particularly for InX::BssRelRo as that has special behaviour. I'll hope to post something for review as soon as possible. Patch by Peter Smith! llvm-svn: 319563
* Revert "[opt-remarks] If hotness threshold is set, ignore remarks without ↵Adam Nemet2017-12-014-123/+9
| | | | | | | | | | | hotness" This reverts commit r319556. Something is not working with this when used with sample-based profiling. Investigating... llvm-svn: 319562
* IR printing improvement for function passes - introducing -print-module-scopeFedor Sergeev2017-12-014-1/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When debugging function passes it happens to be rather useful to dump the whole module before the transformation and then use this dump to analyze this single transformation by running it separately on that particular module state. Introducing -print-module-scope debugging option that forces all the function-level IR dumps to become whole-module dumps. This option builds on top of normal dumping controls like -print-before/after -filter-print-funcs The plan is to eventually extend this option to cover other local passes (at least loop passes) but that should go as a separate change. Reviewers: sanjoy, weimingz, silvas, fedor.sergeev Reviewed By: weimingz Subscribers: apilipenko, skatkov, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D40245 llvm-svn: 319561
* [OPENMP] Do not allow variables to be first|last-privates inAlexey Bataev2017-12-0140-102/+160
| | | | | | | | distribute directives. OpenMP standard does not allow to mark the variables as firstprivate and lastprivate at the same time in distribute-based directives. Patch fixes this problem. llvm-svn: 319560
* Fix line endings. NFCI.Simon Pilgrim2017-12-011-10/+10
| | | | llvm-svn: 319559
* [X86][AVX512] Tag VPERM2I/VPERM2T instructions scheduler classSimon Pilgrim2017-12-011-48/+64
| | | | llvm-svn: 319558
* [clangd] Fuzzy match scorerSam McCall2017-12-015-0/+711
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This will be used for rescoring code completion results based on partial identifiers. Short-term use: - we want to limit the number of code completion results returned to improve performance of global completion. The scorer will be used to rerank the results to return when the user has applied a filter. Long-term use case: - ranking of completion results from in-memory index - merging of completion results from multiple sources (merging usually works best when done at the component-score level, rescoring the fuzzy-match quality avoids different backends needing to have comparable scores) Reviewers: ilya-biryukov Subscribers: cfe-commits, mgorny Differential Revision: https://reviews.llvm.org/D40060 llvm-svn: 319557
* [opt-remarks] If hotness threshold is set, ignore remarks without hotnessAdam Nemet2017-12-014-9/+123
| | | | | | | | | | | These are blocks that haven't not been executed during training. For large projects this could make a significant difference. For the project, I was looking at, I got an order of magnitude decrease in the size of the total YAML files with this and r319235. Differential Revision: https://reviews.llvm.org/D40678 llvm-svn: 319556
* Disallow a cleanup attribute from appertaining to a parameter (the attribute ↵Aaron Ballman2017-12-013-20/+10
| | | | | | only appertains to local variables and is silently a noop on parameters). This repurposes the unused (and syntactically incorrect) NormalVar attribute subject. llvm-svn: 319555
* [X86][AVX512] Tag VFPCLASS instructions scheduler classSimon Pilgrim2017-12-011-26/+43
| | | | llvm-svn: 319554
* [X86][AVX512] Tag VPSHUFBITQMB instructions scheduler classSimon Pilgrim2017-12-011-9/+12
| | | | llvm-svn: 319553
OpenPOWER on IntegriCloud