summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* A few improvements to deps analysis scripts.Zachary Turner2017-03-061-26/+42
| | | | | | | | 1) Looks in Plugins and clang 2) Adds a mode to display the deps sorted by the number of times the deps occurs in a particular project llvm-svn: 297036
* Fix line endings of deps analysis script.Zachary Turner2017-03-061-65/+65
| | | | llvm-svn: 297035
* [clang-format] Add tests for ambiguous namespaces to the comment fixerKrasimir Georgiev2017-03-061-0/+80
| | | | llvm-svn: 297034
* [Hexagon] Early-if-convert branches that may exit the loopKrzysztof Parzyszek2017-03-063-64/+198
| | | | | | | | | | | | | | | | Merge the tail block into the loop in cases where the main loop body exits early, subject to profitability constraints. This will coalesce the loop body into fewer blocks. For example: loop: loop: // loop body // loop body if (...) jump exit --> // more body more: if (...) jump exit // more body jump loop jump loop llvm-svn: 297033
* [Hexagon] Mark dead defs as <dead> in expand-condsetsKrzysztof Parzyszek2017-03-063-12/+127
| | | | | | | | | The code in updateDeadFlags removed unnecessary <dead> flags, but there can be cases where such a flag is not set, and yet a register has become dead. For example, if a mux with identical inputs is replaced with a COPY, the predicate register may no longer be used after that. llvm-svn: 297032
* [Hexagon] Pick a dot-old instruction that matches the architectureKrzysztof Parzyszek2017-03-064-4/+135
| | | | llvm-svn: 297031
* [modules] Make GNUMode a normal language option to fix module compilation.Vassil Vassilev2017-03-061-1/+1
| | | | | | | | | | | | | | | GNUMode shouldn't be a benign language option because it influences the resulting AST when checking for the existence of GNUMode-specific macro "linux" (e.g. by having code inside #ifdef linux). This patch marks it as a normal language option so it gets correctly passed to the compiler invocation for the used modules. The added test case illustrated this because it compiles without modules, but fails when using modules. Patch by Raphael Isemann (D30496)! llvm-svn: 297030
* [InstSimplify] remove misleading comments; NFCSanjay Patel2017-03-061-2/+2
| | | | | | Div/rem-of-0 does not cause faults/undef (not the same as div/rem-by-0). llvm-svn: 297029
* [clang-format] Make NamespaceEndCommentFixer add at most one commentKrasimir Georgiev2017-03-062-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Until now, NamespaceEndCommentFixer was adding missing comments for every run, which results in multiple end comments for: ``` namespace { int i; int j; } #if A int a = 1; #else int a = 2; #endif ``` result before: ``` namespace { int i; int j; }// namespace // namespace #if A int a = 1; #else int a = 2; #endif ``` result after: ``` namespace { int i; int j; }// namespace #if A int a = 1; #else int a = 2; #endif ``` Reviewers: djasper Reviewed By: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D30659 llvm-svn: 297028
* [Docs] Add missing quotes to the language literal in theAlex Lorenz2017-03-061-1/+1
| | | | | | external_source_symbol attribute docs llvm-svn: 297027
* [DAGCombiner] simplify div/rem-by-0Sanjay Patel2017-03-063-206/+26
| | | | | | | | | | | | | | | | | Refactoring of duplicated code and more fixes to follow. This is motivated by the post-commit comments for r296699: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20170306/435182.html Ie, we can crash if we're missing obvious simplifications like this that exist in the IR simplifier or if these occur later than expected. The x86 change for non-splat division shows a potential opportunity to improve vector codegen: we assumed that since only one lane had meaningful results, we should do the math in scalar. But that means moving back and forth from vector registers. llvm-svn: 297026
* Add examples to clang-format configurationSylvestre Ledru2017-03-062-0/+173
| | | | | | | | | | | | Reviewers: klimek, djasper Reviewed By: djasper Subscribers: krasimir, kimgr, cfe-commits Differential Revision: https://reviews.llvm.org/D30532 llvm-svn: 297025
* [SLP] A test for vectorization of users of extractelement instructions,Alexey Bataev2017-03-061-3/+38
| | | | | | NFC. llvm-svn: 297024
* [CodeGen][Blocks] Refactor capture handling in code that generatesAlex Lorenz2017-03-061-118/+173
| | | | | | | | | | | | | block copy/destroy routines This is a preparation commit for work on merging unique block copy/destroy helper functions. rdar://22950898 Differential Revision: https://reviews.llvm.org/D30345 llvm-svn: 297023
* Header update with info about the current status of C++17Marshall Clow2017-03-061-1/+2
| | | | llvm-svn: 297022
* Update list with changes from Kona meetingMarshall Clow2017-03-061-4/+73
| | | | llvm-svn: 297021
* Fix minor typo introduce in r297014Tobias Grosser2017-03-061-1/+1
| | | | llvm-svn: 297020
* [Sema][ObjC] Warn about 'performSelector' calls with selectorsAlex Lorenz2017-03-065-8/+214
| | | | | | | | | | | | | | | | | | | that return record or vector types The performSelector family of methods from Foundation use objc_msgSend to dispatch the selector invocations to objects. However, method calls to methods that return record types might have to use the objc_msgSend_stret as the return value won't find into the register. This is also supported by this sentence from performSelector documentation: "The method should not have a significant return value and should take a single argument of type id, or no arguments". This commit adds a new warning that warns when a selector which corresponds to a method that returns a record type is passed into performSelector. rdar://12056271 Differential Revision: https://reviews.llvm.org/D30174 llvm-svn: 297019
* Silence a warning "hiding virtual function".Vassil Vassilev2017-03-061-0/+1
| | | | llvm-svn: 297018
* [x86] add tests to show missing div/rem simplifications; NFCSanjay Patel2017-03-061-0/+185
| | | | | | | These are not x86-specific, but the problem is not visible for all targets because it is masked by other transforms. These can lead to compiler crashes. llvm-svn: 297017
* [BasicBlockUtils] Check for nullptr before updating LoopInfo.Michael Kruse2017-03-061-3/+4
| | | | | | | | | | | | | | | | LoopInfo::getLoopFor returns nullptr if a BB is not in a loop and only then can the loop be updated to contain the newly created BBs. Add the missing nullptr check to SplitBlockAndInsertIfThen. Within LLVM, the only user of this function that also passes a LoopInfo to be updated is InnerLoopVectorizer::predicateInstructions(). As the method's name implies, the BB operataten on will always be within a loop, but out-of-tree users may also use it differently (here: Polly). All other uses of LoopInfo::getLoopFor in the file properly check its return value for nullptr. llvm-svn: 297016
* [DAG] fix formatting; NFCSanjay Patel2017-03-061-2/+1
| | | | llvm-svn: 297015
* New Test-Case for Region AnalysisTobias Grosser2017-03-061-0/+39
| | | | | | | | | | | | | | | While working on improvements to region info analysis, this test case caused an incorrect region bb2 => bb3 to be detected. Reviewers: grosser Contributed-by: Nandini Singhal <cs15mtech01004@iith.ac.in> Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30652 llvm-svn: 297014
* Fix Log unit testsPavel Labath2017-03-061-3/+2
| | | | | | | the llvm function for getting the thread name dropped the _np suffix during review. Zachary's commit did not reflect that. llvm-svn: 297013
* Fix -Wc++11-narrowing.Rui Ueyama2017-03-061-1/+1
| | | | llvm-svn: 297012
* [DAG] fix typo in comment; NFCSanjay Patel2017-03-061-1/+1
| | | | llvm-svn: 297011
* Do not display highlights for clang-include-fixer-at-pointHaojian Wu2017-03-062-12/+26
| | | | | | | | | | | | | | Summary: When invoking clang-include-fixer-at-point, the QuerySymbolInfos point to offset 0, length 0. Rather than showing a hidden overlay, do not show any overlay at all for zero-length symbols. Patch by Torsten Marek! Reviewers: hokein, klimek Reviewed By: hokein Differential Revision: https://reviews.llvm.org/D30577 llvm-svn: 297010
* [clang-tidy] Ignore substituted template types in modernize-use-nullptr check.Haojian Wu2017-03-062-0/+18
| | | | | | | | | | | | Reviewers: alexfh Reviewed By: alexfh Subscribers: xazax.hun, malcolm.parsons, JDevlieghere, cfe-commits Differential Revision: https://reviews.llvm.org/D30639 llvm-svn: 297009
* [ELF] - Make Bss and BssRelRo sections to be synthetic (#2).George Rimar2017-03-068-78/+59
| | | | | | | | | | | | | | | In compare with D30458, this makes Bss/BssRelRo to be pure synthetic sections. That removes CopyRelSection class completely, making Bss/BssRelRo to be just regular synthetics. SharedSymbols involved in creating copy relocations are converted to DefinedRegular, what also simplifies things. Differential revision: https://reviews.llvm.org/D30541 llvm-svn: 297008
* CMake: Add a build target for generating a source RPMTom Stellard2017-03-061-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: 'make srpm' or 'ninja srpm' will tar up the current source code and then build a source RPM package. By default it will use the llvm.spec file to generate the source RPM, but you can specify your own custom spec file with the LLVM_SRPM_USER_BINARY_SPECFILE option. CMake will perform variable substitution on your custom specfile, so you can reference CMake variables in it. For example: Version: @LLVM_RPM_SPEC_VERSION@ Note that everything in the source directory will be included in the tarball so if you have a clang check out in tools/clang, then all the clang source will end up in the tarball to. It is recommended to only use this build target with a clean source tree. Reviewers: beanz Reviewed By: beanz Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D30093 llvm-svn: 297007
* Revert "[clang-tidy] misc-use-after-move: Fix failing assertion"Martin Bohme2017-03-062-17/+2
| | | | | | This reverts commit r297004; it was causing buildbots to fail. llvm-svn: 297006
* Do not include GCC "resource" directory into the set of built-in include ↵Anton Korobeynikov2017-03-062-29/+1
| | | | | | | | | | paths on MingW. Patch by Mateusz Mikuła. Differential Revision: https://reviews.llvm.org/D29464 llvm-svn: 297005
* [clang-tidy] misc-use-after-move: Fix failing assertionMartin Bohme2017-03-062-2/+17
| | | | | | | | | | | | | | | | | Summary: I've added a test case that (without the fix) triggers the assertion, which happens when a move happens in an implicitly called conversion operator. Reviewers: alexfh Reviewed By: alexfh Subscribers: JDevlieghere, cfe-commits Differential Revision: https://reviews.llvm.org/D30569 llvm-svn: 297004
* [XRay] [compiler-rt] Stub out architectures we don't do arg1 logging on.Tim Shen2017-03-063-5/+20
| | | | | | | | | | | | rL297000 forgot to include code for three architectures that appeared since I wrote the first version. This gives them the same treatment as ARMs have for now - write stubs and wait for someone to actually implement it. Patched by pelikan (Martin Pelikán)! Differential Revision: https://reviews.llvm.org/D30634 llvm-svn: 297003
* [PowerPC] Fix failure with STBRX when store is narrower than the bswapNemanja Ivanovic2017-03-062-2/+64
| | | | | | | | | | | Fixes a crash caused by r296811 by truncating the input of the STBRX node when the bswap is wider than i32. Fixes https://bugs.llvm.org/show_bug.cgi?id=32140 Differential Revision: https://reviews.llvm.org/D30615 llvm-svn: 297001
* [XRay] [compiler-rt] Allow logging the first argument of a function call.Dean Michael Berris2017-03-069-12/+144
| | | | | | | | | | | | | | | | | | | Summary: Functions with the LOG_ARGS_ENTRY sled kind at their beginning will be handled in a way to (optionally) pass their first call argument to your logging handler. For practical and performance reasons, only the first argument is supported, and only up to 64 bits. Reviewers: javed.absar, dberris Reviewed By: dberris Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29703 llvm-svn: 297000
* [XRay] [clang] Allow logging the first argument of a function call.Dean Michael Berris2017-03-067-1/+63
| | | | | | | | | | | | | | | | Summary: Functions with the "xray_log_args" attribute will tell LLVM to emit a special XRay sled for compiler-rt to copy any call arguments to your logging handler. Reviewers: dberris Reviewed By: dberris Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D29704 llvm-svn: 296999
* [XRay] Allow logging the first argument of a function call.Dean Michael Berris2017-03-063-0/+39
| | | | | | | | | | | | | | | | | | | Summary: Functions with the "xray-log-args" attribute will have a special XRay sled kind emitted, for compiler-rt to copy any call arguments to your logging handler. For practical and performance reasons, only the first argument is supported, and only up to 64 bits. Reviewers: dberris Reviewed By: dberris Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29702 llvm-svn: 296998
* [APInt] Move operator~ out of line to make it better able to reused memory ↵Craig Topper2017-03-062-11/+32
| | | | | | | | | | | | | | | | | | | allocation from temporary objects Summary: This makes operator~ take the APInt by value so if it came from a temporary APInt the move constructor will get invoked and it will be able to reuse the memory allocation from the temporary. This is similar to what was already done for 2s complement negation. Reviewers: hans, davide, RKSimon Reviewed By: davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30614 llvm-svn: 296997
* [ubsan] Extend the nonnull arg check to ObjCVedant Kumar2017-03-065-15/+87
| | | | | | | | | | UBSan's nonnull argument check applies when a parameter has the "nonnull" attribute. The check currently works for FunctionDecls, but not for ObjCMethodDecls. This patch extends the check to work for ObjC. Differential Revision: https://reviews.llvm.org/D30599 llvm-svn: 296996
* [APInt] Remove add and sub functions from APIntOps namespace.Craig Topper2017-03-061-10/+0
| | | | | | They aren't used in tree and using the overloaded operators has more optimization opportunities. llvm-svn: 296995
* Adapt to llvm change r296992 to unbreak the botsSanjoy Das2017-03-061-2/+2
| | | | | | | | | | | | | r296992 made ScalarEvolution's CompareValueComplexity less aggressive, and that broke the polly test being fixed in this change. This change explicitly bumps CompareValueComplexity in said test case to make it pass. Can someone from the polly team please can give me an idea on if this case is important enough to have scalar-evolution-max-value-compare-depth be 3 by default? llvm-svn: 296994
* [APInt] Remove unused And/Or/Xor methods. They just forward to the ↵Craig Topper2017-03-061-17/+0
| | | | | | | | corresponding operator overload. I plan to enhance the operator overloads to handle rvalues and these methods would not longer be optimal to use. llvm-svn: 296993
* [SCEV] Decrease the recursion threshold for CompareValueComplexitySanjoy Das2017-03-052-7/+48
| | | | | | | | | | Fixes PR32142. r287232 accidentally increased the recursion threshold for CompareValueComplexity from 2 to 32. This change reverses that change by introducing a separate flag for CompareValueComplexity's threshold. llvm-svn: 296992
* Drop the dependency on dl_unwind_find_exidx().Ed Schouten2017-03-051-31/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While porting libunwind over to CloudABI for ARMv6, I observed that this source file doesn't build, as it depends on dl_unwind_find_exidx(), which CloudABI's C library was lacking. After I added that function, I still needed to patch up libunwind to define _Unwind_Ptr. Taking a step back, I wonder why we need to make use of this function anyway. The unwinder already has some nice code to use dl_iterate_phdr() to scan for a PT_GNU_EH_FRAME header. The dl_unwind_find_exidx() does the same thing, except matching PT_ARM_EXIDX instead. We could also do that ourselves. This change gets rid of the dl_unwind_find_exidx() call and extends the dl_iterate_phdr() loop. This approach has the advantage of getting rid of some of those OS-specific #ifdefs. This now means that if an operating system only provides dl_iterate_phdr(), it gets support for unwinding on all architectures. There is no need to add more stuff, just to get ARMv6 support. This change is identical to r295944, except that it now adds the necessary code to do bounds checking on PT_LOAD. The previous version of this change lacked this, which didn't cause any problems on CloudABI, but did break the Linux build bots. This is why I reverted it in r295948. Differential Revision: https://reviews.llvm.org/D30306 llvm-svn: 296991
* [APInt] Remove the And/Or/Xor/Not functions from the APIntOps namespace.Craig Topper2017-03-051-21/+0
| | | | | | | | | | | | | | | | | Summary: They aren't used anywhere in tree and its preferable to use the &, |, ^, or ~ operators. With my patch to add rvalue reference support to &, |, ^ operators it also becomes less performant to use these functions. Reviewers: RKSimon, davide, hans Reviewed By: RKSimon Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30613 llvm-svn: 296990
* [SelectionDAG] Fix vector splitting for *_EXTEND_VECTOR_INREG instructionsSimon Pilgrim2017-03-052-1/+53
| | | | | | Found by fuzz testing after rL296985 landed llvm-svn: 296989
* New Test-Case for Region AnalysisTobias Grosser2017-03-051-0/+33
| | | | | | | | | | | | | | | | | | While working on improvements to the region info analysis, this test case caused an incorrect region 1 => 2 to be detected. It is incorrect because entry has an outgoing edge to 3. This is interesting because 1 dom 2 and 2 pdom 1, which should have been enough to prevent incoming forward edges into the region and outgoing forward edges from the region. Reviewers: grosser Subscribers: llvm-commits Contributed-by: Nandini Singhal <cs15mtech01004@iith.ac.in> Differential Revision: https://reviews.llvm.org/D30603 llvm-svn: 296988
* [X86] Silence GCC enum compare warning.Benjamin Kramer2017-03-051-2/+2
| | | | | | | | X86ISelLowering.cpp:26506:36: error: enumeral mismatch in conditional expression: 'llvm::X86ISD::NodeType' vs 'llvm::ISD::NodeType' [-Werror=enum-compare] llvm-svn: 296986
* [X86][SSE] Lower 128-bit vectors to SIGN/ZERO_EXTEND_VECTOR_IN_REG opsSimon Pilgrim2017-03-0513-246/+296
| | | | | | | | | | | | As described on PR31712, we miss a variety of legalization combines because we lower these to X86ISD::VSEXT/VZEXT despite them having the same functionality. This patch makes 128-bit (SSE41) SIGN/ZERO_EXTEND_VECTOR_IN_REG ops legal, adds the necessary tablegen plumbing and uses a helper 'getExtendInVec' to decide when to use SIGN/ZERO_EXTEND_VECTOR_IN_REG or VSEXT/VZEXT. We're missing a couple of shuffle combines that will be added in a future patch for review. Later patches can then support the AVX2 cases as a mixture of SIGN/ZERO_EXTEND and SIGN/ZERO_EXTEND_VECTOR_IN_REG, and then finally deal with the AVX512 cases. Differential Revision: https://reviews.llvm.org/D30549 llvm-svn: 296985
OpenPOWER on IntegriCloud