summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [X86] Improved sched models for X86 XCHG*rr and XADD*rr instructions.Andrew V. Tischenko2018-08-0911-57/+14
| | | | | | Differential Revision: https://reviews.llvm.org/D49861 llvm-svn: 339321
* [clangd] Record the file being processed in a TUScheduler thread in context.Eric Liu2018-08-093-20/+45
| | | | | | | | | | | | | | | | | Summary: This allows implementations like different symbol indexes to know what the current active file is. For example, some customized index implementation might decide to only return results for some files. Reviewers: ilya-biryukov Reviewed By: ilya-biryukov Subscribers: javed.absar, MaskRay, jkorous, arphaman, cfe-commits Differential Revision: https://reviews.llvm.org/D50446 llvm-svn: 339320
* cmake: don't pack system libs unless CMAKE_INSTALL_UCRT_LIBRARIES is set ↵Hans Wennborg2018-08-091-1/+1
| | | | | | (PR38476) llvm-svn: 339319
* Enable getentropy for FreeBSD 12David Carlier2018-08-091-1/+6
| | | | | | | | | | | | As for Linux with its getrandom's syscall, giving the possibility to fill buffer with native call for good quality but falling back to /dev/urandom in worst case similarly. Reviewers: vitalybuka, krytarowski Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D48804 llvm-svn: 339318
* Correctly initialise global blocks on Windows.David Chisnall2018-08-092-2/+44
| | | | | | | | | | | | | | | | | | Summary: Windows does not allow globals to be initialised to point to globals in another DLL. Exported globals may be referenced only from code. Work around this by creating an initialiser that runs in early library initialisation and sets the isa pointer. Reviewers: rjmccall Reviewed By: rjmccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D50436 llvm-svn: 339317
* [NVPTX] Select atomic loads and storesJonas Hahnfeld2018-08-092-34/+170
| | | | | | | | | | | | | | | | | | | According to PTX ISA .volatile has the same memory synchronization semantics as .relaxed.sys, so it can be used to implement monotonic atomic loads and stores. This is important for OpenMP's atomic construct where - 'read's and 'write's are lowered to atomic loads and stores, and - an update of float or double types are lowered into a cmpxchg loop. (Note that PTX could do better because it has atom.add.f{32,64} but LLVM's atomicrmw instruction only allows integer types.) Higher levels of atomicity (like acquire and release) need additional synchronization properties which were added with PTX ISA 6.0 / sm_70. So using these instructions still results in an error. Differential Revision: https://reviews.llvm.org/D50391 llvm-svn: 339316
* [RISCV] Add "lla" pseudo-instruction to assemblerRoger Ferrer Ibanez2018-08-094-3/+103
| | | | | | | | | | | | | | | | | | | | | | | | This pseudo-instruction is similar to la but uses PC-relative addressing unconditionally. This is, la is only different to lla when using -fPIC. This pseudo-instruction seems often forgotten in several specs but it is definitely mentioned in binutils opcodes/riscv-opc.c. The semantics are defined both in page 37 of the "RISC-V Reader" book but also in function macro found in gas/config/tc-riscv.c. This is a very first step towards adding PIC support for Linux in the RISC-V backend. The lla pseudo-instruction expands to a sequence of auipc + addi with a couple of pc-rel relocations where the second points to the first one. This is described in https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md#pc-relative-symbol-addresses For now, this patch only introduces support of that pseudo instruction at the assembler parser. Differential Revision: https://reviews.llvm.org/D49661 llvm-svn: 339314
* Update isl-cpp bindingsTobias Grosser2018-08-093-17/+17
| | | | | | | | | We upstreamed the export of isl_val_2exp, to the official cpp bindings. In this process, we concluded that pow2 is a better and more widely used name for this functionality. Hence, both the official isl-cpp bindings and our derived variant use now the term pow2. llvm-svn: 339312
* Update to isl-0.20-65-gb822a210Tobias Grosser2018-08-0922-140/+341
| | | | | | | This update fixes https://https:/llvm.org/PR38348. Thanks Michael for reporting the issue to isl and Sven for fixing the issue. llvm-svn: 339311
* [LICM] Add tests for future hoisting of fence instructions [NFC]Philip Reames2018-08-091-0/+118
| | | | | | The main interesting case is a fence in an otherwise dead loop or one containing only arithmetic. This can happen as a result of DSE or other transforms from seemingly reasonable initial IR. llvm-svn: 339310
* [NFC] ConstantMerge: don't insert when find should be usedJF Bastien2018-08-091-2/+5
| | | | | | | | | | Summary: DenseMap's operator[] performs an insertion if the entry isn't found. The second phase of ConstantMerge isn't trying to insert anything: it's just looking to see if the first phased performed an insertion. Use find instead, avoiding insertion of every single global initializer in the map of constants. This has the side-effect of making all entries in CMap non-null (because only global declarations would have null initializers, and that would be a bug). Subscribers: dexonsmith, llvm-commits Differential Revision: https://reviews.llvm.org/D50476 llvm-svn: 339309
* [LICM] Add an assert to ensure all instruction types needing aliasing are ↵Philip Reames2018-08-091-0/+2
| | | | | | handled [NFC] llvm-svn: 339308
* [CMake] Use normalized Windows target triplesPetr Hosek2018-08-09100-116/+116
| | | | | | | | | | | Changes the default Windows target triple returned by GetHostTriple.cmake from the old environment names (which we wanted to move away from) to newer, normalized ones. This also requires updating all tests to use the new systems names in constraints. Differential Revision: https://reviews.llvm.org/D47381 llvm-svn: 339307
* Refactor attribute printing to be a bit more obviously-correct.Richard Smith2018-08-092-13/+21
| | | | | | No functionality change intended. llvm-svn: 339306
* Added another optimization pass to make vectorizing possibleEmmett Neyman2018-08-091-4/+16
| | | | | | | | | | | | | | Summary: I noticed that my code wasn't going deep into the loop vectorizer code so added another pass that makes it go further. Reviewers: morehouse, kcc Reviewed By: morehouse Subscribers: cfe-commits, llvm-commits Differential Revision: https://reviews.llvm.org/D50482 llvm-svn: 339305
* Delete some unreachable AST printing code.Richard Smith2018-08-091-16/+0
| | | | llvm-svn: 339304
* [libFuzzer] Increase the iteration limit in shrink.testGeorge Karpenkov2018-08-091-1/+1
| | | | | | | | | | | | | | After https://reviews.llvm.org/D48800, shrink.test started failing on x86_64h architecture. Looking into this, the optimization pass is too eager to unroll the loop on x86_64h, possibly leading to worse coverage data. Alternative solutions include not unrolling the loop when fuzzing, or disabling this test on that architecture. Differential Revision: https://reviews.llvm.org/D50484 llvm-svn: 339303
* [DWARF] Verifier now handles .debug_types sections.Paul Robinson2018-08-083-40/+67
| | | | | | Differential Revision: https://reviews.llvm.org/D50466 llvm-svn: 339302
* ELF: Only add libcall symbols to the link if defined in bitcode.Peter Collingbourne2018-08-085-4/+47
| | | | | | | | | | | | | | | | | Adding all libcall symbols to the link can have undesired consequences. For example, the libgcc implementation of __sync_val_compare_and_swap_8 on 32-bit ARM pulls in an .init_array entry that aborts the program if the Linux kernel does not support 64-bit atomics, which would prevent the program from running even if it does not use 64-bit atomics. This change makes it so that we only add libcall symbols to the link before LTO if we have to, i.e. if the symbol's definition is in bitcode. Any other required libcall symbols will be added to the link after LTO when we add the LTO object file to the link. Differential Revision: https://reviews.llvm.org/D50475 llvm-svn: 339301
* [x86] add test for commuted variant for fsub fold; NFCSanjay Patel2018-08-081-2/+21
| | | | llvm-svn: 339300
* [DAGCombiner] loosen constraints for fsub+fadd foldSanjay Patel2018-08-082-38/+51
| | | | | | | | | isNegatibleForFree() should not matter here (as the test diffs show) because it's always a win to replace an fsub+fadd with fneg. The problem in D50195 persists because either (1) we are doing these folds in the wrong order or (2) we're missing another fold for fadd. llvm-svn: 339299
* [DAGCombiner] move fadd simplification ahead of other foldsSanjay Patel2018-08-081-9/+6
| | | | | | | | | I don't know if it's possible to expose this diff in a test, but we should always try simplifications (no new nodes created) before more complicated transforms for efficiency (similar to what we do in IR). llvm-svn: 339298
* [Demangle] Add another test for ItaniumPartialDemanglerStefan Granitz2018-08-081-0/+45
| | | | | | | | | | | | Summary: Show the behavior of print operations in the ItaniumPartialDemangler. It's a summary of what the current integration in LLDB assumes. For new users this may be a useful example. Reviewers: erik.pilkington Subscribers: llvm-commits, lldb-commits Differential Revision: https://reviews.llvm.org/D50473 llvm-svn: 339297
* [VFS] Remove superfluous semicolon from unittest.Craig Topper2018-08-081-1/+1
| | | | llvm-svn: 339296
* [Builtins] Add __builtin_clrsb support to IntExprEvaluator::VisitBuiltinCallExprCraig Topper2018-08-082-3/+22
| | | | | | | | | | This addresses a FIXME that has existed since before clang supported the builtin. This time with only reviewed changes. Differential Revision: https://reviews.llvm.org/D50471 llvm-svn: 339295
* [ADT] Normalize empty triple componentsPetr Hosek2018-08-0834-325/+360
| | | | | | | | | | | | | | | | | LLVM triple normalization is handling "unknown" and empty components differently; for example given "x86_64-unknown-linux-gnu" and "x86_64-linux-gnu" which should be equivalent, triple normalization returns "x86_64-unknown-linux-gnu" and "x86_64--linux-gnu". autoconf's config.sub returns "x86_64-unknown-linux-gnu" for both "x86_64-linux-gnu" and "x86_64-unknown-linux-gnu". This changes the triple normalization to behave the same way, replacing empty triple components with "unknown". This addresses PR37129. Differential Revision: https://reviews.llvm.org/D50219 llvm-svn: 339294
* [x86] add tests for fsub+fadd with FMF; NFCSanjay Patel2018-08-081-3/+69
| | | | | | These are related to the block of code under review in D50195. llvm-svn: 339293
* Add ConstString test FromMidOfBufferStringRefStefan Granitz2018-08-081-0/+20
| | | | | | | | | | | | Summary: It was not immediately clear to me whether or not non-null-terminated StringRef's are supported in ConstString and/or the counterpart mechanism. From this test it seems to be fine. Maybe useful to keep? Reviewers: labath Subscribers: lldb-commits Differential Revision: https://reviews.llvm.org/D50334 llvm-svn: 339292
* Use rich mangling information in Symtab::InitNameIndexes()Stefan Granitz2018-08-0811-147/+730
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: I set up a new review, because not all the code I touched was marked as a change in old one anymore. In preparation for this review, there were two earlier ones: * https://reviews.llvm.org/D49612 introduced the ItaniumPartialDemangler to LLDB demangling without conceptual changes * https://reviews.llvm.org/D49909 added a unit test that covers all relevant code paths in the InitNameIndexes() function Primary goals for this patch are: (1) Use ItaniumPartialDemangler's rich mangling info for building LLDB's name index. (2) Provide a uniform interface. (3) Improve indexing performance. The central implementation in this patch is our new function for explicit demangling: ``` const RichManglingInfo * Mangled::DemangleWithRichManglingInfo(RichManglingContext &, SkipMangledNameFn *) ``` It takes a context object and a filter function and provides read-only access to the rich mangling info on success, or otherwise returns null. The two new classes are: * `RichManglingInfo` offers a uniform interface to query symbol properties like `getFunctionDeclContextName()` or `isCtorOrDtor()` that are forwarded to the respective provider internally (`llvm::ItaniumPartialDemangler` or `lldb_private::CPlusPlusLanguage::MethodName`). * `RichManglingContext` works a bit like `LLVMContext`, it the actual `RichManglingInfo` returned from `DemangleWithRichManglingInfo()` and handles lifetime and configuration. It is likely stack-allocated and can be reused for multiple queries during batch processing. The idea here is that `DemangleWithRichManglingInfo()` acts like a gate keeper. It only provides access to `RichManglingInfo` on success, which in turn avoids the need to handle a `NoInfo` state in every single one of its getters. Having it stored within the context, avoids extra heap allocations and aids (3). As instantiations of the IPD the are considered expensive, the context is the ideal place to store it too. An efficient filtering function `SkipMangledNameFn` is another piece in the performance puzzle and it helps to mimic the original behavior of `InitNameIndexes`. Future potential: * `DemangleWithRichManglingInfo()` is thread-safe, IFF using different contexts in different threads. This may be exploited in the future. (It's another thing that it has in common with `LLVMContext`.) * The old implementation only parsed and indexed Itanium mangled names. The new `RichManglingInfo` can be extended for various mangling schemes and languages. One problem with the implementation of RichManglingInfo is the inaccessibility of class `CPlusPlusLanguage::MethodName` (defined in source/Plugins/Language/..), from within any header in the Core components of LLDB. The rather hacky solution is to store a type erased reference and cast it to the correct type on access in the cpp - see `RichManglingInfo::get<ParserT>()`. At the moment there seems to be no better way to do it. IMHO `CPlusPlusLanguage::MethodName` should be a top-level class in order to enable forward delcarations (but that is a rather big change I guess). First simple profiling shows a good speedup. `target create clang` now takes 0.64s on average. Before the change I observed runtimes between 0.76s an 1.01s. This is still no bulletproof data (I only ran it on one machine!), but it's a promising indicator I think. Reviewers: labath, jingham, JDevlieghere, erik.pilkington Subscribers: zturner, clayborg, mgorny, lldb-commits Differential Revision: https://reviews.llvm.org/D50071 llvm-svn: 339291
* [IRMemoryMap] Shrink Allocation and make it move-only (NFC)Vedant Kumar2018-08-082-19/+20
| | | | | | | | | | | | | | | | | Profiling data show that Allocation::operator= is hot (see the data attached to the Phab review). Reorder a few fields within Allocation to avoid implicit structure padding and shrink the structure. This should make copies a bit cheaper. Also, given that an Allocation contains a std::vector (by way of DataBufferHeap), it's preferable to make it move-only instead of permitting expensive copies. As an added benefit this allows us to have a single Allocation constructor instead of two. Differential Revision: https://reviews.llvm.org/D50271 llvm-svn: 339290
* Revert r339287 "[Builtins] Add __builtin_clrsb support to ↵Craig Topper2018-08-082-24/+5
| | | | | | | | IntExprEvaluator::VisitBuiltinCallExpr" This add an additional unintended change in it. llvm-svn: 339289
* [DWARF] Unclamp line table version on Darwin for v5 and later.Jonas Devlieghere2018-08-085-13/+12
| | | | | | | | | On Darwin we pin the DWARF line tables to version 2. Stop doing so for DWARF v5 and later. Differential revision: https://reviews.llvm.org/D49381 llvm-svn: 339288
* [Builtins] Add __builtin_clrsb support to IntExprEvaluator::VisitBuiltinCallExprCraig Topper2018-08-082-5/+24
| | | | | | | | This addresses a FIXME that has existed since before clang supported the builtin. Differential Revision: https://reviews.llvm.org/D50471 llvm-svn: 339287
* [cmake] Append LLVM_VERSION_SUFFIX to SOVERSIONMichal Gorny2018-08-081-1/+1
| | | | | | | | | | | | | | | | | Append LLVM_VERSION_SUFFIX to SOVERSION. This makes it possible to use the suffix to differentiate binary-incompatible versions of LLVM built via BUILD_SHARED_LIBS. We are planning to use this to temporarily preserve ABI-incompatible variants of LLVM while switching the system between them, e.g. when rebuilding the system to use libc++. Normally this would mean that once LLVM is rebuilt using libc++ all the reverse dependencies become immediately broken. Using a distinct SOVERSION allows us to preserve the ABI compatibility before all the packages are rebuilt. Differential Revision: https://reviews.llvm.org/D39939 llvm-svn: 339286
* cmake: Store LLVM_VERSION_SUFFIX in LLVMConfig.cmakeMichal Gorny2018-08-081-0/+1
| | | | | | | | | | | | | | | | Store LLVM_VERSION_SUFFIX along with other version components in LLVMConfig.cmake. This fixes preserving the suffix set while building LLVM to stand-alone builds of other components, e.g. clang, and therefore improves uniformity between the two build models. Given that there is no apparent reason to omit this part of version, that it is distributed to subprojects when building as part of LLVM and that it is included in LLVM_PACKAGE_VERSION, I think it was omitted accidentally rather than done on purpose. Differential Revision: https://reviews.llvm.org/D43701 llvm-svn: 339285
* [Headers] Define *_HAS_SUBNORM for FLT, DBL, LDBLPirama Arumuga Nainar2018-08-082-0/+30
| | | | | | | | | | | | | | Summary: These macros are defined in the C11 standard and can be defined based on the __*_HAS_DENORM__ default macros. Reviewers: bruno, rsmith, doug.gregor Subscribers: llvm-commits, enh, srhines Differential Revision: https://reviews.llvm.org/D37302 llvm-svn: 339284
* [ARM] Avoid spilling lr with Thumb1 tail calls.Eli Friedman2018-08-082-32/+144
| | | | | | | | | | | | | | | Normally, if any registers are spilled, we prefer to spill lr on Thumb1 so we can fold the "bx lr" into the "pop". However, if there are tail calls involved, restoring lr is expensive, so skip the optimization in that case. The spill of r7 in the new test also isn't necessary, but that's mostly orthogonal to this patch. (It's the same code in ARMFrameLowering, but it's not related to tail calls.) Differential Revision: https://reviews.llvm.org/D49459 llvm-svn: 339283
* [Builtins] Implement __builtin_clrsb to be compatible with gccCraig Topper2018-08-083-0/+45
| | | | | | | | | | gcc defines an intrinsic called __builtin_clrsb which counts the number of extra sign bits on a number. This is equivalent to counting the number of leading zeros on a positive number or the number of leading ones on a negative number and subtracting one from the result. Since we can't count leading ones we need to invert negative numbers to count zeros. This patch will cause the builtin to be expanded inline while gcc uses a call to a function like clrsbdi2 that is implemented in libgcc. But this is similar to what we already do for popcnt. And I don't think compiler-rt supports clrsbdi2. Differential Revision: https://reviews.llvm.org/D50168 llvm-svn: 339282
* [CodeGen][Timers] Enable llvm::TimePassesIsEnabled when -ftime-report is ↵Craig Topper2018-08-081-0/+1
| | | | | | | | | | specified r330571 added a new FrontendTimesIsEnabled variable and replaced many usages of llvm::TimePassesIsEnabled. Including the place that set llvm::TimePassesIsEnabled for -ftime-report. The effect of this is that -ftime-report now only contains the timers specifically referenced in CodeGenAction.cpp and none of the timers in the backend. This commit adds back the assignment, but otherwise leaves everything else unchanged. llvm-svn: 339281
* Fix missing C++ mode comment in headerMatt Arsenault2018-08-081-1/+1
| | | | llvm-svn: 339280
* [WebAssembly] Group rodata into a single output segmentSam Clegg2018-08-082-34/+19
| | | | | | Differential Revision: https://reviews.llvm.org/D50424 llvm-svn: 339279
* AMDGPU: Fix enabling denormals by default on pre-VI targetsMatt Arsenault2018-08-084-75/+97
| | | | | | | | Fast FMAF is not a sufficient condition to enable denormals. Before VI, enabling denormals caused F32 instructions to run at F64 speeds. llvm-svn: 339278
* [macOS] stop generating the libclang_rt.10.4.a library for macOS 10.4Alex Lorenz2018-08-082-151/+0
| | | | | | | | The support for macOS 10.4 has been dropped by Xcode 10. rdar://42876880 llvm-svn: 339277
* revert tests of '[CodeGen] emit inline asm clobber list warnings for reserved'Ties Stuij2018-08-083-43/+0
| | | | llvm-svn: 339276
* [MS Demangler] Create a new backref context for template instantiations.Zachary Turner2018-08-082-33/+41
| | | | | | | | Template manglings use a fresh back-referencing context, so we need to do the same. This fixes several existing tests which are marked as FIXME, so those are now actually run. llvm-svn: 339275
* revert '[CodeGen] emit inline asm clobber list warnings for reserved'Ties Stuij2018-08-082-83/+32
| | | | llvm-svn: 339274
* CDDecl More automatic variable tail padding testJF Bastien2018-08-081-1/+20
| | | | | | Test tail padded automatic variable at different width, because they encounter different codegen. llvm-svn: 339273
* [Hexagon] Diagnose misaligned absolute loads and storesKrzysztof Parzyszek2018-08-085-92/+286
| | | | | | Differential Revision: https://reviews.llvm.org/D50405 llvm-svn: 339272
* AMDGPU: Error more gracefully on libcallsMatt Arsenault2018-08-082-0/+10
| | | | | | | I think this is the only situation where the callsite will have a null instruction. llvm-svn: 339271
* AMDGPU: Fix shifts for i128Matt Arsenault2018-08-082-0/+1051
| | | | llvm-svn: 339270
OpenPOWER on IntegriCloud