summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Introduce minimalistic cost model for auto parallelizationTobias Grosser2014-11-1614-31/+51
| | | | | | | | | | | | | | | | | | Instead of parallelizing every parallel outermost loop, we now use a very minimalistic cost model. Specifically, we assume innermost loops are not worth parallelising and all non-innermost loops are. When parallelizing all loops in LNT we got several slowdowns/timeouts due to us parallelizing innermost loops that are executed only a couple of times (number of iterations not known statically). With this basic heuristic enabled LNT does not show any more timeouts, while several interesting loops are still parallelized. There are many ways to obtain an improved heuristic. Constructing such an improvide heuristic from a position of minimal slow-down and zero code size increase seems to be the best, as it allows us to track progress on LNT. llvm-svn: 222096
* Revert r222091 because it caused a buildbot failure.Jay Foad2014-11-163-5/+4
| | | | llvm-svn: 222095
* [x86] Remove two redundant isel patterns. They equivalent already exists in ↵Craig Topper2014-11-161-5/+0
| | | | | | the instruction pattern. llvm-svn: 222094
* ScalarEvolution: HowFarToZero was wrongly using signed divisionDavid Majnemer2014-11-162-12/+12
| | | | | | | | | | | HowFarToZero was supposed to use unsigned division in order to calculate the backedge taken count. However, SCEVDivision::divide performs signed division. Unless I am mistaken, no users of SCEVDivision actually want signed arithmetic: switch to udiv and urem. This fixes PR21578. llvm-svn: 222093
* InstSimplify: Optimize ICmpInst xform that uses computeKnownBitsDavid Majnemer2014-11-161-21/+17
| | | | | | | | | | | | A few things: - computeKnownBits is relatively expensive, let's delay its use as long as we can. - Don't create two APInt values just to run computeKnownBits on a ConstantInt, we already know the exact value! - Avoid creating a temporary APInt value in order to calculate unary negation. llvm-svn: 222092
* [ASan] Fix leak tests on 64-bit targets other than x86-64Jay Foad2014-11-153-4/+5
| | | | | | | | | | | | | | | | | | Summary: This test explicitly sets ASAN_OPTIONS=detect_leaks=1 which is only supported on x86-64. The test is currently restricted to run only on 64-bit targets, but needs to be restricted further so it only runs on x86-64. Reviewers: kcc, eugenis, earthdok, samsonov Reviewed By: samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6189 llvm-svn: 222091
* [DAG] Improved target independent vector shuffle folding logic.Andrea Di Biagio2014-11-152-44/+40
| | | | | | | | | This patch teaches the DAGCombiner how to combine shuffles according to rules: shuffle(shuffle(A, Undef, M0), B, M1) -> shuffle(B, A, M2) shuffle(shuffle(A, B, M0), B, M1) -> shuffle(B, A, M2) shuffle(shuffle(A, B, M0), A, M1) -> shuffle(B, A, M2) llvm-svn: 222090
* Remove one incomplete test case accidentally committedTobias Grosser2014-11-151-55/+0
| | | | llvm-svn: 222089
* Add OpenMP code generation to isl backendTobias Grosser2014-11-1516-11/+1047
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This backend supports besides the classical code generation the upcoming SCEV based code generation (which the existing CLooG backend does not support robustly). OpenMP code generation in the isl backend benefits from our run-time alias checks such that the set of loops that can possibly be parallelized is a lot larger. The code was tested on LNT. We do not regress on builds without -polly-parallel. When using -polly-parallel most tests work flawlessly, but a few issues still remain and will be addressed in follow up commits. SCEV/non-SCEV codegen: - Compile time failure in ldecod and TimberWolfMC due a problem in our run-time alias check generation triggered by pointers that escape through the OpenMP subfunction (OpenMP specific). - Several execution time failures. Due to the larger set of loops that we now parallelize (compared to the classical code generation), we currently run into some timeouts in tests with a lot loops that have a low trip count and are slowed down by parallelizing them. SCEV only: - One existing failure in lencod due to llvm.org/PR21204 (not OpenMP specific) OpenMP code generation is the last feature that was only available in the CLooG backend. With the isl backend being the only one supporting features such as run-time alias checks and delinearization, we will soon switch to use the isl ast generator by the default and subsequently remove our dependency on CLooG. http://reviews.llvm.org/D5517 llvm-svn: 222088
* [X86][SSE] Improve legal SHUFP and PSHUFD shuffle matchingSimon Pilgrim2014-11-153-85/+38
| | | | | | | | | | Updated X86TargetLowering::isShuffleMaskLegal to match SHUFP masks with commuted inputs and PSHUFD masks that reference the second input. As part of this I've refactored isPSHUFDMask to work in a more general manner and allow it to match against either the first or second input vector. Differential Revision: http://reviews.llvm.org/D6287 llvm-svn: 222087
* Fix build regression caused by not defining ABI library macrosEric Fiselier2014-11-152-10/+10
| | | | llvm-svn: 222085
* As a follow up to r222001, Peter Bergner pointed out that there isJay Foad2014-11-151-2/+2
| | | | | | nothing 64-bit-specific about the PowerPC stack overflow detection. llvm-svn: 222084
* Dispose disassembler after use in unit test.Benjamin Kramer2014-11-151-0/+2
| | | | llvm-svn: 222083
* Provide missing definition of uppercase_CMAKE_BUILD_TYPE in ↵Eric Fiselier2014-11-151-0/+4
| | | | | | HandleLLVMOptions module llvm-svn: 222082
* Fix issues missed during the review of r222099.Richard Trieu2014-11-152-17/+18
| | | | | | | Shift some functions around, make a method in Sema private, call the correct overloaded function. No functional change. llvm-svn: 222081
* [libcxx] Refactor CMakeLists.txt handling of compile and link flags to ↵Eric Fiselier2014-11-152-48/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | suppress warnings. Summary: Currently we have 5 variables that are used to specify options for building libcxx 1. `LIBCXX_CXX_FEATURE_FLAGS` 2. `LIBCXX_CXX_WARNING_FLAGS` 3. `LIBCXX_CXX_REQUIRED_FLAGS` 4. `compile_flags` (in libcxx/lib) 5. `link_flags` (in libcxx/lib) The first three all get put into `CMAKE_CXX_FLAGS`. This changes the way flags are handled by only using 3 different options: 1. `LIBCXX_CXX_FLAGS` - general compile and link flags. 2. `LIBCXX_COMPILE_FLAGS` - compile only flags. 3. `LIBCXX_LINK_FLAGS` - link only flags. This patch also removes the warning about `-nostdinc++` being unused during linking. Reviewers: mclow.lists, danalbert Reviewed By: danalbert Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D6277 llvm-svn: 222080
* R600: Permute operands when selecting legacy min/maxMatt Arsenault2014-11-154-25/+110
| | | | | | | | | | This gets the correct NaN behavior based on the compare type the hardware uses. This now passes the new piglit test I have for this on SI. Add stricter tests for the operand order. llvm-svn: 222079
* yaml2obj, COFF: Consider the DOS stub when laying out section headersDavid Majnemer2014-11-151-2/+12
| | | | | | | | While this program worked correctly with small example programs, larger ones tickled this bug. I'm working on a reduction because my program is quite large. llvm-svn: 222078
* Revert "Don't make assumptions about the name of private global variables."Reid Kleckner2014-11-158-159/+5
| | | | | | | | This reverts commit r222061. It's causing linker errors. llvm-svn: 222077
* Split thread test into two parts. Mark one as XFAIL with ASAN.Eric Fiselier2014-11-152-22/+75
| | | | | | | | The second part of the test checks that std::terminate is called when a running thread is move assigned to. Calling std::terminate prevents some of the destructors to be called and ASAN fires on this. llvm-svn: 222076
* For some reason, sometimes the directory paths that clang emits have internalJim Ingham2014-11-156-10/+142
| | | | | | | | | | | | | | | | | | | | | relative paths, like: /whatever/llvm/lib/Sema/../../include/llvm/Sema/ That causes problems with our type uniquing, since we use the declaration file and line as one component of the uniquing, and different ways of getting to the same file will have different directory spellings, though they are functionally equivalent. We end up with two copies of the exact same type because of this, and that makes the expression parser give "duplicate type" errors. I added a method to resolve paths with ../ in them and used that in the FileSpec::Equals, for comparing Declarations and for doing Breakpoint compares as well, since they also suffer from this if you specify breakpoints by full path (since nobody knows what ../'s to insert...) <rdar://problem/18765814> llvm-svn: 222075
* Fix IRGen for passing transparent unionsReid Kleckner2014-11-152-7/+35
| | | | | | | | | We have had a test for this for a long time with a FIXME saying what we should be doing. This just does it. Fixes PR21573. llvm-svn: 222074
* R600: Fix 64-bit integer divisionTom Stellard2014-11-151-2/+2
| | | | | | | | This fixes a failure in one of the oclconform tests. Patch by: Jan Vesely llvm-svn: 222073
* R600: Factor i64 UDIVREM lowering into its own fuctionTom Stellard2014-11-153-68/+84
| | | | | | | | This is so it could potentially be used by SI. However, the current implementation does not always produce correct results, so the IntegerDivisionPass is being used instead. llvm-svn: 222072
* CGDebugInfo: Update for DIBuilder API changeDuncan P. N. Exon Smith2014-11-151-5/+7
| | | | | | Tracking LLVM commit r222070. llvm-svn: 222071
* DIBuilder: Use Constant instead of ValueDuncan P. N. Exon Smith2014-11-152-47/+37
| | | | | | | | | Make explicit the requirement that most IR values in `DIBuilder` are `Constant`. This requires a follow-up change in clang. Part of PR21532. llvm-svn: 222070
* Clean empty directories.Joerg Sonnenberger2014-11-150-0/+0
| | | | llvm-svn: 222069
* DIBuilder: Change private helper function to static, NFCDuncan P. N. Exon Smith2014-11-152-21/+11
| | | | llvm-svn: 222068
* IR: Remove MDString logic for Value::hasName()Duncan P. N. Exon Smith2014-11-141-1/+1
| | | | | | This isn't necessary after r221960. llvm-svn: 222067
* DIBuilder: Cleanup access control style, NFCDuncan P. N. Exon Smith2014-11-141-2/+1
| | | | llvm-svn: 222066
* This patch fixes couple of bugs for predefined expressionFariborz Jahanian2014-11-144-14/+33
| | | | | | | | | used inside blocks. It fixes a crash in naming code for __func__ etc. when used in a block declared globally. It also brings back old naming convention for predefined expression which was broken. rdar://18961148 llvm-svn: 222065
* DI: Use Metadata for DITypeRef and DIScopeRefDuncan P. N. Exon Smith2014-11-142-23/+26
| | | | | | | | | | Now that `MDString` and `MDNode` have a common base class, use it. Note that it's not useful to assume subclasses of `Metadata` must be one or the other since we'll be adding more subclasses soon enough. Part of PR21532. llvm-svn: 222064
* I don't need this ivar. It was probably there from the olden days where ↵Enrico Granata2014-11-141-6/+1
| | | | | | dynamic type support was flakey. Remove and save space llvm-svn: 222063
* Rename EH related stuff to be more preciseReid Kleckner2014-11-147-26/+29
| | | | | | | | | | | | | | | | | | | | Summary: The current "WinEH" exception handling type is more about Itanium-style LSDA tables layered on top of the Windows native unwind info format instead of .eh_frame tables or EHABI unwind info. Use the name "ItaniumWinEH" to better reflect the hybrid nature of the design. Also rename isExceptionHandlingDWARF to usesItaniumLSDAForExceptions, since the LSDA is part of the Itanium C++ ABI document, and not the DWARF standard. Reviewers: echristo Subscribers: llvm-commits, compnerd Differential Revision: http://reviews.llvm.org/D6279 llvm-svn: 222062
* Don't make assumptions about the name of private global variables.Rafael Espindola2014-11-148-5/+159
| | | | | | | | | | | | | | | | | Private variables are can be renamed, so it is not reliable to make decisions on the name. The name is also dropped by the assembler before getting to the linker, so using the name causes a disconnect between how llvm makes a decision (var name) and how the linker makes a decision (section it is in). This patch changes one case where we were looking at the variable name to use the section instead. Test tuning by Michael Gottesman. llvm-svn: 222061
* [asan] add interface function __sanitizer_get_total_unique_coverage; useful ↵Kostya Serebryany2014-11-144-3/+62
| | | | | | for coverage-guided in-process fuzzers llvm-svn: 222060
* Fix examine-threads to build for arm64.Jim Ingham2014-11-141-3/+16
| | | | llvm-svn: 222059
* Removed a couple of static helpers in the data formatters, replaced with new ↵Enrico Granata2014-11-143-32/+65
| | | | | | general logic in StringLexer llvm-svn: 222058
* ARM: refactor .cfi_def_cfa_offset emission.Tim Northover2014-11-142-97/+131
| | | | | | | | | | | | We use to track quite a few "adjusted" offsets through the FrameLowering code to account for changes in the prologue instructions as we went and allow the emission of correct CFA annotations. However, we were missing a couple of cases and the code was almost impenetrable. It's easier to just add any stack-adjusting instruction to a list and emit them together. llvm-svn: 222057
* ARM: correctly calculate the offset of FP in its push.Tim Northover2014-11-142-2/+16
| | | | | | | | | | | When we folded the DPR alignment gap into a push, we weren't noting the extra distance from the beginning of the push to the FP, and so FP ended up pointing at an incorrect offset. The .cfi_def_cfa_offset directives are still wrong in this case, but I think that can be improved by refactoring. llvm-svn: 222056
* ARM: simplify test.Tim Northover2014-11-141-19/+2
| | | | | | | | The test's DWARF stubs were there just to trigger the emission of .cfi directives. Fortunately, the NetBSD ABI already demands proper DWARF unwind info, so it's easier to just use that triple. llvm-svn: 222055
* [c++1z] Support [[deprecated]] attributes on namespaces. Note that it only ↵Aaron Ballman2014-11-146-9/+62
| | | | | | applies to situations where the namespace is mentioned. Thus, use on anonymous namespaces is diagnosed. llvm-svn: 222054
* Add -g -fno-omit-frame-pointer when compiling tests with sanitizersEric Fiselier2014-11-141-0/+1
| | | | llvm-svn: 222053
* Initialize pointer in string conversion helpers to prevent MSAN diagnostic.Eric Fiselier2014-11-141-2/+2
| | | | | | | | Since the initialization of the pointer happens across the libc library boundry MSAN will not know the pointer was initialized. This fixes MSAN failures in test/strings/string.conversions. llvm-svn: 222052
* add debug info when compiling sanitizer testsEric Fiselier2014-11-141-1/+1
| | | | llvm-svn: 222051
* Rerun AutoRegen.sh.Eric Christopher2014-11-141-0/+3
| | | | llvm-svn: 222050
* Recommit r222044 with a test fix - it does not make sense to huntAnton Korobeynikov2014-11-145-27/+97
| | | | | | for a typedef before arithmetic conversion in all rare corner cases. llvm-svn: 222049
* Removing an unused variable; NFC.Aaron Ballman2014-11-141-1/+0
| | | | llvm-svn: 222048
* Again revert r222044 to resolve darwin objc test fails.Anton Korobeynikov2014-11-144-96/+26
| | | | llvm-svn: 222047
* Turn a leaked object into a stack variable instead.David Blaikie2014-11-141-19/+19
| | | | llvm-svn: 222046
OpenPOWER on IntegriCloud