summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [DwarfDebug] Skip entries to big for 16 bit size field in Dwarf < 5.Florian Hahn2019-03-192-1/+56
| | | | | | | | | | | | | | | | Nothing prevents entries from being bigger than the 16 bit size field in Dwarf < 5. For entries that are too big, just emit an empty entry instead of crashing. This fixes PR41038. Reviewers: probinson, aprantl, davide Reviewed By: probinson Differential Revision: https://reviews.llvm.org/D59518 llvm-svn: 356514
* [OPENMP]Warn if the different allocator is used for the variable.Alexey Bataev2019-03-195-16/+95
| | | | | | | | If the allocator was specified for the variable and next one is found with the different allocator, the warning is emitted, and the allocator is ignored. llvm-svn: 356513
* [libc++] Speed up certain locale functions on WindowsThomas Anderson2019-03-191-0/+6
| | | | | | | | | | | The issue is that __libcpp_locale_guard makes some slow calls to setlocale(). This change avoids using __libcpp_locale_guard in snprintf_l(). Fixes https://bugs.llvm.org/show_bug.cgi?id=41131 Differential Revision: https://reviews.llvm.org/D59525 llvm-svn: 356512
* [TailCallElim] Add tailcall elimination pass to LTO pipelinesRobert Lougher2019-03-194-0/+31
| | | | | | | | | | LTO provides additional opportunities for tailcall elimination due to link-time inlining and visibility of nocapture attribute. Testing showed negligible impact on compilation times. Differential Revision: https://reviews.llvm.org/D58391 llvm-svn: 356511
* Demanded elements support for masked.load and masked.gatherPhilip Reames2019-03-193-16/+36
| | | | | | | | Teach instcombine to propagate demanded elements through a masked load or masked gather instruction. This is in the broader context of improving vector pointer instcombine under https://reviews.llvm.org/D57140. Differential Revision: https://reviews.llvm.org/D57372 llvm-svn: 356510
* Delete more dead code.Zachary Turner2019-03-1921-318/+11
| | | | | | | | All of this is code that is unreferenced. Removing as much of this as possible makes it more easy to determine what functionality is missing and/or shared between LLVM and LLDB's DWARF interfaces. llvm-svn: 356509
* Add --unwindlib=[libgcc|compiler-rt] to parallel --rtlib= [take 2]Sterling Augustine2019-03-198-35/+186
| | | | | | | | | | | | | | | | | | | | "clang++ hello.cc --rtlib=compiler-rt" now can works without specifying additional unwind or exception handling libraries. This reworked version of the feature no longer modifies today's default unwind library for compiler-rt: which is nothing. Rather, a user can specify -DCLANG_DEFAULT_UNWINDLIB=libunwind when configuring the compiler. This should address the issues from the previous version. Update tests for new --unwindlib semantics. Differential Revision: https://reviews.llvm.org/D59109 llvm-svn: 356508
* Move options to separate checks that do not need to immediately follow the ↵Douglas Yung2019-03-191-2/+4
| | | | | | previous option. NFCI llvm-svn: 356507
* CodeGen: Refactor regallocator command line and target selectionMatt Arsenault2019-03-195-43/+70
| | | | | | | | | | This will allow targets more flexibility to replace the register allocator core passes. In a future commit, AMDGPU will run the core register assignment passes twice, and will also want to disallow using the standard -regalloc option. llvm-svn: 356506
* Revert "[libc++] Build <filesystem> support as part of the dylib"Louis Dionne2019-03-19163-210/+14305
| | | | | | | | When I applied r356500 (https://reviews.llvm.org/D59152), I somehow deleted all of filesystem's tests. I will revert r356500 and re-apply it properly. llvm-svn: 356505
* Fix char.traits.specializations.char8_t main returnJF Bastien2019-03-194-0/+4
| | | | llvm-svn: 356504
* Fixup ABI lists on Linux after adding <filesystem> to the dylib.Eric Fiselier2019-03-191-0/+71
| | | | llvm-svn: 356503
* Add visibility attributes and inline to some vector methods.Eric Fiselier2019-03-191-3/+8
| | | | | | | Adding filesystem to the dylib caused some vector symbols to leak into the set of exported symbols. This patch hides those symbols. llvm-svn: 356502
* RegAllocFast: Do not allocate registers for undef usesMatt Arsenault2019-03-191-0/+48
| | | | | | | | | | Do not actually allocate a register for an undef use. Previously we we would create unnecessary reload instruction for undef uses where the register wasn't live. Patch by Matthias Braun llvm-svn: 356501
* [libc++] Build <filesystem> support as part of the dylibLouis Dionne2019-03-19163-14305/+210
| | | | | | | | | | | | | | | | Summary: This patch treats <filesystem> as a first-class citizen of the dylib, like all other sub-libraries (e.g. <chrono>). As such, it also removes all special handling for installing the filesystem library separately or disabling part of the test suite from the lit command line. Reviewers: mclow.lists, EricWF, serge-sans-paille Subscribers: mgorny, christof, jkorous, dexonsmith, jfb, jdoerfert, libcxx-commits Differential Revision: https://reviews.llvm.org/D59152 llvm-svn: 356500
* RegAllocFast: Remove early selection loop, the spill calculation will report ↵Matt Arsenault2019-03-1934-2767/+4082
| | | | | | | | | | | | | | | | cost 0 anyway for free regs The 2nd loop calculates spill costs but reports free registers as cost 0 anyway, so there is little benefit from having a separate early loop. Surprisingly this is not NFC, as many register are marked regDisabled so the first loop often picks up later registers unnecessarily instead of the first one available in the allocation order... Patch by Matthias Braun llvm-svn: 356499
* Fix for ABS legalization on PPC buildbot.Simon Pilgrim2019-03-192-2/+4
| | | | llvm-svn: 356498
* Fix unused variable warning. NFCI.Simon Pilgrim2019-03-191-1/+1
| | | | llvm-svn: 356497
* [OPENMP]Check that global vars require predefined allocator.Alexey Bataev2019-03-193-1/+45
| | | | | | | | | | According to OpenMP, 2.11.3 allocate Directive, Restrictions, C / C++, if a list item has a static storage type, the allocator expression in the allocator clause must be a constant expression that evaluates to one of the predefined memory allocator values. Added check for this restriction. llvm-svn: 356496
* Remove some dead DWARF enum -> string conversion functions.Zachary Turner2019-03-192-258/+0
| | | | llvm-svn: 356495
* Allow unordered loads to be considered invariant in CodeGenPhilip Reames2019-03-194-12/+27
| | | | | | | | | | The actual code change is fairly straight forward, but exercising it isn't. First, it turned out we weren't adding the appropriate flags in SelectionDAG. Second, it turned out that we've got some optimization gaps, so obvious test cases don't work. My first attempt (in atomic-unordered.ll) points out a deficiency in our peephole-opt folding logic which I plan to fix separately. Instead, I'm exercising this through MachineLICM. Differential Revision: https://reviews.llvm.org/D59375 llvm-svn: 356494
* Fix fenv.pass.cpp signature for mainJF Bastien2019-03-191-3/+1
| | | | | | And make main return. llvm-svn: 356493
* Revert "[Remarks] Add a new Remark / RemarkParser abstraction"Francis Visoiu Mistrih2019-03-1914-1484/+847
| | | | | | | | | This reverts commit 51dc6a8c84cd6a58562e320e1828a0158dbbf750. Breaks http://lab.llvm.org:8011/builders/clang-cmake-x86_64-sde-avx512-linux/builds/20034/steps/build%20stage%201/logs/stdio. llvm-svn: 356492
* [Remarks] Add a new Remark / RemarkParser abstractionFrancis Visoiu Mistrih2019-03-1914-847/+1484
| | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a Remark class that allows us to share code when working with remarks. The C API has been updated to reflect this. Instead of the parser generating C structs, it's now using a C++ object that is used through opaque pointers in C. This gives us much more flexibility on what changes we can make to the internal state of the object and interacts much better with scenarios where the library is used through dlopen. * C API updates: * move from C structs to opaque pointers and functions * the remark type is now an enum instead of a string * unit tests updates: * use mostly the C++ API * keep one test for the C API * rename to YAMLRemarksParsingTest * a typo was fixed: AnalysisFPCompute -> AnalysisFPCommute. * a new error message was added: "expected a remark tag." * llvm-opt-report has been updated to use the C++ parser instead of the C API Differential Revision: https://reviews.llvm.org/D59049 llvm-svn: 356491
* Delete dead code.Zachary Turner2019-03-1923-716/+1
| | | | | | | | | | Most of these are Dump functions that are never called, but there is one instance of entire unused classes (DWARFDebugMacinfo and DWARFDebugMacinfoEntry) which are also unreferenced in the codebase). Differential Revision: https://reviews.llvm.org/D59276 llvm-svn: 356490
* [ValueTracking] Use computeConstantRange() for unsigned add/sub overflowNikita Popov2019-03-195-33/+37
| | | | | | | | | | | | | | | | | | Improve computeOverflowForUnsignedAdd/Sub in ValueTracking by intersecting the computeConstantRange() result into the ConstantRange created from computeKnownBits(). This allows us to detect some additional never/always overflows conditions that can't be determined from known bits. This revision also adds basic handling for constants to computeConstantRange(). Non-splat vectors will be handled in a followup. The signed case will also be handled in a followup, as it needs some more groundwork. Differential Revision: https://reviews.llvm.org/D59386 llvm-svn: 356489
* [libc++] Mark internal types of std::filesystem as hiddenLouis Dionne2019-03-191-3/+3
| | | | | | | | | | | | | | | | | | Summary: Otherwise, implicit instantiations of templates with these types can cause the dylib to start exporting the vtable/RTTI of the instantiation. Giving hidden visibility to those types causes the compiler to understand that they are not used outside the dylib, and as a result implicitly instantiated vtables/RTTI of templates with those internal types will get hidden visibility. Reviewers: EricWF Subscribers: christof, jkorous, dexonsmith, jdoerfert, libcxx-commits Differential Revision: https://reviews.llvm.org/D59550 llvm-svn: 356488
* [ScriptInterpreterPython] Remove dead code.Davide Italiano2019-03-191-16/+0
| | | | llvm-svn: 356487
* [StackFrameRecognizer] Remove unneeded LLDB_DISABLE_PYTHON.Davide Italiano2019-03-192-8/+0
| | | | llvm-svn: 356486
* gn build: Merge r356387.Peter Collingbourne2019-03-191-0/+1
| | | | llvm-svn: 356485
* gn build: Merge r356451.Peter Collingbourne2019-03-191-0/+1
| | | | llvm-svn: 356484
* [X86][SSE] SimplifyDemandedVectorEltsForTargetNode - handle repeated shift ↵Simon Pilgrim2019-03-193-40/+48
| | | | | | | | amounts If a value with multiple uses is only ever used for SSE shift amounts then we know that only the bottom 64-bits are needed. llvm-svn: 356483
* [AtomicExpand] Fix a crash bug when lowering unordered loads to cmpxchgPhilip Reames2019-03-192-24/+213
| | | | | | Add tests for wider atomic loads and stores. In the process, fix a crasher where we appearently handled unorder stores, but not loads, when lowering to cmpxchg idioms. llvm-svn: 356482
* [lldb] [Reproducer] Move SBRegistry registration into declaring filesMichal Gorny2019-03-1969-2905/+3521
| | | | | | | | | | | | Move SBRegistry method registrations from SBReproducer.cpp into files declaring the individual APIs, in order to reduce the memory consumption during build and improve maintainability. The current humongous SBRegistry constructor exhausts all memory on a NetBSD system with 4G RAM + 4G swap, therefore making it impossible to build LLDB. Differential Revision: https://reviews.llvm.org/D59427 llvm-svn: 356481
* [OPENMP]Remove unused parameter, NFC.Alexey Bataev2019-03-195-14/+12
| | | | | | | Parameter CodeGenModule &CGM is not required for CGOpenMPRuntime member functions, since class holds the reference to the CGM. llvm-svn: 356480
* [OpenCL] Minor improvements in default header testingAnastasia Stulova2019-03-191-6/+5
| | | | | | Differential Revision: https://reviews.llvm.org/D59544 llvm-svn: 356479
* [MIPS][microMIPS] Enable dynamic stack realignmentSimon Atanasyan2019-03-192-15/+31
| | | | | | | | | | | | Dynamic stack realignment was disabled on micromips by checking if target has standard encoding. We simply change the condition to skip Mips16 only. Patch by Mirko Brkusanin. Differential Revision: http://reviews.llvm.org/D59499 llvm-svn: 356478
* [NFC] Fix unused variable in release buildsJordan Rupprecht2019-03-191-2/+2
| | | | | | This was introduced in rL356468. llvm-svn: 356477
* [DAGCombine] Fix a miscompile when reducing BUILD_VECTORs to a shuffleJustin Bogner2019-03-192-11/+57
| | | | | | | | | | | | | | | | | | In r311255 we added a case where we split vectors whose elements are all derived from the same input vector so that we could shuffle it more efficiently. In doing so, createBuildVecShuffle was taught to adjust for the fact that all indices would be based off of the first vector when this happens, but it's possible for the code that checked that to fire incorrectly if we happen to have a BUILD_VECTOR of extracts from subvectors and don't hit this new optimization. Instead of trying to detect if we've split the vector by checking if we have extracts from the same base vector, we can just pass that information into createBuildVecShuffle, avoiding the miscompile. Differential Revision: https://reviews.llvm.org/D59507 llvm-svn: 356476
* [Sema] Adjust addr space of reference operand in compound assignmentAnastasia Stulova2019-03-192-15/+20
| | | | | | | | | | When we create overloads for the builtin compound assignment operators we need to preserve address space for the reference operand taking it from the argument that is passed in. Differential Revision: https://reviews.llvm.org/D59367 llvm-svn: 356475
* Fix unused variable warning. NFCI.Simon Pilgrim2019-03-191-2/+1
| | | | llvm-svn: 356474
* [Tests] Update to newer ISAPhilip Reames2019-03-191-67/+179
| | | | | | There are some issues w/missed opts on older platforms, but that's not the purpose of this test. Using a newer API points out that some TODOs are already handled, and allows addition of tests to exercise other issues (future patch.) llvm-svn: 356473
* [OPENMP] Codegen for local variables with the allocate pragma.Alexey Bataev2019-03-195-8/+220
| | | | | | | | Added initial codegen for the local variables with the #pragma omp allocate directive. Instead of allocating the variables on the stack, __kmpc_alloc|__kmpc_free functions are used for memory (de-)allocation. llvm-svn: 356472
* [InstCombine] fold logic-of-nan-fcmps (PR41069)Sanjay Patel2019-03-193-32/+68
| | | | | | | | | | | | | | | Combine 2 fcmps that are checking for nan-ness: and (fcmp ord X, 0), (and (fcmp ord Y, 0), Z) --> and (fcmp ord X, Y), Z or (fcmp uno X, 0), (or (fcmp uno Y, 0), Z) --> or (fcmp uno X, Y), Z This is an exact match for a minimal reassociation pattern. If we want to handle this more generally that should go in the reassociate pass and allow removing this code. This should fix: https://bugs.llvm.org/show_bug.cgi?id=41069 llvm-svn: 356471
* [AMDGPU] Add convergent attribute to WWM.Neil Henning2019-03-191-1/+1
| | | | | | | | | Add the convergent attribute to the WWM intrinsic to stop it ever being sunk out of cfg. Differential Revision: https://reviews.llvm.org/D59536 llvm-svn: 356470
* Remove a couple of log statements.Zachary Turner2019-03-193-60/+1
| | | | | | | | | | | | | These log statements have questionable value, and hinder the effort of separating the high and low level DWARF parsing interfaces inside of LLDB. Removing them for now, and if/when we need such log statements again in the future, we can add them back (if possible) or introduce a mechanism for logging from the low-level interface in such a way that it isn't coupled to the high level interface. Differential Revision: https://reviews.llvm.org/D59498 llvm-svn: 356469
* [SelectionDAG] Handle unary SelectPatternFlavor for ABS case in ↵Simon Pilgrim2019-03-1911-110/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SelectionDAGBuilder::visitSelect These changes are related to PR37743 and include: SelectionDAGBuilder::visitSelect handles the unary SelectPatternFlavor::SPF_ABS case to build ABS node. Delete the redundant recognizer of the integer ABS pattern from the DAGCombiner. Add promoting the integer ABS node in the LegalizeIntegerType. Expand-based legalization of integer result for the ABS nodes. Expand-based legalization of ABS vector operations. Add some integer abs testcases for different typesizes for Thumb arch Add the custom ABS expanding and change the SAD pattern recognizer for X86 arch: The i64 result of the ABS is expanded to: tmp = (SRA, Hi, 31) Lo = (UADDO tmp, Lo) Hi = (XOR tmp, (ADDCARRY tmp, hi, Lo:1)) Lo = (XOR tmp, Lo) The "detectZextAbsDiff" function is changed for the recognition of pattern with the ABS node. Given a ABS node, detect the following pattern: (ABS (SUB (ZERO_EXTEND a), (ZERO_EXTEND b))). Change integer abs testcases for codegen with the ABS node support for AArch64. Indicate that the ABS is legal for the i64 type when the NEON is supported. Change the integer abs testcases to show changing of codegen. Add combine and legalization of ABS nodes for Thumb arch. Extend 'matchSelectPattern' to recognize the ABS patterns with ICMP_SGE condition. For discussion, see https://bugs.llvm.org/show_bug.cgi?id=37743 Patch by: @ikulagin (Ivan Kulagin) Differential Revision: https://reviews.llvm.org/D49837 llvm-svn: 356468
* [TSan][libdispatch] Avoid infinite recursion in dispatch_apply[_f] interceptorsJulian Lettner2019-03-191-9/+29
| | | | | | | | | | | | | | | | | In libdispatch, dispatch_apply is implemented in terms of dispatch_apply_f. Unfortunately, this means that we can't implement the interceptor for dispatch_apply_f by forwarding to the dispatch_apply interceptor. In the interceptor dispatch_apply_f, we can't use WRAP(dispatch_apply). WRAP(dispatch_apply) -> REAL(dispatch_apply_f). Requires duplication of some setup code. Reviewed By: kubamracek Differential Revision: https://reviews.llvm.org/D59526 llvm-svn: 356467
* [llvm-ar] Support N [count] modifierJordan Rupprecht2019-03-192-8/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: GNU ar supports the 'N' count modifier for the extract (x) and delete (d) operations. When an archive contains multiple members with the same name, this can be used to extract (or delete) them individually. For example: ``` $ llvm-ar t archive.a foo foo $ llvm-ar x archive.a -> Writes foo twice, overwriting it the second time :( :( $ llvm-ar xN 1 archive.a foo && mv foo foo.1 $ llvm-ar xN 2 archive.a foo && mv foo foo.2 -> Write foo twice, renaming it in between invocations to preserve all versions ``` Reviewers: ruiu, MaskRay Reviewed By: ruiu, MaskRay Subscribers: jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59503 llvm-svn: 356466
* [AMDGPU] Add buffer/load 8/16 bit overloaded intrinsicsRyan Taylor2019-03-1913-3/+555
| | | | | | | | | | | | | | | Summary: Add buffer store/load 8/16 overloaded intrinsics for buffer, raw_buffer and struct_buffer Change-Id: I166a29f071b2ff4e4683fb0392564b1f223ac61d Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59265 llvm-svn: 356465
OpenPOWER on IntegriCloud