summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't add a fragment expression when GlobalSRA splits up a single-member structAdrian Prantl2017-08-312-9/+65
| | | | | | | | Fixes PR34390. https://bugs.llvm.org/show_bug.cgi?id=34390 llvm-svn: 312196
* llvm-isel-fuzzer: Stop including FuzzerInterface.hJustin Bogner2017-08-312-3/+0
| | | | | | | | | All this does is forward declare the interface functions (and make sure that they're `extern "C"`), but since we're using libFuzzer from the toolchain it doesn't make sense to include the local copy of the interface. llvm-svn: 312195
* [MachineOutliner] Add missed optimization remarks for the outliner.Jessica Paquette2017-08-302-1/+109
| | | | | | | | | | | | | | This adds missed optimization remarks which report viable candidates that were not outlined because they would increase code size. Other remarks will come in separate commits. This will help to diagnose code size regressions and changes in outliner behaviour in projects using the outliner. https://reviews.llvm.org/D37085 llvm-svn: 312194
* Fix the test fix from r312181Hans Wennborg2017-08-303-5/+5
| | | | llvm-svn: 312193
* [yaml2obj][ELF] Make symbols optional for relocationsPetr Hosek2017-08-305-3/+54
| | | | | | | | | | | | | | | | Some kinds of relocations do not have symbols, like R_X86_64_RELATIVE for instance. I would like to test this case in D36554 but currently can't because symbols are required by yaml2obj. The other option is using the empty symbol but that doesn't seem quite right to me. This change makes the Symbol field of Relocation optional and in the case where the user does not specify a symbol name the Symbol index is 0. Patch by Jake Ehrlich Differential Revision: https://reviews.llvm.org/D37276 llvm-svn: 312192
* [cxx_status] Update to describe current status a bit better.Richard Smith2017-08-301-4/+5
| | | | llvm-svn: 312191
* [X86] Remove some code from fast isel that is no longer needed with i1 being ↵Craig Topper2017-08-301-31/+0
| | | | | | an illegal type. llvm-svn: 312190
* Finalize ASAN/NetBSDKamil Rytarowski2017-08-307-11/+7
| | | | | | | | | | | | | | | | | | | Summary: This revision contains various cleanups. Sponsored by <The NetBSD Foundation> Reviewers: kcc, vitalybuka, joerg, eugenis Reviewed By: kcc Subscribers: emaste, srhines, llvm-commits, kubamracek, mgorny, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D37244 llvm-svn: 312188
* [Sema] Make SpecialMemberDecl a PointerIntPair so we can stash it in a ↵Benjamin Kramer2017-08-301-2/+3
| | | | | | | | | SmallPtrSet. We have enough spare bits in the alignment of CXXRecordDecl. No functionality change intended. llvm-svn: 312186
* [SanitizeCoverage] Enable stack-depth coverage for -fsanitize=fuzzerMatt Morehouse2017-08-309-24/+51
| | | | | | | | | | | | | | | | | | Summary: - Don't sanitize __sancov_lowest_stack. - Don't instrument leaf functions. - Add CoverageStackDepth to Fuzzer and FuzzerNoLink. - Only enable on Linux. Reviewers: vitalybuka, kcc, george.karpenkov Reviewed By: kcc Subscribers: kubamracek, cfe-commits, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D37156 llvm-svn: 312185
* Add NetBSD support in lsan_interceptors.ccKamil Rytarowski2017-08-301-0/+1
| | | | | | | | | | | | | | | | | | | Summary: NetBSD is a modern POSIX-like UNIX-like Operating System derived from 4.4BSD/386BSD. Sponsored by <The NetBSD Foundation> Reviewers: joerg, vitalybuka, kcc, dvyukov Reviewed By: kcc Subscribers: llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D37307 llvm-svn: 312184
* Add preliminary NetBSD support in libfuzzerKamil Rytarowski2017-08-306-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: This code already works and passes some number of tests. There is need to finish remaining sanitizers to get better coverage. Many tests fail due to overly long file names of executables (>31). This is a current shortcoming of the NetBSD 8(beta) kernel, as certain functions can fail (like retrieving file name of executable). Sponsored by <The NetBSD Foundation> Reviewers: joerg, kcc, vitalybuka, george.karpenkov Reviewed By: kcc Subscribers: mgorny, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D37304 llvm-svn: 312183
* Revert r312139 "Verifier: Verify the correctness of fragment expressions ↵Hans Wennborg2017-08-302-41/+8
| | | | | | | | attached to globals." This caused PR34390. llvm-svn: 312182
* Fix tests for ARM targetsDouglas Yung2017-08-303-3/+3
| | | | | | | | | | Tests fail on ARM targets due to ABI name between define and void. Added reg ex to skip. Patch by Glenn Howe (and expanded on by Douglas Yung)! Differential Revision: https://reviews.llvm.org/D33410 llvm-svn: 312181
* [ARM] Replace fixed-size SmallSet with a bitset.Benjamin Kramer2017-08-301-30/+30
| | | | | | It's smaller. No functionality change. llvm-svn: 312180
* AMDGPU: Correct operand types for v_mad_mix*Matt Arsenault2017-08-306-495/+72
| | | | | | | | | | | | These aren't really packed instructions, so the default op_sel_hi should be 0 since this indicates a conversion. The operand types are scalar values that behave similar to an f16 scalar that may be converted to f32. Doesn't change the default printing for op_sel_hi, just the parsing. llvm-svn: 312179
* Revert r312154 "Re-enable "[MachineCopyPropagation] Extend pass to do COPY ↵Hans Wennborg2017-08-3078-886/+343
| | | | | | | | | | | | | | | | | | | | | | | | | | | source forwarding"" It caused PR34387: Assertion failed: (RegNo < NumRegs && "Attempting to access record for invalid register number!") > Issues identified by buildbots addressed since original review: > - Fixed ARMLoadStoreOptimizer bug exposed by this change in r311907. > - The pass no longer forwards COPYs to physical register uses, since > doing so can break code that implicitly relies on the physical > register number of the use. > - The pass no longer forwards COPYs to undef uses, since doing so > can break the machine verifier by creating LiveRanges that don't > end on a use (since the undef operand is not considered a use). > > [MachineCopyPropagation] Extend pass to do COPY source forwarding > > This change extends MachineCopyPropagation to do COPY source forwarding. > > This change also extends the MachineCopyPropagation pass to be able to > be run during register allocation, after physical registers have been > assigned, but before the virtual registers have been re-written, which > allows it to remove virtual register COPY LiveIntervals that become dead > through the forwarding of all of their uses. llvm-svn: 312178
* Simplify writeArchive return type.Rui Ueyama2017-08-306-23/+19
| | | | | | | | | | writeArchive returned a pair, but the first element of the pair is always its first argument on failure, so it doesn't make sense to return it from the function. This patch change the return type so that it does't return it. Differential Revision: https://reviews.llvm.org/D37313 llvm-svn: 312177
* Fix test after rL312144Konstantin Zhuravlyov2017-08-301-1/+1
| | | | llvm-svn: 312176
* Test-case golfing.Adrian Prantl2017-08-301-33/+17
| | | | llvm-svn: 312175
* Revert r312171: Support nested static libraries.Rui Ueyama2017-08-303-23/+0
| | | | | | | | This reverts commit r312171 because it is pointed out that that's not a correct fix (see https://bugs.llvm.org/show_bug.cgi?id=32674#c14) and also because it broke buildbots. llvm-svn: 312174
* [CodeGen][x86_64] Enable 'force_align_arg_pointer' attribute at x86_64Erich Keane2017-08-303-1/+20
| | | | | | | | | | | | | This attribute is useful in OS development when we jump from 32 to 64 bit code and expect that 64bit function forces correct stack alignment. Related discussion: http://lists.llvm.org/pipermail/cfe-dev/2017-June/054358.html Patch By: anatol.pomozov (anatol.pomozov@gmail.com) Differential Revision:https://reviews.llvm.org/D36272 llvm-svn: 312173
* [InstCombine] add more vector demand examples; NFCSanjay Patel2017-08-301-0/+34
| | | | | | | | See D37236 for discussion. It seems unlikely that we actually want/need to do this kind of folding in InstCombine in the long run, but moving everything will be a bigger follow-up step. llvm-svn: 312172
* Support nested static libraries.Rui Ueyama2017-08-303-0/+23
| | | | | | | | | | MSVC link.exe supports nested static libraries. That is, an .a file can contain other .a file as its member. It is reported that MySQL actually depends on this feature. Fixes https://bugs.llvm.org/show_bug.cgi?id=32674 llvm-svn: 312171
* Move a function from Driver.cpp to InputFile.cpp.Rui Ueyama2017-08-303-19/+21
| | | | | | | This patch doesn't improve code per se, but it should make the following patch's diff easier to read. llvm-svn: 312170
* SelectionDAG: Emit correct debug info for multi-register function arguments.Adrian Prantl2017-08-302-0/+98
| | | | | | | | | Previously we would just describe the first register and then call it quits. This patch emits fragment expressions for each register. <rdar://problem/34075307> llvm-svn: 312169
* [IR] Don't print "!DIExpression() = !DIExpression()" when dumpingReid Kleckner2017-08-302-1/+18
| | | | | | | | | Now that we print DIExpressions inline everywhere, we don't need to print them once as an operand and again as a value. This is only really visible when calling dump() or print() directly on a DIExpression during debugging. llvm-svn: 312168
* Let -Wdelete-non-virtual-dtor fire in system headers too.Nico Weber2017-08-304-16/+49
| | | | | | | | | | | | | Makes the warning useful again in a std::unique_ptr world, PR28460. Also make the warning not fire in unevaluated contexts, since system libraries (e.g. libc++) do do that. This would've been a good change before we started emitting this warning in system headers too, but "normal" code seems to be less template-heavy, so we didn't notice until now. https://reviews.llvm.org/D37235 llvm-svn: 312167
* [cppcoreguidelines] Don't rely on SmallPtrSet iteration order.Benjamin Kramer2017-08-302-15/+27
| | | | | | | The fixit emission breaks if the iteration order changes and also missed to emit fixits for some edge cases. llvm-svn: 312166
* Refactor DIBuilder::createFragmentExpression into a static DIExpression memberAdrian Prantl2017-08-307-55/+58
| | | | | | NFC llvm-svn: 312165
* [ARM] Use Swift error registers on non-Darwin targetsBrian Gesiak2017-08-302-2/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Remove a check for `ARMSubtarget::isTargetDarwin` when determining whether to use Swift error registers, so that Swift errors work properly on non-Darwin ARM32 targets (specifically Android). Before this patch, generated code would save and restores ARM register r8 at the entry and returns of a function that throws. As r8 is used as a virtual return value for the object being thrown, this gets overwritten by the restore, and calling code is unable to catch the error. In turn this caused Swift code that used `do`/`try`/`catch` to work improperly on Android ARM32 targets. Addresses Swift bug report https://bugs.swift.org/browse/SR-5438. Patch by John Holdsworth. Reviewers: manmanren, rjmccall, aschwaighofer Reviewed By: aschwaighofer Subscribers: srhines, aschwaighofer, aemerson, javed.absar, kristof.beyls, llvm-commits Differential Revision: https://reviews.llvm.org/D35835 llvm-svn: 312164
* [WebAssembly] Update debug info test after r312144Derek Schuff2017-08-301-1/+1
| | | | | | Add the expr field to the DIGlobalVariableExpression llvm-svn: 312163
* NewGVN: Make sure we add the correct user if we swapped the comparison operandsDaniel Berlin2017-08-301-2/+4
| | | | llvm-svn: 312162
* NewGVN: Allow simplification into variablesDaniel Berlin2017-08-301-22/+21
| | | | llvm-svn: 312161
* Add NetBSD support in tsan_interceptors.ccKamil Rytarowski2017-08-301-11/+36
| | | | | | | | | | | | | | | | | | | Summary: NetBSD is a POSIX-like BSD Operating System. Sponsored by <The NetBSD Foundation> Reviewers: joerg, kcc, vitalybuka, dvyukov, eugenis Reviewed By: dvyukov Subscribers: srhines, kubamracek, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D37305 llvm-svn: 312160
* Add NetBSD support in test/tsan/thread_name*.ccKamil Rytarowski2017-08-302-5/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: A snipped from the documentation of thread_setname_np(3): NAME pthread_getname_np - get and set descriptive name of a thread LIBRARY POSIX Threads Library (libpthread, -lpthread) SYNOPSIS #include <pthread.h> int pthread_getname_np(pthread_t thread, char *name, size_t len); int pthread_setname_np(pthread_t thread, const char *name, void *arg); Sponsored by <The NetBSD Foundation> Reviewers: joerg, dvyukov, eugenis, vitalybuka, kcc Reviewed By: dvyukov Subscribers: kubamracek, llvm-commits, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D37306 llvm-svn: 312159
* [GISel]: Add a clean up combiner during legalization.Aditya Nandakumar2017-08-3020-202/+487
| | | | | | | | | | | Added a combiner which can clean up truncs/extends that are created in order to make the types work during legalization. Also moved the combineMerges to the LegalizeCombiner. https://reviews.llvm.org/D36880 llvm-svn: 312158
* [fuzzer] Don't enable tests when the fuzzer isn't builtVedant Kumar2017-08-301-1/+4
| | | | | | | Should fix: http://green.lab.llvm.org/green/job/clang-stage2-coverage-R_build/1527 llvm-svn: 312157
* [GVNSink] Remove dependency on SmallPtrSet iteration order.Benjamin Kramer2017-08-301-0/+2
| | | | | | Found by LLVM_ENABLE_REVERSE_ITERATION. llvm-svn: 312156
* Re-enable "[MachineCopyPropagation] Extend pass to do COPY source forwarding"Geoff Berry2017-08-3078-343/+886
| | | | | | | | | | | | | | | | | | | | | | | Issues identified by buildbots addressed since original review: - Fixed ARMLoadStoreOptimizer bug exposed by this change in r311907. - The pass no longer forwards COPYs to physical register uses, since doing so can break code that implicitly relies on the physical register number of the use. - The pass no longer forwards COPYs to undef uses, since doing so can break the machine verifier by creating LiveRanges that don't end on a use (since the undef operand is not considered a use). [MachineCopyPropagation] Extend pass to do COPY source forwarding This change extends MachineCopyPropagation to do COPY source forwarding. This change also extends the MachineCopyPropagation pass to be able to be run during register allocation, after physical registers have been assigned, but before the virtual registers have been re-written, which allows it to remove virtual register COPY LiveIntervals that become dead through the forwarding of all of their uses. llvm-svn: 312154
* Now a ppc64le binary is correctly detected:Eugene Zemtsov2017-08-302-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (lldb) target create "tst" Current executable set to 'tst' (powerpc64le). (lldb) disassemble -n main tst`main: tst[0x7b0] <+0>: addis 2, 12, 2 tst[0x7b4] <+4>: addi 2, 2, 30544 tst[0x7b8] <+8>: mflr 0 Wihout the patch, the endianess was incorrect: (lldb) target create "tst" Current executable set to 'tst' (powerpc64). (lldb) disassemble -n main tst`main: tst[0x7b0] <+0>: .long 0x02004c3c ; unknown opcode tst[0x7b4] <+4>: rlwimi 23, 3, 8, 8, 28 tst[0x7b8] <+8>: lhzu 16, 2172(2) tst[0x7bc] <+12>: .long 0x100001f8 ; unknown opcode Simple binary used is identified as: $ file tst tst: ELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=17a8fa2b24ce2837ba6625fabb34e6b29c6c5db7, not stripped Patch by Gustavo Serra Scalet <gustavo.scalet@eldorado.org.br> Differential Revision: https://reviews.llvm.org/D36804 llvm-svn: 312151
* docs: typo fixHans Wennborg2017-08-301-4/+3
| | | | llvm-svn: 312149
* Adapt testcases to LLVM change r312144 in DIGlobalVariableExpressionAdrian Prantl2017-08-309-33/+33
| | | | llvm-svn: 312148
* Adapt testcase to LLVM change in DIGlobalVariableExpression.Adrian Prantl2017-08-301-1/+1
| | | | llvm-svn: 312147
* [X86] Remove unneed AVX512 check from fast isel.Craig Topper2017-08-301-2/+1
| | | | | | This is no longer necessary now that i1 is illegal. llvm-svn: 312146
* [WebAssembly] Add target feature for atomicsDerek Schuff2017-08-3010-11/+50
| | | | | | | | | | Summary: This tracks the WebAssembly threads feature proposal at https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md Differential Revision: https://reviews.llvm.org/D37300 llvm-svn: 312145
* Canonicalize the representation of empty an expression in ↵Adrian Prantl2017-08-30176-418/+424
| | | | | | | | | | | | | | | | DIGlobalVariableExpression This change simplifies code that has to deal with DIGlobalVariableExpression and mirrors how we treat DIExpressions in debug info intrinsics. Before this change there were two ways of representing empty expressions on globals, a nullptr and an empty !DIExpression(). If someone needs to upgrade out-of-tree testcases: perl -pi -e 's/(!DIGlobalVariableExpression\(var: ![0-9]*)\)/\1, expr: !DIExpression())/g' <MYTEST.ll> will catch 95%. llvm-svn: 312144
* [codeview] make DbgVariableLocation::extractFromMachineInstruction use OptionalBob Haarman2017-08-303-29/+31
| | | | | | | | | | | | | | | | Summary: DbgVariableLocation::extractFromMachineInstruction originally returned a boolean indicating success. This change makes it return an Optional<DbgVariableLocation> so we cannot try to access the fields of the struct if they aren't valid. Reviewers: aprantl, rnk, zturner Subscribers: llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D37279 llvm-svn: 312143
* docs: remove dead doxygen tarball linkHans Wennborg2017-08-301-1/+0
| | | | llvm-svn: 312142
* [clang-tidy] fix buildbotJonas Toth2017-08-301-7/+7
| | | | | | Use `signed char` instead of `char`. llvm-svn: 312141
OpenPOWER on IntegriCloud