summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [AMDGPU] Construct memory clauses before RAStanislav Mekhanoshin2018-05-317-0/+976
| | | | | | | | | | | | | | | | | | Memory clauses are formed into bundles in presence of xnack. Their source operands are marked as early-clobber. This allows to allocate distinct source and destination registers within a clause and prevent breaking the clause with s_nop in the hazard recognizer. Clauses are undone before post-RA scheduler to allow some rescheduling, which will not break the clause since artificial edges are created in the dag to keep memory operations together. Yet this allows a better ILP in some cases. Differential Revision: https://reviews.llvm.org/D47511 llvm-svn: 333691
* Set m_struct_valid to initial value in ctor. Jason Molenda2018-05-311-1/+2
| | | | | | | | Patch from Tom Tromey <ttromey@mozilla.com>. Differential Revision: https://reviews.llvm.org/D47481 llvm-svn: 333690
* [InstCombine] narrow select to match condition operands' sizeSanjay Patel2018-05-314-137/+133
| | | | | | | | | | | | | This is the planned enhancement to D47163 / rL333611. We want to match cmp/select sizes because that will be recognized as min/max more easily and lead to better codegen (especially for vector types). As mentioned in D47163, this improves some of the tests that would also be folded by D46380, so we may want to adjust that patch to match the new patterns where the extend op occurs after the select. llvm-svn: 333689
* Update isl C++ bindingsTobias Grosser2018-05-311-0/+1267
| | | | | | | | | | | | | This update adds new list types and adds functions which convert isl data types to lists of their contained elements: isl::set::get_basic_set_list isl::union_set::get_set_list isl::map::get_basic_map_list isl::union_map::get_map_list llvm-svn: 333688
* [AMDGPU] Fixed incorrect -mcpu=gfx800 in xnor.ll test. NFC.Stanislav Mekhanoshin2018-05-311-1/+1
| | | | llvm-svn: 333687
* Fix rpath-link handlingTaiju Tsuiki2018-05-311-1/+1
| | | | | | | | | | | | | | | | Summary: After r333596, rpath-link no longer consumes the following argument, and the path argument left by it confuses LLD. Reviewers: espindola, ruiu Reviewed By: ruiu Subscribers: ruiu, emaste, arichardson, llvm-commits Differential Revision: https://reviews.llvm.org/D47591 llvm-svn: 333686
* [GISel]: Pattern matchers for GFSUB, GFNEGAditya Nandakumar2018-05-312-0/+25
| | | | | | | | | | https://reviews.llvm.org/D47547 Add matching templates for G_FSUB, and G_FNEG. Reviewed by: aemerson. llvm-svn: 333685
* [ORC] Add a getRequestedSymbols method to MaterializationResponsibility.Lang Hames2018-05-313-7/+101
| | | | | | | | | | | This method returns the set of symbols in the target VSO that have queries waiting on them. This can be used to make decisions about which symbols to delegate to another MaterializationUnit (typically this will involve delegating all symbols that have *not* been requested to another MaterializationUnit so that materialization of those symbols can be deferred until they are requested). llvm-svn: 333684
* [ORC] Rename IRMaterializationUnit's Discardable member to SymbolToDefinition,Lang Hames2018-05-312-6/+7
| | | | | | | | | | and make it protected rather than private. The new name reflects the actual information in the map, and this information can be useful to derived classes (for example, to quickly look up the IR definition of a requested symbol). llvm-svn: 333683
* [InstCombine] regenerate checks; NFCSanjay Patel2018-05-312-40/+41
| | | | llvm-svn: 333682
* [PPC64] Support R_PPC64_GOT_TLSLD16 relocations.Sean Fertile2018-05-315-1/+126
| | | | | | | | | Add support for the R_PPC64_GOT_TLSLD16 relocations used to build the address of the tls_index struct used in local-dynamic tls. Differential Revision: https://reviews.llvm.org/D47538 llvm-svn: 333681
* Fix null MSInheritanceAttr deref in CXXRecordDecl::getMSInheritanceModel()Reid Kleckner2018-05-317-14/+141
| | | | | | | | | | | | | | Ensure latest MPT decl has a MSInheritanceAttr when instantiating templates, to avoid null MSInheritanceAttr deref in CXXRecordDecl::getMSInheritanceModel(). See PR#37399 for repo / details. Patch by Andrew Rogers! Differential Revision: https://reviews.llvm.org/D46664 llvm-svn: 333680
* [analyzer] Annotate ProgramState update methods with LLVM_NODISCARD.Artem Dergachev2018-05-311-53/+62
| | | | | | | | | | | Because our program states are immutable, methods like "add<>", "set<>", "bind" create a copy of the program state instead of mutating the existing state. If the updated state is discarded, it clearly indicates a bug. Such bugs are introduced frequently, hence the warn_unused_result annotation. Differential Revision: https://reviews.llvm.org/D47499 llvm-svn: 333679
* Fix GCC 4.8.5 build by avoiding braced default member initializerReid Kleckner2018-05-311-1/+8
| | | | | | Use internal_memset instead. Should revive all Linux Chromium ToT bots. llvm-svn: 333678
* IRGen: Write .dwo files when -split-dwarf-file is used together with ↵Peter Collingbourne2018-05-314-1/+33
| | | | | | | | -fthinlto-index. Differential Revision: https://reviews.llvm.org/D47597 llvm-svn: 333677
* Relax GOTPCREL relocations for tail jmp instructions.Sriraman Tallam2018-05-312-0/+16
| | | | | | Differential Revision: https://reviews.llvm.org/D47563 llvm-svn: 333676
* [JumpThreading] Fix some strange formatting of code inside LLVM_DEBUG. NFCCraig Topper2018-05-311-5/+5
| | | | | | I don't know if clang-format got confused here or what. llvm-svn: 333675
* Rename R_TLSGD/R_TLSLD to add _GOT_FROM_END. NFC.Sean Fertile2018-05-314-13/+14
| | | | | | | | | getRelocTargetVA for R_TLSGD and R_TLSLD RelExprs calculate an offset from the end of the got, so adjust the names to reflect this. Differential Revision: https://reviews.llvm.org/D47379 llvm-svn: 333674
* PrintEscapedString -> printEscapedStringJonas Devlieghere2018-05-311-1/+1
| | | | | | Update PrintEscapedString after renaming it in ADT. llvm-svn: 333673
* [ADT] Annotate immutable list/set/map update methods with LLVM_NODISCARD.Artem Dergachev2018-05-313-6/+7
| | | | | | | | | | | Because immutable data structures are, well, immutable, methods like "append", "add", "set" create a copy of the list (set, map) instead of mutating the existing map. If the updated object is discarded, it clearly indicates a bug. Such bugs are introduced frequently, hence the warn_unused_result annotation. Differential Revision: https://reviews.llvm.org/D47496 llvm-svn: 333672
* [analyzer] Improve performance of the SVal simplification mechanism further.Artem Dergachev2018-05-311-6/+31
| | | | | | | | | | | Memoize simplification so that we didn't need to simplify the same symbolic expression twice within the same program state. Gives ~25% performance boost on the artificial test in test/Analysis/hangs.c. Differential Revision: https://reviews.llvm.org/D47402 llvm-svn: 333671
* [analyzer] Improve performance of the SVal simplification mechanism.Artem Dergachev2018-05-313-5/+58
| | | | | | | | | | | | When neither LHS nor RHS of a binary operator expression can be simplified, return the original expression instead of re-evaluating the binary operator. Such re-evaluation was causing recusrive re-simplification which caused the algorithmic complexity to explode. Differential Revision: https://reviews.llvm.org/D47155 llvm-svn: 333670
* [ADT] Make escaping fn conform to coding guidelinesJonas Devlieghere2018-05-318-26/+26
| | | | | | | | As noted by Adrian on llvm-commits, PrintHTMLEscaped and PrintEscaped in StringExtras did not conform to the LLVM coding guidelines. This commit rectifies that. llvm-svn: 333669
* [SimplifyLibcalls] [NFC] Cleanup, improvementsDavid Bolvansky2018-05-311-11/+9
| | | | | | | | | | | | | | | | Summary: * Use "find('%')" instead of loop to find '%' char (we already uses find('%') in optimizePrintFString..) * Convert getParent() chains to getModule()/getFunction() Reviewers: lebedev.ri, spatel Reviewed By: spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D47397 llvm-svn: 333668
* [MC] Fallback on DWARF when generating compact unwind on AArch64Francis Visoiu Mistrih2018-05-312-3/+26
| | | | | | | | | | | | | | | Instead of asserting when using the def_cfa directive with a register different from fp, fallback on DWARF. Easily triggered with: .cfi_def_cfa x1, 32; rdar://40249694 Differential Revision: https://reviews.llvm.org/D47593 llvm-svn: 333667
* Remove infinite recursion due to FileSpec change.Jonas Devlieghere2018-05-311-5/+3
| | | | | | | | | Fixes infinite recursion due to change in how FileSpec deals with removing the last path component. Fixes timout for TestMiniDumpNew.py llvm-svn: 333666
* [GlobalISel][Mips] LegalizerInfo verifier: Adding LegalizerInfo::verify(...) ↵Roman Tereshin2018-05-311-0/+2
| | | | | | | | | | | | call for Mips Reviewers: aemerson, qcolombet Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D46339 llvm-svn: 333665
* [GlobalISel][AMDGPU] LegalizerInfo verifier: Adding ↵Roman Tereshin2018-05-311-0/+1
| | | | | | | | | | | | LegalizerInfo::verify(...) call for AMDGPU Reviewers: aemerson, qcolombet Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D46339 llvm-svn: 333664
* [GlobalISel][ARM] LegalizerInfo verifier: Adding LegalizerInfo::verify(...) ↵Roman Tereshin2018-05-311-3/+5
| | | | | | | | | | | | call and fixing bugs exposed Reviewers: aemerson, qcolombet Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D46339 llvm-svn: 333663
* [GlobalISel][X86] LegalizerInfo verifier: Adding LegalizerInfo::verify(...) ↵Roman Tereshin2018-05-311-2/+3
| | | | | | | | | | | | call and fixing bugs exposed Reviewers: aemerson, qcolombet Reviewed By: qcolombet Differential Revision: https://reviews.llvm.org/D46339 llvm-svn: 333662
* [X86][SSE] Recognise splat rotations and expand back to shift ops.Simon Pilgrim2018-05-313-75/+60
| | | | | | Noticed while fixing PR37426, for splat rotations (rotation by an uniform value) its better to just expand back to shift ops than performing as a general non-uniform rotation. llvm-svn: 333661
* [X86][AVX] Add peekThroughEXTRACT_SUBVECTORs helper (NFCI)Simon Pilgrim2018-05-311-10/+10
| | | | | | We often need this for AVX1 128-bit integer ops as they may have been split from a 256-bit source. llvm-svn: 333660
* make GlobalValueSummary::getOriginalName() a const functionAditya Kumar2018-05-311-1/+1
| | | | | | | Differential Revision: https://reviews.llvm.org/D46962 Reviewers: craig.topper llvm-svn: 333659
* [DA] Fix direction vectors for weakZeroSrcSIVDavid Green2018-05-314-7/+109
| | | | | | | | | | Both weakZeroSrcSIV and weakZeroDstSIV are currently giving the same direction vectors. Fix weakZeroSrcSIVtest by flipping the directions it gives. Differential Revision: https://reviews.llvm.org/D46678 llvm-svn: 333658
* Add dump method for selectorsAditya Kumar2018-05-312-0/+4
| | | | | | | Differential Revision: https://reviews.llvm.org/D45935 Reviewers: compnerd llvm-svn: 333657
* [X86] Introduce WriteFLDC for x87 constant loads.Clement Courbet2018-05-3119-122/+130
| | | | | | | | | | | | | | | | | Summary: {FLDL2E, FLDL2T, FLDLG2, FLDLN2, FLDPI} were using WriteMicrocoded. - I've measured the values for Broadwell, Haswell, SandyBridge, Skylake. - For ZnVer1 and Atom, values were transferred form InstRWs. - For SLM and BtVer2, I've guessed some values :( Reviewers: RKSimon, craig.topper, andreadb Subscribers: gbedwell, llvm-commits Differential Revision: https://reviews.llvm.org/D47585 llvm-svn: 333656
* Remove name from unused options. NFC.Rui Ueyama2018-05-311-22/+22
| | | | | | This change makes it impossible to use these options in code. llvm-svn: 333655
* Fix formatting. NFC.Rui Ueyama2018-05-311-5/+5
| | | | llvm-svn: 333654
* Add a new driver mode to dump compiler feature and extension options.Aaron Ballman2018-05-319-207/+342
| | | | | | Add the ability to dump compiler option-related information to a JSON file via the -compiler-options-dump option. Specifically, it dumps the features/extensions lists -- however, this output could be extended to other information should it be useful. In order to support features and extensions, I moved them into a .def file so that we could build the various lists we care about from them without a significant increase in maintenance burden. llvm-svn: 333653
* lld-link: Implement /INTEGRITYCHECK flagNico Weber2018-05-315-1/+19
| | | | | | | | /INTEGRITYCHECK has the effect of setting IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY. Fixes PR31066. https://reviews.llvm.org/D47472 llvm-svn: 333652
* Use -Wextra spelling instead of -WNico Weber2018-05-311-1/+1
| | | | | | | No difference in behavior, but a bit easier to search for. https://reviews.llvm.org/D47490 llvm-svn: 333651
* [MCSchedule] Add the ability to compute the latency and throughput ↵Andrea Di Biagio2018-05-316-6/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | information for MCInst. This patch extends the MCSchedModel API with new methods that can be used to obtain the latency and reciprocal througput information for an MCInst. Scheduling models have recently gained the ability to resolve variant scheduling classes associated with MCInst objects. Before, models were only able to resolve a variant scheduling class from a MachineInstr object. This patch is mainly required by D47374 to avoid regressing a pair of x86 specific -print-schedule tests for btver2. Patch D47374 introduces a new variant class to teach the btver scheduling model (x86 target) how to correctly compute the latency profile for some zero-idioms using the new scheduling predicates. The new methods added by this patch would be mainly used by llc when flag -print-schedule is specified. In particular, tests that contain inline assembly require that code is parsed at code emission stage into a sequence of MCInst. That forces the print-schedule functionality to query the latency/rthroughput information for MCInst instructions too. If we don't expose this new API, then we lose "-print-schedule" test coverage as soon as variant scheduling classes are added to the x86 models. The tablegen SubtargetEmitter changes teaches how to query latency profile information using a object that derives from TargetSubtargetInfo. Note that this should really have been part of r333286. To avoid code duplication, the logic that "resolves" variant scheduling classes for MCInst, has been moved to a common place in MC. That logic is used by the "resolveVariantSchedClass" methods redefined in override by the tablegen'd GenSubtargetInfo classes. Differential Revision: https://reviews.llvm.org/D47536 llvm-svn: 333650
* Extend the GlobalObject metadata interfaceBenjamin Kramer2018-05-316-59/+64
| | | | | | | | | | | | - Make eraseMetadata return whether it changed something - Wire getMetadata for a single MDNode efficiently into the attachment map - Add hasMetadata, which is less weird than checking getMetadata == nullptr on a multimap. Use it to simplify code. llvm-svn: 333649
* Attempt to fix a buildbot.Rui Ueyama2018-05-311-1/+1
| | | | | | | Broken buildbot log: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/30855/steps/build/logs/stdio llvm-svn: 333648
* Fix a wrong `ld.lld --help` message.Rui Ueyama2018-05-311-1/+1
| | | | llvm-svn: 333647
* Implement --{push,pop}-state.Rui Ueyama2018-05-314-0/+66
| | | | | | | | | | | | | | | | | | | | --push-state implemented in this patch saves the states of --as-needed, --whole-archive and --static. It saves less number of flags than GNU linkers. Since even GNU linkers save different flags, no one seems to care about the details. In this patch, I tried to save the minimal number of flags to not complicate the implementation and the siutation. I'm not personally happy about adding the --{push,pop}-state flags though. That options seem too hacky to me. However, gcc started using the options since GCC 8 when GNU ld is available at the build time. Therefore, lld is no longer a drop-in replacmenet for GNU linker for that machine without supporting the flags. Fixes https://bugs.llvm.org/show_bug.cgi?id=34567 Differential Revision: https://reviews.llvm.org/D47542 llvm-svn: 333646
* [mips] Guard all short instructions correctly.Simon Dardis2018-05-315-33/+110
| | | | | | | | Reviewers: smaksimovic, atanasyan, abeserminji Differential Revision: https://reviews.llvm.org/D47533 llvm-svn: 333645
* Define SIZEOF_STRUCT_USTAT for 32bit sparc.Sylvestre Ledru2018-05-311-1/+1
| | | | | | | | Patch landed on gcc upstream: https://github.com/gcc-mirror/gcc/commit/27453e962b3fe2f918c5105b2a48ec3e92d4c873 Patch by Matthias Klose llvm-svn: 333644
* [InstCombine, ARM] Convert vld1 to llvm loadAlexandros Lamprineas2018-05-312-1/+148
| | | | | | | | | | Convert a vector load intrinsic into an llvm load instruction. This is beneficial when the underlying object being addressed comes from a constant, since we get constant-folding for free. Differential Revision: https://reviews.llvm.org/D46273 llvm-svn: 333643
* [X86] Extract latency of fldz/fld1 in separate classes.Clement Courbet2018-05-3119-56/+72
| | | | | | | | | | | | | | | | | Summary: - I've measured the values for Broadwell, Haswell, SandyBridge, Skylake. - For ZnVer1 and Atom, values were transferred form `InstRW`s. - For SLM and BtVer2, values are from Agner. This is split off from https://reviews.llvm.org/D47377 Reviewers: RKSimon, andreadb Subscribers: gbedwell, llvm-commits Differential Revision: https://reviews.llvm.org/D47523 llvm-svn: 333642
OpenPOWER on IntegriCloud