summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [X86] Teach FCOPYSIGN lowering to recognize constant magnitudes.Ahmed Bougacha2015-01-073-20/+124
| | | | | | | | | | | | | | | | | | | | | For code like: float foo(float x) { return copysign(1.0, x); } We used to generate: andps <-0.000000e+00,0,0,0>, %xmm0 movss <1.000000e+00>, %xmm1 andps <nan>, %xmm1 orps %xmm0, %xmm1 Basically doing an abs(1.0f) in the two middle instructions. We now generate: andps <-0.000000e+00,0,0,0>, %xmm0 orps <1.000000e+00,0,0,0>, %xmm0 Builds on cleanups r223415, r223542. rdar://19049548 Differential Revision: http://reviews.llvm.org/D6555 llvm-svn: 225357
* Improvements to emacs packages for llvm and tablegen mode.Rafael Espindola2015-01-072-50/+64
| | | | | | | | | | | | | * Both files have valid package headers and footers (you can verify with M-x checkdoc). * Fixed style warnings generated by checkdoc. * Fixed a byte-compiler warning in llvm-mode.el. * Ensure that the modes are autoloaded, so users do not need to (require 'llvm-mode) to use them. Patch by Wilfred Hughes. llvm-svn: 225356
* Reverting r225319; since there is a folder named Examples, attempting to add ↵Aaron Ballman2015-01-071-6/+0
| | | | | | a target of the same name causes problems for IDEs like Visual Studio. llvm-svn: 225355
* Manually specify the folder that Kaleidescope should reside in for ↵Aaron Ballman2015-01-071-0/+1
| | | | | | CMake-produced solutions that care about such things (like MSVC). This takes the Kaleidescope target out of the root solution folder and places it into the Examples folder where it belongs. llvm-svn: 225354
* Manually specify the folder that llvm-ranlib should reside in for ↵Aaron Ballman2015-01-071-0/+2
| | | | | | CMake-produced solutions that care about such things (like MSVC). This takes llvm-ranlib out of the root solution folder and places it into the Tools folder where it belongs. llvm-svn: 225353
* clang-format: Understand single-line comments at the end of blocks.Daniel Jasper2015-01-072-4/+14
| | | | | | | | | | | This prevents clang-format from moving/aligning the comment in the snippet: void f() { int i; // some comment // some unrelated comment } llvm-svn: 225352
* New method SDep::isNormalMemoryOrBarrier() in ScheduleDAGInstrs.cpp.Jonas Paulsson2015-01-072-5/+12
| | | | | | | | | | | | | | | | | | | | Used to iterate over previously added memory dependencies in adjustChainDeps() and iterateChainSucc(). SDep::isCtrl() was previously used in these places, that also gave anti and output edges. The code may be worse if these are followed, because MisNeedChainEdge() will conservatively return true since a non-memory instruction has no memory operands, and a false chain dep will be added. It is also unnecessary since all memory accesses of interest will be reached by memory dependencies, and there is a budget limit for the number of edges traversed. This problem was found on an out-of-tree target with enabled alias analysis. No test case for an in-tree target has been found. Reviewed by Hal Finkel. llvm-svn: 225351
* Fix typos in comment and option help texts.Jonas Paulsson2015-01-071-3/+3
| | | | | | For -enable-aa-sched-mi and -use-tbaa-in-sched-mi. llvm-svn: 225350
* clang-format: Fix unary operator detection.Daniel Jasper2015-01-072-4/+5
| | | | | | | | | | Before: ** outparam = 1; After: **outparam = 1; llvm-svn: 225349
* [ARM] Add missing Tag_DIV_use tests.Charlie Turner2015-01-071-0/+8
| | | | llvm-svn: 225348
* Fix regression in r225266.Asiri Rathnayake2015-01-071-1/+1
| | | | | | | | The change in r225266 was reviewed under D6722. But the commit r225266 has a typo, causing some MCHammer failures. This patch fixes it. Change-Id: I573efcff25003af7478ac02548ebbe929fc7f5fd llvm-svn: 225347
* [PM] Give slightly less horrible names to the utility pass templates forChandler Carruth2015-01-073-33/+33
| | | | | | | | requiring and invalidating specific analyses. Also make their printed names match their class names. Writing these out as prose really doesn't make sense to me any more. llvm-svn: 225346
* [X86] Merge a switch statement inside a default case of another switch ↵Craig Topper2015-01-071-160/+155
| | | | | | statement on the same variable. There was no additional code in the default so this should be no functional change. llvm-svn: 225345
* [X86] Don't mark the shift by 1 instructions as isConvertibleToThreeAddress. ↵Craig Topper2015-01-071-1/+1
| | | | | | There is no handling for them. llvm-svn: 225344
* [X86] Remove some unused TYPE enums from the disassembler.Craig Topper2015-01-074-19/+1
| | | | llvm-svn: 225343
* Use explicit StringRef TypeTobias Grosser2015-01-071-1/+1
| | | | | | | | | | We previously used a Twine here, but as pointed out by David Blaikie and Mehdi Amini storing a temporary StringRef in a Twine is not a good idea, as the StringRef will be freed before the Twine is used leaving a Twine that points to uninitialized memory. We now make it explicit that we use a StringRef here. llvm-svn: 225342
* Revert r225165 and r225169Karthik Bhat2015-01-072-209/+0
| | | | | | | | Even thouh gcc produces simialr instructions as Owen pointed out the two patterns aren’t equivalent in the case where the original subtraction could have caused an overflow. Reverting the same. llvm-svn: 225341
* Fix comment typo.Nico Weber2015-01-071-1/+1
| | | | llvm-svn: 225340
* PE/COFF: teach ARMNT backend about ADDR32NB for exportsSaleem Abdulrasool2015-01-076-0/+84
| | | | | | | | | This adds the ability to export symbols from a DLL built for ARMNT. Add this support first to help work towards adding support for import thunks on Windows on ARM. In order to generate the exports, add support for IMAGE_REL_ARM_ADDR32NB relocations. llvm-svn: 225339
* [ADT][SmallVector] Flip an assert comparison to avoid overflows yielding ↵Ahmed Bougacha2015-01-071-2/+2
| | | | | | | | | | | | | | | | | | | | false-negatives. NFC. r221973 changed SmallVector::operator[] to use size_t instead of unsigned. Before that, on 64bit platforms, when a large index (say -1) was passed, truncating it to unsigned avoided an overflow when computing 'begin() + idx', and failed the range checking assertion, as expected. With r221973, idx isn't truncated, so the addition wraps to '(char*)begin() - 1', and doesn't fire anymore when it should have done so. This commit changes the comparison to instead compute 'end() - begin()' (i.e., 'size()'), which avoids potentially overflowing additions, and correctly triggers the assertion when values such as -1 are passed. Note that the problem already existed before that revision, on platforms where sizeof(size_t) == sizeof(unsigned). llvm-svn: 225338
* [asan] add flag quarantine_size_mb, deprecate quarantine_sizeKostya Serebryany2015-01-077-19/+53
| | | | llvm-svn: 225337
* [TSan] Fix Go build.Alexey Samsonov2015-01-072-7/+6
| | | | llvm-svn: 225336
* IR: Remove MDNode::getWhenValsUnresolved()Duncan P. N. Exon Smith2015-01-071-5/+0
| | | | | | Remove dead code. Use `MDNode::get()` instead. llvm-svn: 225335
* Remove invalid TODODuncan P. N. Exon Smith2015-01-071-1/+0
| | | | | | | | We can't drop support for RAUW entirely in `MDNode`s, since it's required for graph construction. This comment was from before I'd done the math on that (out-of-tree), and never should have been committed. llvm-svn: 225334
* [PM] Fix a pretty nasty bug where the new pass manager would invalidateChandler Carruth2015-01-075-42/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | passes too many time. I think this is actually the issue that someone raised with me at the developer's meeting and in an email, but that we never really got to the bottom of. Having all the testing utilities made it much easier to dig down and uncover the core issue. When a pass manager is running many passes over a single function, we need it to invalidate the analyses between each run so that they can be re-computed as needed. We also need to track the intersection of preserved higher-level analyses across all the passes that we run (for example, if there is one module analysis which all the function analyses preserve, we want to track that and propagate it). Unfortunately, this interacted poorly with any enclosing pass adaptor between two IR units. It would see the intersection of preserved analyses, and need to invalidate any other analyses, but some of the un-preserved analyses might have already been invalidated *and recomputed*! We would fail to propagate the fact that the analysis had already been invalidated. The solution to this struck me as really strange at first, but the more I thought about it, the more natural it seemed. After a nice discussion with Duncan about it on IRC, it seemed even nicer. The idea is that invalidating an analysis *causes* it to be preserved! Preserving the lack of result is trivial. If it is recomputed, great. Until something *else* invalidates it again, we're good. The consequence of this is that the invalidate methods on the analysis manager which operate over many passes now consume their PreservedAnalyses object, update it to "preserve" every analysis pass to which it delivers an invalidation (regardless of whether the pass chooses to be removed, or handles the invalidation itself by updating itself). Then we return this augmented set from the invalidate routine, letting the pass manager take the result and use the intersection of *that* across each pass run to compute the final preserved set. This accounts for all the places where the early invalidation of an analysis has already "preserved" it for a future run. I've beefed up the testing and adjusted the assertions to show that we no longer repeatedly invalidate or compute the analyses across nested pass managers. llvm-svn: 225333
* Make DynamicLoaderPOSIXDYLD::DidAttach to deduce a target executable by pid ↵Oleksiy Vyalov2015-01-072-5/+32
| | | | | | | | if no executable hasn't been assigned to a target so far. http://reviews.llvm.org/D6740 llvm-svn: 225332
* R600/SI: Add check for amdgcn triple forgotten in r225276.Tom Stellard2015-01-071-2/+3
| | | | llvm-svn: 225331
* [ELF] Remove {ELF,}GNULinkerScript.Rui Ueyama2015-01-073-109/+57
| | | | | | | | | | | | | | | | | | | | Instead of representing a linker script file as an "InputElement", parse and evaluate scripts in the driver as we see them. Linker scripts are not regular input files (regular file is one of object, archive, or shared library file). They are more like extended command line options. Linker script handling was needlessly complicated because of that inappropriate abstraction (besides excessive class hierarchy -- there is no such thing like ELF linker script but we had two classes there for some reason.) LinkerScript was one of a few remaining InputElement subclasses that can be expanded to multiple files. With this patch, we are one step closer to retire InputElement. http://reviews.llvm.org/D6648 llvm-svn: 225330
* Analysis: Reformulate WillNotOverflowUnsignedAdd for reusabilityDavid Majnemer2015-01-075-45/+46
| | | | | | | | WillNotOverflowUnsignedAdd's smarts will live in ValueTracking as computeOverflowForUnsignedAdd. It now returns a tri-state result: never overflows, always overflows and sometimes overflows. llvm-svn: 225329
* InstCombine: Just a small tidy-upDavid Majnemer2015-01-071-3/+2
| | | | llvm-svn: 225328
* [Sanitizer] Change the runtime flag representation.Alexey Samsonov2015-01-0720-499/+510
| | | | | | | | | | | This mirrors r225239 to all the rest sanitizers: ASan, DFSan, LSan, MSan, TSan, UBSan. Now the runtime flag type, name, default value and description is located in the single place in the .inc file. llvm-svn: 225327
* Do not use a const Twine hereTobias Grosser2015-01-071-1/+1
| | | | | | | This has caused segfaults when using Polly in the context of Julia, that are not reproducible on my machine in 'make check-polly'. llvm-svn: 225326
* [PowerPC] Transform a README.txt entry into a FIXMEHal Finkel2015-01-072-14/+9
| | | | | | | | | | Remove the README.txt entry regarding register allocation of CR logical ops, and replace it with a FIXME in PPCInstrInfo.td. The text in the README.txt was not really accurate, and thanks goes to Pat Haugen (and Bill Schmidt) from IBM for clarifying what was intended and highlighting the relevant text in the ISA specification. llvm-svn: 225325
* Fix grammar-o in comment.Nico Weber2015-01-061-1/+1
| | | | llvm-svn: 225324
* [asan] add a flag soft_rss_limit_mbKostya Serebryany2015-01-069-6/+132
| | | | llvm-svn: 225323
* Suppress clang warnings in a codegen test.Rafael Espindola2015-01-061-8/+8
| | | | | | | This makes the output of FileCheck way easier to read since this test hits many warnings. llvm-svn: 225322
* cmake: Fix 'examples' target after r225319Duncan P. N. Exon Smith2015-01-061-1/+1
| | | | | | | | Add the missing `DEPENDS` keyword. r225319 did almost the right thing (I didn't notice the problem with it because `Kaleidoscope-Ch8` wasn't building at all). llvm-svn: 225321
* Kaleidoscope: Value => MetadataDuncan P. N. Exon Smith2015-01-061-1/+1
| | | | llvm-svn: 225320
* cmake: Add 'examples' targetDuncan P. N. Exon Smith2015-01-061-0/+6
| | | | llvm-svn: 225319
* cmake: Add Kaleidoscope targetDuncan P. N. Exon Smith2015-01-068-7/+14
| | | | llvm-svn: 225318
* Adds UriParser::Parse and unit testsVince Harron2015-01-067-1/+233
| | | | | | | | This can be used to parse URIs passed to 'platform connect' Differential Revision: http://reviews.llvm.org/D6858 llvm-svn: 225317
* Fix needed for the new terminal test I previously checked in. It was ↵Greg Clayton2015-01-061-12/+17
| | | | | | crashing due to a NULL dereference. llvm-svn: 225316
* Add a subdirectory in CMake for Chapter 8.Eric Christopher2015-01-061-0/+1
| | | | llvm-svn: 225315
* Add __builtin_amdgpu_classMatt Arsenault2015-01-063-0/+19
| | | | llvm-svn: 225314
* Convert CoreInputGraph.Rui Ueyama2015-01-069-76/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a part of InputGraph cleanup to represent input files as a flat list of Files (and some meta-nodes for group etc.) We cannot achieve that goal in one gigantic patch, so I split the task into small steps as shown below. (Recap the progress so far: Currently InputGraph contains a list of InputElements. Each InputElement contain one File (that used to have multiple Files, but I eliminated that use case in r223867). Files are currently instantiated in Driver::link(), but I already made a change to separate file parsing from object instantiation (r224102), so we can safely instantiate Files when we need them, instead of wrapping a file with the wrapper class (FileNode class). InputGraph used to act like a generator class by interpreting groups by itself, but it's now just a container of a list of InputElements (r223867).) 1. Instantiate Files in the driver and wrap them with WrapperNode. WrapperNode is a temporary class that allows us to instantiate Files in the driver while keep using the current InputGraph data structure. This patch demonstrates how this step 1 looks like, using Core driver as an example. 2. Do the same thing for the other drivers. When step 2 is done, an InputGraph consists of GroupEnd objects or WrapperNodes each of which contains one File. Other types of FileNode subclasses are removed. 3. Replace InputGraph with std::vector<std::unique_ptr<InputElement>>. InputGraph is already just a container of list of InputElements, so this step removes that needless class. 4. Remove WrapperNode. We need some code cleanup between each step, because many classes do a bit odd things (e.g. InputGraph::getGroupSize()). I'll straight things up as I need to. llvm-svn: 225313
* [PowerPC] Add support for -mcmpbHal Finkel2015-01-062-0/+8
| | | | | | | In r225106, support for the CMPB instruction was added to the PowerPC backend. This adds the associated GCC-compatible feature flag. llvm-svn: 225312
* Revert r224935 "Refactor duplicated code. No intended functionality change."Lang Hames2015-01-0615-74/+104
| | | | | | | | This is affecting the behavior of some ObjC++ / AArch64 test cases on Darwin. Reverting to get the bots green while I track down the source of the changed behavior. llvm-svn: 225311
* R600/SI: Add combine for isinfinite patternMatt Arsenault2015-01-063-0/+142
| | | | llvm-svn: 225310
* Add isNegative helper to ConstantFPSDNodeMatt Arsenault2015-01-061-0/+3
| | | | llvm-svn: 225309
* Add isInfinity helper to ConstantFPSDNodeMatt Arsenault2015-01-061-0/+3
| | | | llvm-svn: 225308
OpenPOWER on IntegriCloud