summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Added promotion to EXTRACT_SUBVECTOR operand.Elena Demikhovsky2015-05-254-0/+30
| | | | | | | I encountered with this case in one of KNL tests for i1 vectors. v16i1 = EXTRACT_SUBVECTOR v32i1, x llvm-svn: 238130
* Reformat.NAKAMURA Takumi2015-05-256-92/+88
| | | | llvm-svn: 238126
* Prune CRLFs.NAKAMURA Takumi2015-05-2512-1659/+1659
| | | | llvm-svn: 238125
* [Unroll] Switch from an eagerly populated SCEV cache to one that isChandler Carruth2015-05-251-89/+116
| | | | | | | | | | lazily built. Also, make it a much more generic SCEV cache, which today exposes only a reduced GEP model description but could be extended in the future to do other profitable caching of SCEV information. llvm-svn: 238124
* AsmPrinter: Make DIEValue::Ty private, NFCDuncan P. N. Exon Smith2015-05-241-1/+2
| | | | llvm-svn: 238123
* AsmPrinter: Avoid creating symbols in DwarfStringPoolDuncan P. N. Exon Smith2015-05-243-5/+18
| | | | | | | | | | | | Stop creating symbols we don't need in `DwarfStringPool`. The consumers only call `DwarfStringPoolEntryRef::getSymbol()` when DWARF is relocatable, so this just stops creating the unused symbols when it's not. This drops memory usage from 851 MB to 845 MB, around 0.7%. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 238122
* AsmPrinter: Prune an include, NFCDuncan P. N. Exon Smith2015-05-243-1/+3
| | | | llvm-svn: 238121
* AsmPrinter: Remove dead code, NFCDuncan P. N. Exon Smith2015-05-241-17/+0
| | | | llvm-svn: 238120
* AsmPrinter: Avoid EmitLabelDifference() in DwarfAccelTableDuncan P. N. Exon Smith2015-05-243-1/+19
| | | | | | | | | | | | | | | | | | Mint a new function, `AsmPrinter::emitDwarfStringOffset()`, which takes a `DwarfStringPoolEntryRef`. When DWARF is relocatable across sections, this defers to `emitSectionOffset()` and emits the `MCSymbol`; otherwise, just emit the offset directly, without using any intermediate symbols. `EmitLabelDifference()` is already optimized to emit absolute label differences cheaply when possible, so there aren't any major memory savings here (853 MB down to 851 MB, or 0.2%). However, it prepares for making the `MCSymbol`s in the `DwarfStringPool` optional. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 238119
* AsmPrinter: Use DwarfStringPoolEntry in DwarfAccelTable, NFCDuncan P. N. Exon Smith2015-05-244-17/+14
| | | | | | | This is just an API change, but it prepares to stop using `EmitLabelDifference()` when possible. llvm-svn: 238118
* AsmPrinter: Make DIEString smallDuncan P. N. Exon Smith2015-05-244-90/+112
| | | | | | | | | | | | | | | Expose the `DwarfStringPool` entry in a header, and store a pointer to it directly in `DIEString`. Instead of choosing at creation time how to emit it, use the `dwarf::Form` to determine that at emission time. Besides avoiding the other `DIEValue`, this shaves two pointers off of `DIEString`; the data is now a single pointer. This is a nice cleanup on its own -- and drops memory usage from 861 MB down to 853 MB, around 0.9% -- but it's also preparation for passing `DIEValue`s by value. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 238117
* AsmPrinter: Extract DwarfStringPoolEntry from DwarfStringPool, NFCDuncan P. N. Exon Smith2015-05-243-14/+59
| | | | | | | | | Extract out `DwarfStringPoolEntry` and `DwarfStringPoolRef` from `DwarfStringPool` so that downstream users can start using `DwarfStringPool::getEntry()` directly. This will allow users to delay the decision between emitting a symbol or an offset until later. llvm-svn: 238116
* AsmPrinter: Emit the DwarfStringPool offset directly when possibleDuncan P. N. Exon Smith2015-05-245-28/+39
| | | | | | | | | | | | | Change `DwarfStringPool` to calculate byte offsets on-the-fly, and update `DwarfUnit::getLocalString()` to use a `DIEInteger` instead of a `DIEDelta` when Dwarf doesn't use relocations (i.e., Mach-O). This eliminates another call to `EmitLabelDifference()`, and drops memory usage from 865 MB down to 861 MB, around 0.5%. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 238114
* DebugInfo: Clarify test/DebugInfo/X86/stmt-list-multiple-compile-units.llDuncan P. N. Exon Smith2015-05-241-4/+6
| | | | | | | | This test was relying on the numbering of preceding .set directives, but an upcoming commit is going to remove some of them. Make the CHECKs more nuanced. llvm-svn: 238113
* AsmPrinter: Refactor DwarfStringPool::getEntry(), NFCDuncan P. N. Exon Smith2015-05-242-14/+11
| | | | | | | | Move `DwarfStringPool`'s `getEntry()` to the header (and make it a member function) in preparation for calculating symbol offsets on-the-fly. llvm-svn: 238112
* Remove log2 dependency when building against Android API-9 SDKVince Harron2015-05-241-1/+1
| | | | | | | | | | | | | Android's API-9 SDK is missing log2 builtins. A previous commit added support for building against this API revision but this requires log2l to be present. (And it doesn't seem to be defined, despite being in the headers.) Author: pasaulais (Pierre-Andre Saulais) Differential Revision: http://reviews.llvm.org/D9884 llvm-svn: 238111
* Move parseSubArch to ARMTargetParser. NFCRenato Golin2015-05-241-30/+58
| | | | | | | | | | | | Using getCanonicalArchName() is the right way to parse ARM arch names. Mapping ARMTargetParser IDs to Triple Arch IDs is temporary, until they are merged into a TargetDescription class. This was the last LLVM FIXME to move things to ARMTargetParser. Now on to Clang and beyond. llvm-svn: 238110
* Add target hook to allow merging stores of nonzero constantsMatt Arsenault2015-05-246-5/+566
| | | | | | | | | | On GPU targets, materializing constants is cheap and stores are expensive, so only doing this for zero vectors was silly. Most of the new testcases aren't optimally merged, and are for later improvements. llvm-svn: 238108
* [Support/ELF] Add missing DF_1_XXX bits.Davide Italiano2015-05-231-1/+10
| | | | | | | | | | In preparation for adding support for decoding DF_FLAGS_1 to llvm-readobj. Differential Revision: http://reviews.llvm.org/D9955 Reviewed by: echristo llvm-svn: 238107
* Bump SmallString to the minimum required amount for raw_ostream to avoid ↵Benjamin Kramer2015-05-231-1/+1
| | | | | | | | allocation. NFC. llvm-svn: 238104
* [Mips] Prefer Twine::utohexstr over utohexstr, saves a string copy.Benjamin Kramer2015-05-231-3/+2
| | | | | | NFC. llvm-svn: 238103
* [AArch64] Clean up the ELF streamer a bit.Benjamin Kramer2015-05-234-18/+7
| | | | llvm-svn: 238102
* [AArch64] Move AArch64TargetStreamer out of MCStreamer.hBenjamin Kramer2015-05-235-29/+47
| | | | | | It doesn't belong in the shared MC layer. NFC. llvm-svn: 238101
* Silencing a spurious -Wreturn-type warning; NFC.Aaron Ballman2015-05-231-0/+1
| | | | llvm-svn: 238099
* [PowerPC] Fix fast-isel when compare is split from branchHal Finkel2015-05-232-19/+104
| | | | | | | | | | | When the compare feeding a branch was in a different BB from the branch, we'd try to "regenerate" the compare in the block with the branch, possibly trying to make use of values not available there. Copy a page from AArch64's play book here to fix the problem (at least in terms of correctness). Fixes PR23640. llvm-svn: 238097
* Update ExecutionEngine/LLVMBuild.txt, to add LLVMCodeGen.NAKAMURA Takumi2015-05-231-1/+1
| | | | llvm-svn: 238096
* Give more meaningful names than I and J to some for loop variables after ↵Craig Topper2015-05-231-10/+10
| | | | | | converting to range-based loops. llvm-svn: 238095
* Fix an unused variable warning in release builds.Craig Topper2015-05-231-0/+1
| | | | llvm-svn: 238094
* Use range-based for loops. NFC.Craig Topper2015-05-231-76/+36
| | | | llvm-svn: 238093
* [lib/Fuzzer] doxygen-ify the comments for the user interfaceKostya Serebryany2015-05-231-13/+22
| | | | llvm-svn: 238086
* AsmPrinter: Remove the vtable-entry from DIEValueDuncan P. N. Exon Smith2015-05-232-128/+166
| | | | | | | | | | | | | | | | | Remove all virtual functions from `DIEValue`, dropping the vtable pointer from its layout. Instead, create "impl" functions on the subclasses, and use the `DIEValue::Type` to implement the dynamic dispatch. This is necessary -- obviously not sufficient -- for passing `DIEValue`s around by value. However, this change stands on its own: we make tons of these. I measured a drop in memory usage from 888 MB down to 860 MB, or around 3.2%. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 238084
* CodeGen: Remove redundant DIETypeSignature::dump(), NFCDuncan P. N. Exon Smith2015-05-232-3/+0
| | | | | | We already have this in `DIEValue`; no reason to shadow it. llvm-svn: 238082
* [lib/Fuzzer] fully get rid of std::cerr in libFuzzerKostya Serebryany2015-05-233-38/+23
| | | | llvm-svn: 238081
* Stop resetting NoFramePointerElim in TargetMachine::resetTargetOptions.Akira Hatanaka2015-05-2315-38/+112
| | | | | | | | | | | | | | This is part of the work to remove TargetMachine::resetTargetOptions. In this patch, instead of updating global variable NoFramePointerElim in resetTargetOptions, its use in DisableFramePointerElim is replaced with a call to TargetFrameLowering::noFramePointerElim. This function determines on a per-function basis if frame pointer elimination should be disabled. There is no change in functionality except that cl:opt option "disable-fp-elim" can now override function attribute "no-frame-pointer-elim". llvm-svn: 238080
* Simplify and rename function overrideFunctionAttributes. NFC.Akira Hatanaka2015-05-237-31/+29
| | | | | | | This is in preparation to making changes needed to stop resetting NoFramePointerElim in resetTargetOptions. llvm-svn: 238079
* [lib/Fuzzer] start getting rid of std::cerr. Sadly, these parts of C++ ↵Kostya Serebryany2015-05-234-56/+47
| | | | | | library used in libFuzzer badly interract with the same code used in the target function and also with dfsan. It's easier to just not use std::cerr than to defeat these issues. llvm-svn: 238078
* Remove unnecessary command line option "-disable-fp-elim".Akira Hatanaka2015-05-231-1/+1
| | | | | | | This option currently has no effect as function attribute "no-frame-pointer-elim=false" overrides it. llvm-svn: 238077
* Revert "make reciprocal estimate code generation more flexible by adding ↵Rafael Espindola2015-05-2312-357/+58
| | | | | | | | | | | | command-line options" This reverts commit r238051. It broke some bots: http://lab.llvm.org:8011/builders/llvm-ppc64-linux1/builds/18190 llvm-svn: 238075
* Correct a mistaken comment from 238071 [NFC]Philip Reames2015-05-231-3/+2
| | | | llvm-svn: 238074
* Produce a single string table in a ELF .oRafael Espindola2015-05-223-62/+45
| | | | | | | | | | | | | | | | | | | | Normally an ELF .o has two string tables, one for symbols, one for section names. With the scheme of naming sections like ".text.foo" where foo is a symbol, there is a big potential saving in using a single one. Building llvm+clang+lld with master and with this patch the results were: master: 193,267,008 bytes patch: 186,107,952 bytes master non unique section names: 183,260,192 bytes patch non unique section names: 183,118,632 bytes So using non usique saves 10,006,816 bytes, and the patch saves 7,159,056 while still using distinct names for the sections. llvm-svn: 238073
* Extend EarlyCSE to handle basic cases from JumpThreading and CVPPhilip Reames2015-05-226-21/+332
| | | | | | | | | | | | | | This patch extends EarlyCSE to take advantage of the information that a controlling branch gives us about the value of a Value within this and dominated basic blocks. If the current block has a single predecessor with a controlling branch, we can infer what the branch condition must have been to execute this block. The actual change to support this is downright simple because EarlyCSE's existing scoped hash table logic deals with most of the complexity around merging. The patch actually implements two optimizations. 1) The first is analogous to JumpThreading in that it enables EarlyCSE's CSE handling to fold branches which are exactly redundant due to a previous branch to branches on constants. (It doesn't actually replace the branch or change the CFG.) This is pretty clearly a win since it enables substantial CFG simplification before we start trying to inline. 2) The second is analogous to CVP in that it exploits the knowledge gained to replace dominated *uses* of the original value. EarlyCSE does not otherwise reason about specific uses, so this is the more arguable one. It does enable further simplication and constant folding within the rest of the visit by EarlyCSE. In both cases, the added code only handles the easy dominance based case of each optimization. The general case is deferred to the existing passes. Differential Revision: http://reviews.llvm.org/D9763 llvm-svn: 238071
* [InstCombine] Don't eagerly propagate nsw for A*B+A*C => A*(B+C)David Majnemer2015-05-222-3/+58
| | | | | | | | | | | | | | | | InstCombine transforms A *nsw B +nsw A *nsw C to A *nsw (B + C). This is incorrect -- e.g. if A = -1, B = 1, C = INT_SMAX. Then nothing in the LHS overflows, but the multiplication in RHS overflows. We need to first make sure that we won't multiple by INT_SMAX + 1. Test case `add_of_mul` contributed by Sanjoy Das. This fixes PR23635. Differential Revision: http://reviews.llvm.org/D9629 llvm-svn: 238066
* [lib/Fuzzer] remove -use_coverage_pairs=1, an experimental feature that is ↵Kostya Serebryany2015-05-225-30/+1
| | | | | | unlikely to ever scale llvm-svn: 238063
* [lib/Fuzzer] mention the user-supplied mutatorsKostya Serebryany2015-05-221-0/+8
| | | | llvm-svn: 238062
* [lib/Fuzzer] extend the fuzzer interface to allow user-supplied mutatorsKostya Serebryany2015-05-2212-67/+258
| | | | llvm-svn: 238059
* [AArch64][CGP] Sink zext feeding stxr/stlxr into the same block.Ahmed Bougacha2015-05-222-4/+12
| | | | | | | | | | | The usual CodeGenPrepare trickery, on a target-specific intrinsic. Without this, the expansion of atomics will usually have the zext be hoisted out of the loop, defeating the various patterns we have to catch this precise case. Differential Revision: http://reviews.llvm.org/D9930 llvm-svn: 238054
* Relax these tests a bit.Rafael Espindola2015-05-229-25/+25
| | | | | | It is not relevant where in the string table the name is located. llvm-svn: 238053
* [AArch64] Robustize atomic cmpxchg test a little more. NFC.Ahmed Bougacha2015-05-221-45/+47
| | | | | | | We changed the test to test non-constant values in r238049. We can also use CHECK-NEXT to be a little stricter. llvm-svn: 238052
* make reciprocal estimate code generation more flexible by adding ↵Sanjay Patel2015-05-2212-58/+357
| | | | | | | | | | | | | | | | command-line options This patch adds a class for processing many recip codegen possibilities. The TargetRecip class is intended to handle both command-line options to llc as well as options passed in from a front-end such as clang with the -mrecip option. The x86 backend is updated to use the new functionality. Only -mcpu=btver2 with -ffast-math should see a functional change from this patch. All other CPUs continue to *not* use reciprocal estimates by default with -ffast-math. Differential Revision: http://reviews.llvm.org/D8982 llvm-svn: 238051
* [AArch64] Robustize atomic cmpxchg test. NFC.Ahmed Bougacha2015-05-221-13/+27
| | | | | | Constants are easy to get right the wrong way. llvm-svn: 238049
OpenPOWER on IntegriCloud