summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Don't create a comdat group for a dropped def with initializerTeresa Johnson2017-01-182-2/+24
| | | | | | | | | | | | | | | | | | Non-prevailing weak/linkonce odr symbols will be dropped by ThinLTO to available_externally when possible. If they had an initializer in the global_ctors list, a comdat group was being created. This code already had logic to skip available_externally defs, but now the EliminateAvailableExternally pass will drop these symbols to declarations earlier. Change the check to skip all declarations for linker (which includes available_externally along with declarations). Reviewers: mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28737 llvm-svn: 292408
* Revert 292404 due to buildbot failures.Kirill Bobyrev2017-01-182-5/+5
| | | | llvm-svn: 292407
* [X86] Minor code cleanup to fix several clang-tidy warnings. NFCKirill Bobyrev2017-01-182-5/+5
| | | | llvm-svn: 292404
* [ARM] Create SubtargetFeatures from build attrsSam Parker2017-01-1810-42/+322
| | | | | | | | | | | An ELFObjectFile can now create SubtargetFeatures from the available ARM build attributes, in a similar manner to MIPS. I've moved the MIPS code into its own function and the ARM handler also has a separate function. Differential Revision: https://reviews.llvm.org/D28291 llvm-svn: 292403
* raw_fd_ostream: Make file handles non-inheritable by defaultPavel Labath2017-01-181-2/+2
| | | | | | | | | | | | | | | | Summary: This makes the file descriptors on unix platform non-inheritable (O_CLOEXEC). There is no change in behavior on windows, as the handles were already non-inheritable there. Reviewers: rnk, rafael Subscribers: llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D28854 llvm-svn: 292401
* [Assembler] Fix crash when assembling .quad for AArch32.Chad Rosier2017-01-182-1/+11
| | | | | | | | | | | A 64-bit relocation does not exist in 32-bit ARMELF. Report an error instead of crashing. PR23870 Patch by Sanne Wouda (sanwou01). Differential Revision: https://reviews.llvm.org/D28851 llvm-svn: 292373
* [thumb,framelowering] Reset NoVRegs in Thumb1FrameLowering::emitPrologue.Florian Hahn2017-01-182-0/+6
| | | | | | | | | | | | | | | | | | | | | | | Summary: In this function, virtual registers can be introduced (for example through calls to emitThumbRegPlusImmInReg). doScavengeFrameVirtualRegs will replace those virtual registers with concrete registers later on in PrologEpilogInserter, which sets NoVRegs again. This patch fixes the Codegen/Thumb/segmented-stacks.ll test case which failed with expensive checks. https://llvm.org/bugs/show_bug.cgi?id=27484 Reviewers: rnk, bkramer, olista01 Reviewed By: olista01 Subscribers: llvm-commits, rengolin Differential Revision: https://reviews.llvm.org/D28829 llvm-svn: 292372
* [InstCombine][AVX2] Add DemandedElts support for VPERMD/VPERMPS shufflesSimon Pilgrim2017-01-182-8/+8
| | | | | | Simplify a vpermv shuffle mask based on the elements of the mask that are actually demanded. llvm-svn: 292371
* Re-revert: [globalisel] Tablegen-erate current Register Bank InformationDaniel Sanders2017-01-1816-437/+193
| | | | | | | More missing guards. My build didn't notice it due to a stale file left over from a Global ISel build. llvm-svn: 292369
* [InstCombine][AVX2] Tests showing missed opportunities to pass demanded elts ↵Simon Pilgrim2017-01-181-0/+27
| | | | | | through a vpermd/vpermps shuffle llvm-svn: 292368
* Re-commit: [globalisel] Tablegen-erate current Register Bank InformationDaniel Sanders2017-01-1816-193/+437
| | | | | | | | | | | | | | | | | | | | | | | Summary: Adds a RegisterBank tablegen class that can be used to declare the register banks and an associated tablegen pass to generate the necessary code. Changes since last commit: The new tablegen pass is now correctly guarded by LLVM_BUILD_GLOBAL_ISEL and this should fix the buildbots however it may not be the whole fix. The previous buildbot failures suggest there may be a memory bug lurking that I'm unable to reproduce (including when using asan) or spot in the source. If they re-occur on this commit then I'll need assistance from the bot owners to track it down. Reviewers: t.p.northover, ab, rovka, qcolombet Reviewed By: qcolombet Subscribers: aditya_nandakumar, rengolin, kristof.beyls, vkalintiris, mgorny, dberris, llvm-commits, rovka Differential Revision: https://reviews.llvm.org/D27338 llvm-svn: 292367
* [ARM] Create objdump subtarget from build attrsSam Parker2017-01-1819-58/+686
| | | | | | | | | | | Enable an ELFObjectFile to read the its arm build attributes to produce a target triple with a specific ARM architecture. llvm-objdump now uses this functionality to automatically produce a more accurate target. Differential Revision: https://reviews.llvm.org/D28769 llvm-svn: 292366
* [InstCombine] Remove unnecessary intrinsics demanded elts handlingSimon Pilgrim2017-01-181-22/+2
| | | | | | As discussed on D28777 - we don't need to handle 'all element' shuffles inside InstCombiner::visitCallInst as InstCombiner::SimplifyDemandedVectorElts will do everything we need. llvm-svn: 292365
* Fixed parser error on windows shell evaluation of RUN script lineSimon Pilgrim2017-01-181-3/+1
| | | | llvm-svn: 292363
* [X86][SSE] Simplify umax knownbits testSimon Pilgrim2017-01-181-1/+1
| | | | | | combineSRA doesn't detect sign bits splats that it does itself so just use -1 as the demanded input so that its already splatted llvm-svn: 292361
* [X86] Improve mul combine for negative multiplayer (2^c - 1)Michael Zuckerman2017-01-182-16/+261
| | | | | | | | | | | This patch improves the mul instruction combine function (combineMul) by adding new layer of logic. In this patch, we are adding the ability to fold (mul x, -((1 << c) -1)) or (mul x, -((1 << c) +1)) into (neg(X << c) -x) or (neg((x << c) + x) respective. Differential Revision: https://reviews.llvm.org/D28232 llvm-svn: 292358
* Revert "[XRay][Arm] Repair XRay table emission on Arm32 and add tests to ↵Renato Golin2017-01-183-15/+0
| | | | | | | | | | | identify such problem earlier" This reverts commit r292210, as it broke the Thumb buldbot with: clang-5.0: error: the clang compiler does not support '-fxray-instrument on thumbv7-unknown-linux-gnueabihf'. llvm-svn: 292357
* [SystemZ] Proper handling of undef flag while expanding pseudo.Jonas Paulsson2017-01-183-7/+35
| | | | | | | | During post-RA pseudo expansion, an 'undef' flag of the source operand should be propagated by emitGRX32Move(). Review: Ulrich Weigand llvm-svn: 292353
* [X86] Fix for bugzilla 31576 - add support for "data32" instruction prefixMarina Yatsina2017-01-1811-2/+100
| | | | | | | | | | | This patch fixes bugzilla 31576 (https://llvm.org/bugs/show_bug.cgi?id=31576). "data32" instruction prefix was not defined in the llvm. An exception had to be added to the X86 tablegen and AsmPrinter because both "data16" and "data32" are encoded to 0x66 (but in different modes). Differential Revision: https://reviews.llvm.org/D28468 llvm-svn: 292352
* [LoopDeletion] (cleanup, NFC) Fix one more local variable that didn'tChandler Carruth2017-01-181-2/+2
| | | | | | | | | follow LLVM's naming conventions while I'm here. Again, sorry I didn't spot this earlier to coalesce with other cleanup changes. llvm-svn: 292333
* [PM] Teach LoopDeletion to correctly update the LPM when loops areChandler Carruth2017-01-184-11/+66
| | | | | | | | | deleted. I've expanded its test coverage a bit including adding one test that will crash clearly without this change. llvm-svn: 292332
* [LoopDeletion] (cleanup, NFC) Make this test actually test what itChandler Carruth2017-01-181-17/+72
| | | | | | | | | | | | claims to test. LoopSimplify was unifying the multiple exits in this test case, making it never even test the multiple exit handling of LoopDeletion. Doh. Now it works (thanks to a great idea from mkuper) and will fail if we ever change something to make it stop working. llvm-svn: 292331
* DAG: Consider nnan in isKnownNeverNaNMatt Arsenault2017-01-182-0/+19
| | | | llvm-svn: 292328
* Revert rL292292 since it causes a SEGV on sanitizer-x86_64-linux-fuzzer ↵Wei Mi2017-01-183-344/+0
| | | | | | build bot. llvm-svn: 292327
* [libFuzzer] remove stale codeKostya Serebryany2017-01-184-131/+4
| | | | llvm-svn: 292325
* [test-release.sh] Add Polly to the list of projectsPengxuan Zheng2017-01-181-1/+13
| | | | | | | | | | | | Reviewers: zinob, hans, grosser Reviewed By: hans, grosser Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28712 llvm-svn: 292323
* [WebAssembly] Update grow_memory's return type.Dan Gohman2017-01-183-9/+10
| | | | | | | The grow_memory instruction now returns the previous memory size. Add the return type to the LLVM intrinsic. llvm-svn: 292322
* MIRParser: Allow regclass specification on operandMatthias Braun2017-01-187-8/+154
| | | | | | | | | | | You can now define the register class of a virtual register on the operand itself avoiding the need to use a "registers:" block. Example: "%0:gr64 = COPY %rax" Differential Revision: https://reviews.llvm.org/D22398 llvm-svn: 292321
* [Target, Transforms] Fix some Clang-tidy modernize and Include What You Use ↵Eugene Zelenko2017-01-1814-233/+331
| | | | | | warnings; other minor fixes (NFC). llvm-svn: 292320
* [libFuzzer] exit(1) on failed mergeKostya Serebryany2017-01-182-0/+10
| | | | llvm-svn: 292319
* [libFuzzer] better link for trophiesKostya Serebryany2017-01-181-1/+1
| | | | llvm-svn: 292318
* [NVPTX] Support global variables of integer type larger than i64.Justin Lebar2017-01-182-1/+23
| | | | | | | | | | Reviewers: tra, majnemer Subscribers: llvm-commits, jholewinski Differential Revision: https://reviews.llvm.org/D28825 llvm-svn: 292316
* 2 returns next to each other =). NFCXin Tong2017-01-181-2/+0
| | | | llvm-svn: 292315
* Skip loop header while we can when computing loop safety infoXin Tong2017-01-181-1/+4
| | | | llvm-svn: 292310
* [LIT] Make util.executeCommand python3 friendlyEric Fiselier2017-01-181-0/+4
| | | | | | | | | | | | | | Summary: The parameter `input` to `subprocess.Popen.communicate(...)` must be an object of type `bytes` . This is strictly enforced in python3. This patch (1) allows `to_bytes` to be safely called redundantly. (2) Explicitly convert `input` within `executeCommand`. This allows for usages like `executeCommand(['clang++', '-'], input='int main() {}\n')`. Reviewers: ddunbar, BinaryKhaos, modocache, dim, EricWF Reviewed By: EricWF Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28736 llvm-svn: 292308
* [NVPTX] Standardize asm printer on "foo \tbar".Justin Lebar2017-01-182-218/+218
| | | | | | | Some instructions were printed as "foo\tbar", but most are printed as "foo \bar". Standardize on the latter form. llvm-svn: 292306
* [NVPTX] Clean up nested !strconcat calls.Justin Lebar2017-01-182-99/+68
| | | | | | | !strconcat is a variadic function; it will concatenate an arbitrary number of strings. There's no need to nest it. llvm-svn: 292305
* [NVPTX] Implement min/max in tablegen, rather than with custom DAGComine logic.Justin Lebar2017-01-183-77/+143
| | | | | | | | | | | | | | | | | | | | | | | Summary: This change also lets us use max.{s,u}16. There's a vague warning in a test about this maybe being less efficient, but I could not come up with a case where the resulting SASS (sm_35 or sm_60) was different with or without max.{s,u}16. It's true that nvcc seems to emit only max.{s,u}32, but even ptxas 7.0 seems to have no problem generating efficient SASS from max.{s,u}16 (the casts up to i32 and back down to i16 seem to be implicit and nops, happening via register aliasing). In the absence of evidence, better to have fewer special cases, emit more straightforward code, etc. In particular, if a new GPU has 16-bit min/max instructions, we want to be able to use them. Reviewers: tra Subscribers: jholewinski, llvm-commits Differential Revision: https://reviews.llvm.org/D28732 llvm-svn: 292304
* [NVPTX] Lower integer absolute value idiom to abs instruction.Justin Lebar2017-01-182-0/+43
| | | | | | | | | | | | Summary: Previously we lowered it literally, to shifts and xors. Reviewers: tra Subscribers: jholewinski, llvm-commits Differential Revision: https://reviews.llvm.org/D28722 llvm-svn: 292303
* [NVPTX] Improve lowering of llvm.ctpop.Justin Lebar2017-01-182-5/+63
| | | | | | | | | | | | | | | | | | Summary: Avoid an unnecessary conversion operation when using the result of ctpop.i32 or ctpop.i16 as an i32, as in both cases the ptx instruction we run returns an i32. (Previously if we used the value as an i32, we'd do an unnecessary zext+trunc.) Reviewers: tra Subscribers: jholewinski, llvm-commits Differential Revision: https://reviews.llvm.org/D28721 llvm-svn: 292302
* [NVPTX] Add lowering for llvm.bitreverse.Justin Lebar2017-01-183-0/+29
| | | | | | | | | | Reviewers: tra Subscribers: llvm-commits, jholewinski Differential Revision: https://reviews.llvm.org/D28720 llvm-svn: 292301
* [NVPTX] Fix function names in ctlz.ll test. Test-only change.Justin Lebar2017-01-181-20/+20
| | | | | | | Looks like a copy/paste mistake, all the functions in ctlz.ll were named "ctpop". llvm-svn: 292300
* [NVPTX] Improve lowering of llvm.ctlz.Justin Lebar2017-01-183-27/+135
| | | | | | | | | | | | | | | | | Summary: * Disable "ctlz speculation", which inserts a branch on every ctlz(x) which has defined behavior on x == 0 to check whether x is, in fact zero. * Add DAG patterns that avoid re-truncating or re-expanding the result of the 16- and 64-bit ctz instructions. Reviewers: tra Subscribers: llvm-commits, jholewinski Differential Revision: https://reviews.llvm.org/D28719 llvm-svn: 292299
* [IR] Grammar police: "intact" is one word. NFCJustin Lebar2017-01-181-1/+1
| | | | llvm-svn: 292298
* [InstCombine] add tests to show missed shrinkage; NFCSanjay Patel2017-01-181-0/+141
| | | | | | | A patch to partially solve this: https://reviews.llvm.org/D28625 llvm-svn: 292296
* [libFuzzer] add ATTRIBUTE_NO_SANITIZE_MEMORY to sanitizer hooksKostya Serebryany2017-01-171-0/+14
| | | | llvm-svn: 292295
* Introduce -unroll-partial-threshold to separate PartialThreshold from ↵Dehao Chen2017-01-175-10/+14
| | | | | | | | | | | | | | | | Threshold in loop unorller. Summary: Partial unrolling should have separate threshold with full unrolling. Reviewers: efriedma, mzolotukhin Reviewed By: efriedma, mzolotukhin Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28831 llvm-svn: 292293
* [RegisterCoalescing] Remove partial redundent copy.Wei Mi2017-01-173-0/+344
| | | | | | | | | | | | The patch is to solve the performance problem described in PR27827. Register coalescing sometimes cannot remove a copy because of interference. But if we can find a reverse copy in one of the predecessor block of the copy, the copy is partially redundent and we may remove the copy partially by moving it to the predecessor block without the reverse copy. Differential Revision: https://reviews.llvm.org/D28585 llvm-svn: 292292
* Fix GettingStarted doc so that the example build command for cmake ↵Mehdi Amini2017-01-171-1/+1
| | | | | | | | | LLVM_ENABLE_PROJECTS works on linux I tested the previous one on macOS, however building libc++ on Linux requires libcxxabi as well. llvm-svn: 292290
* [libfuzzer] fixing collected pc addresses for coverageMike Aizatsky2017-01-175-21/+33
| | | | | | | | | | | | Summary: The causes google/ossfuzz#84 Reviewers: kcc Subscribers: mgorny Differential Revision: https://reviews.llvm.org/D28827 llvm-svn: 292289
OpenPOWER on IntegriCloud