summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert "Address comments"Kadir Cetinkaya2018-11-153-179/+142
| | | | | | This reverts commit 19a39b14eab2b5339325e276262b177357d6b412. llvm-svn: 346943
* Revert "Address comments."Kadir Cetinkaya2018-11-153-82/+148
| | | | | | This reverts commit b43c4d1c731e07172a382567f3146b3c461c5b69. llvm-svn: 346942
* Address comments.Kadir Cetinkaya2018-11-153-148/+82
| | | | llvm-svn: 346941
* Address commentsKadir Cetinkaya2018-11-153-142/+179
| | | | llvm-svn: 346940
* clang-formatKadir Cetinkaya2018-11-152-4/+4
| | | | llvm-svn: 346939
* Introduce shard storage to auto-index.Kadir Cetinkaya2018-11-153-25/+233
| | | | | | | | | | Reviewers: sammccall, ioeric Subscribers: ilya-biryukov, jkorous, arphaman, cfe-commits Differential Revision: https://reviews.llvm.org/D54269 llvm-svn: 346938
* [RISCV] Introduce the RISCVMatInt::generateInstSeq helperAlex Bradbury2018-11-156-89/+149
| | | | | | | | | | | | | | | | | | | | | Logic to load 32-bit and 64-bit immediates is currently present in RISCVAsmParser::emitLoadImm in order to support the li pseudoinstruction. With the introduction of RV64 codegen, there is a greater benefit of sharing immediate materialisation logic between the MC layer and codegen. The generateInstSeq helper allows this by producing a vector of simple structs representing the chosen instructions. This can then be consumed in the MC layer to produce MCInsts or at instruction selection time to produce appropriate SelectionDAG node. Sharing this logic means that both the li pseudoinstruction and codegen can benefit from future optimisations, and that this logic can be used for materialising constants during RV64 codegen. This patch does contain a behaviour change: addi will now be produced on RV64 when no lui is necessary to materialise the constant. In that case addiw takes x0 as the source register, so is semantically identical to addi. Differential Revision: https://reviews.llvm.org/D52961 llvm-svn: 346937
* [X86] Add some custom type legalization rules for truncate with ↵Craig Topper2018-11-159-772/+388
| | | | | | | | -x86-experimental-vector-widening-legalization. This avoids some nasty shuffles when we have avx512. It will also prevent using zmm truncate instructions when a ymm instruction that zeroes part of an xmm register will do. Also avoid using avx512 truncate instructions when the input is 128 bits or less. These instructions are 2 uops on skx so we can probably find a better single uop shuffle like pshufb. llvm-svn: 346936
* [X86] Add -x86-experimental-vector-widening-legalization versions of ↵Craig Topper2018-11-153-0/+2787
| | | | | | shuffle-vs-trunc tests. llvm-svn: 346935
* [ELF] Fix compilation with GCC 5Martin Storsjo2018-11-151-1/+1
| | | | | | | | | | | | | | | | | | Remove the default initializer for TrapInstr; all subclasses overwrite the defaults in their constructors anyway. This fixes compilation errors like these, with GCC 5.4 on Ubuntu 16.04, present since SVN r346893: In file included from ../tools/lld/ELF/Arch/AArch64.cpp:12:0: ../tools/lld/ELF/Target.h:125:49: error: array must be initialized with a brace-enclosed initializer std::array<uint8_t, 4> TrapInstr = {0, 0, 0, 0}; ^ ../tools/lld/ELF/Target.h:125:49: error: too many initializers for ‘std::array<unsigned char, 4ul>’ Differential Revision: https://reviews.llvm.org/D54569 llvm-svn: 346934
* propagate __config_site includes when building benchmarksEric Fiselier2018-11-151-2/+10
| | | | llvm-svn: 346933
* Fix a use-after-free of the ABI plugin.Zachary Turner2018-11-151-8/+9
| | | | | | | | | | | This was introduced in r346775. Previously the ABI shared_ptr was declared as a function local static meaning it would live forever. After the change, someone has to create a strong reference to it or it will go away. In this code, we were calling ABI::FindPlugin(...).get(), so it was being immediately destroyed and we were holding onto a dangling pointer. llvm-svn: 346932
* [WebAssembly] Renumber SIMD bitwise instructionsThomas Lively2018-11-152-13/+13
| | | | | | | | | | | | Summary: Changed to match https://github.com/WebAssembly/simd/pull/54. Reviewers: aheejin Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D54561 llvm-svn: 346931
* NFC cleanup: Prefer make_unique over reset(new T())David Blaikie2018-11-151-40/+43
| | | | llvm-svn: 346929
* Fix combining pragma __debug dump & parser_crash with -EDavid Blaikie2018-11-153-4/+13
| | | | | | | | | | | | | | | | | | | | | | | Previously these would be transformed into annotation tokens and the preprocessor would then assume they were real tokens with source locations and assert/UB. Other pragmas that produce annotation tokens aren't a problem because they aren't handled if the parser isn't hooked up - ParsePragma.cpp registers those handlers & isn't run for pure preprocessing. So they're treated as unknown pragmas & printed verbatim by the preprocessor. Perhaps these pragmas should be treated the same way? But they got mixed in with other __debug pragmas that do need to be handled during preprocessing. The third __debug pragma that produces an annotation token is 'captured' - which had its own fix for this issue - by not inserting the annotation token in the first place if it detected that it was in preprocessing mode. I've removed that fix (from Lex/Pragma.cpp) in favor of the more general one in Frontend/PrintPreprocessedOutput.cpp. llvm-svn: 346928
* Rewrite-imports on crash: Simplify handlingDavid Blaikie2018-11-151-1/+1
| | | | | | | | | | -frewrite-imports already implies -frewrite-includes (it piggy-backs on/extends the implementation) so there's no need to conditionally pass -frewrite-includes when already using -frewrite-imports (& especially I don't think these would want to be different between crash reporting and not crash reporting) llvm-svn: 346927
* Stmt bits: Make ExprBits relative to StmtBitsDavid Blaikie2018-11-151-1/+1
| | | | | | | Seems like it makes it a bit easier to read/validate/update in the future. llvm-svn: 346926
* AMDGPU: Fix check lines in fdot2 test:Konstantin Zhuravlyov2018-11-151-6/+6
| | | | | | GCN900 -> GFX900 llvm-svn: 346925
* [commit-test] Add blank line for test/tools/llvm-objdump/symbol-table-elf.testXing GUO2018-11-151-0/+1
| | | | | | | | | | | | | | Summary: Test commit Reviewers: Higuoxing Reviewed By: Higuoxing Subscribers: llvm-commits, Higuoxing Differential Revision: https://reviews.llvm.org/D54562 llvm-svn: 346924
* AMDGPU: Enable code object v3 for AMDHSA onlyKonstantin Zhuravlyov2018-11-1545-182/+199
| | | | | | Differential Revision: https://reviews.llvm.org/D54186 llvm-svn: 346923
* Fix copy/paste mistake for r346919.Jonas Devlieghere2018-11-151-1/+1
| | | | llvm-svn: 346921
* Add setting to require hardware breakpoints.Jonas Devlieghere2018-11-1541-234/+666
| | | | | | | | | | | | | | | | When debugging read-only memory we cannot use software breakpoint. We already have support for hardware breakpoints and users can specify them with `-H`. However, there's no option to force LLDB to use hardware breakpoints internally, for example while stepping. This patch adds a setting target.require-hardware-breakpoint that forces LLDB to always use hardware breakpoints. Because hardware breakpoints are a limited resource and can fail to resolve, this patch also extends error handling in thread plans, where breakpoints are used for stepping. Differential revision: https://reviews.llvm.org/D54221 llvm-svn: 346920
* [reproducer] Post-commit cleanupJonas Devlieghere2018-11-153-8/+14
| | | | | | | | | After committing the initial reproducer feature I noticed a few small issues which warranted addressing here. It fixes incorrect documentation in the command object and extract some duplicated code into the debugger object. llvm-svn: 346919
* [WebAssembly] Initial support for shared objects (-shared)Sam Clegg2018-11-1511-17/+212
| | | | | | | | | | | | Based on the initial spec proposal: https://github.com/WebAssembly/tool-conventions/blob/master/DynamicLinking.md The llvm/codegen side of this is still missing but I believe this change is still worth landing as an incremental step Differential Revision: https://reviews.llvm.org/D54249 llvm-svn: 346918
* Work around C++03 decltype limitationsEric Fiselier2018-11-151-5/+5
| | | | llvm-svn: 346917
* [X86] Don't mark SEXTLOADS with narrow types as Custom with ↵Craig Topper2018-11-155-227/+139
| | | | | | | | -x86-experimental-vector-widening-legalization. The narrow types end up requesting widening, but generic legalization will end up scalaring and using a build_vector to do the widening. llvm-svn: 346916
* CGDecl::emitStoresForConstant fix synthesized constant's nameJF Bastien2018-11-1513-62/+90
| | | | | | | | | | | | Summary: The name of the synthesized constants for constant initialization was using mangling for statics, which isn't generally correct and (in a yet-uncommitted patch) causes the mangler to assert out because the static ends up trying to mangle function parameters and this makes no sense. Instead, mangle to `"__const." + FunctionName + "." + DeclName`. Reviewers: rjmccall Subscribers: dexonsmith, cfe-commits Differential Revision: https://reviews.llvm.org/D54055 llvm-svn: 346915
* Get tests compiling with -Wunused-local-typedefEric Fiselier2018-11-1551-94/+22
| | | | llvm-svn: 346914
* [MachineOutliner][NFC] Check if CandidatesForRepeatedSeq < 2Jessica Paquette2018-11-151-1/+1
| | | | | | There's no reason to call getOutliningCandidateInfo with a single candidate. llvm-svn: 346913
* [libcxx] [test] Fix Clang -Wunused-local-typedef warnings.Stephan T. Lavavej2018-11-144-20/+0
| | | | | | C++11's [hash.requirements] never required these typedefs from users. llvm-svn: 346912
* [libcxx] [test] Include <cassert> for assert().Stephan T. Lavavej2018-11-148-0/+8
| | | | | | This fixes compiler errors with MSVC's STL. llvm-svn: 346911
* [libcxx] [test] Fix MSVC warning C4800.Stephan T. Lavavej2018-11-141-6/+6
| | | | | | | | | | | | This was implicitly converting [1, 3] to bool, which triggers an MSVC warning. The test should just pass `true`, which is simpler, has the same behavior, and avoids the warning. (This is a library test, not a compiler test, and the conversion happens before calling `push_back`, so passing [1, 3] isn't interesting in any way. This resembles a previous change to stop passing `1 == 1` in the `vector<bool>` tests.) llvm-svn: 346910
* [X86] Remove unused variableBenjamin Kramer2018-11-141-1/+0
| | | | llvm-svn: 346909
* [X86] Support v2i32/v4i16/v8i8 load/store using f64 on 32-bit targets under ↵Craig Topper2018-11-144-243/+239
| | | | | | | | | | -x86-experimental-vector-widening-legalization. On 64-bit targets the type legalizer will use i64 to legalize these. But when i64 isn't legal, the type legalizer won't try an FP type. So do it manually instead. There are a few regressions in here due to some v2i32 operations like mul and div now being reassembled into a full vector just to store instead of storing the pieces. But this was already occuring in 64-bit mode so its not a new issue. llvm-svn: 346908
* [codeview] Make "clang -g" emit codeview by default when targetting MSVCReid Kleckner2018-11-1410-25/+80
| | | | | | | | | | | | | | | | | | | | Summary: If you're using the Microsoft ABI, chances are that you want PDBs and codeview debug info. Currently, everyone has to remember to specific -gcodeview by default, when it would be nice if the standard -g option did the right thing by default. Also, do some related cleanup of -cc1 options. When targetting the MS C++ ABI, we probably shouldn't pass -debugger-tuning=gdb. We were also passing -gcodeview twice, which is silly. Reviewers: smeenai, zturner Subscribers: aprantl, JDevlieghere, llvm-commits Differential Revision: https://reviews.llvm.org/D54499 llvm-svn: 346907
* Remove the expectedFlakeyDsym decorator. It's not useful anymore.Adrian Prantl2018-11-142-7/+0
| | | | llvm-svn: 346906
* Attempt to show progress bar in benchmark testsEric Fiselier2018-11-141-1/+1
| | | | llvm-svn: 346905
* Exclude check-cxx-benchmarks from the global test target.Eric Fiselier2018-11-141-2/+2
| | | | llvm-svn: 346904
* [X86] Update masked expandload/compressstore test namesSimon Pilgrim2018-11-141-55/+53
| | | | llvm-svn: 346903
* [InstSimplify] add more tests for funnel shift with select; NFCSanjay Patel2018-11-141-13/+78
| | | | | | | The cases are just different enough that we should have complete tests to avoid bugs from typos in the code. llvm-svn: 346902
* [MachineOutliner][NFC] Don't compute liveness if X16/X17/NZCV are unusedJessica Paquette2018-11-142-16/+39
| | | | | | | | | | | Using the MBB flags, we can tell if X16/X17/NZCV are unused in a block, and also not live out. If this holds for all MBBs, then we can avoid checking for liveness on that candidate. Furthermore, if it holds for an individual candidate's MBB, then we can avoid checking for liveness on that candidate. llvm-svn: 346901
* update xcode project file for reproducers.Jason Molenda2018-11-141-4/+26
| | | | llvm-svn: 346900
* Remove unused getMDNodeFwdRefOrNull interfaces (NFC)Teresa Johnson2018-11-142-13/+3
| | | | | | | | | | | | | | | Summary: Followup from D53596/r346891. Remove the getMDNodeFwdRefOrNull interface to the MDLoader since it is no longer used. Also improve error messages when the internal implementation is used within the MDLoader. Reviewers: steven_wu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D54542 llvm-svn: 346899
* [X86][SSE] Add SSE2/SSE42 masked load/store testsSimon Pilgrim2018-11-142-349/+1977
| | | | | | Now that the load/store tests are split the impact of running the tests on multiple (illegal) targets is a lot less impactful llvm-svn: 346896
* Bias physical register immediate assignmentsNirav Dave2018-11-1442-338/+443
| | | | | | | | | | | | | | | | | | | | | | | The machine scheduler currently biases register copies to/from physical registers to be closer to their point of use / def to minimize their live ranges. This change extends this to also physical register assignments from immediate values. This causes a reduction in reduction in overall register pressure and minor reduction in spills and indirectly fixes an out-of-registers assertion (PR39391). Most test changes are from minor instruction reorderings and register name selection changes and direct consequences of that. Reviewers: MatzeB, qcolombet, myatsina, pcc Subscribers: nemanjai, jvesely, nhaehnle, eraman, hiraditya, javed.absar, arphaman, jfb, jsji, llvm-commits Differential Revision: https://reviews.llvm.org/D54218 llvm-svn: 346894
* [ELF] Make TrapInstr and Filler byte arrays. NFC.Simon Atanasyan2018-11-149-29/+33
| | | | | | | | | | | | The uint32_t type does not clearly convey that these fields are interpreted in the target endianness. Converting them to byte arrays should make this more obvious and less error-prone. Patch by James Clarke Differential Revision: http://reviews.llvm.org/D54207 llvm-svn: 346893
* [c++20] Implement P0482R6: enable -fchar8_t by default in C++20 mode.Richard Smith2018-11-1411-78/+147
| | | | | | | | | | | | | This unfortunately results in a substantial breaking change when switching to C++20, but it's not yet clear what / how much we should do about that. We may want to add a compatibility conversion from u8 string literals to const char*, similar to how C++98 provided a compatibility conversion from string literals to non-const char*, but that's not handled by this patch. The feature can be disabled in C++20 mode with -fno-char8_t. llvm-svn: 346892
* [ThinLTO] Fix a crash in lazy loading of MetadataTeresa Johnson2018-11-143-2/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a revised version of D41474. When the debug location is parsed in BitcodeReader::parseFunction, the scope and inlinedAt MDNodes are obtained via MDLoader->getMDNodeFwdRefOrNull(), which will create a forward ref if they were not yet loaded. Specifically, if one of these MDNodes is in the module level metadata block, and this is during ThinLTO importing, that metadata block is lazily loaded. Most places in that invoke getMDNodeFwdRefOrNull have a corresponding call to resolveForwardRefsAndPlaceholders which will take care of resolving them. E.g. places that call getMetadataFwdRefOrLoad, or at the end of parsing a function-level metadata block, or at the end of the initial lazy load of module level metadata in order to handle invocations of getMDNodeFwdRefOrNull for named metadata and global object attachments. However, the calls for the scope/inlinedAt of debug locations are not backed by any such call to resolveForwardRefsAndPlaceholders. To fix this, change the scope and inlinedAt parsing to instead use getMetadataFwdRefOrLoad, which will ensure the forward refs to lazily loaded metadata are resolved. Fixes PR35472. llvm-svn: 346891
* [X86] Split masked load/store test filesSimon Pilgrim2018-11-142-465/+475
| | | | llvm-svn: 346889
* Rename cxx-benchmark-unittests target and convert to LIT.Eric Fiselier2018-11-147-22/+201
| | | | | | | | | | | | | | This patch renames the cxx-benchmark-unittests to check-cxx-benchmarks and converts the target to use LIT in order to make the tests run faster and provide better output. In particular this runs each benchmark in a suite one by one, allowing more parallelism while ensuring output isn't garbage with multiple threads. Additionally, it adds the CMake flag '-DLIBCXX_BENCHMARK_TEST_ARGS=<list>' to specify what options are passed when running the benchmarks. llvm-svn: 346888
OpenPOWER on IntegriCloud