summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [FIX] Add XFAIL to crashing test caseJohannes Doerfert2015-08-161-0/+4
| | | | llvm-svn: 245180
* Build the ScopStmt domain in-place.Johannes Doerfert2015-08-163-24/+16
| | | | | | | This will build the statement domains in-place, hence using the ScopStmt::Domain member instead of some intermediate isl_set. llvm-svn: 245179
* Add a crashing test case for the scalar code generationJohannes Doerfert2015-08-161-0/+66
| | | | | | | | | | | This test case crashes the scalar code generation as we are not consistent with the usage of the assumed context. To be precise, we use the assumed context for the dependence analysis but not to restrict the domains of the statements. A step by step explanation of the problem is given in the test case. llvm-svn: 245176
* Add -polly-context option to provide additional context informationTobias Grosser2015-08-163-0/+90
| | | | | | | | This option allows the user to provide additional information about parameter values as an isl_set. To specify that N has the value 1024, we can provide the context -polly-context='[N] -> {: N = 1024}'. llvm-svn: 245175
* Remove trivially true conditionJohannes Doerfert2015-08-161-3/+1
| | | | llvm-svn: 245174
* Add missing include guard.Yaron Keren2015-08-161-0/+4
| | | | llvm-svn: 245173
* Revert "Add support for cross block dse. This patch enables dead stroe ↵David Majnemer2015-08-163-404/+51
| | | | | | | | elimination across basicblocks." This reverts commit r245025, it caused PR24469. llvm-svn: 245172
* [InstCombine] Replace an and+icmp with a trunc+icmpDavid Majnemer2015-08-162-0/+40
| | | | | | | | Bitwise arithmetic can obscure a simple sign-test. If replacing the mask with a truncate is preferable if the type is legal because it permits us to rephrase the comparison more explicitly. llvm-svn: 245171
* Revert r244127: [PM] Remove a failed attempt to port the CallGraphChandler Carruth2015-08-162-1/+38
| | | | | | | | | | | | | analysis ... It turns out that we *do* need the old CallGraph ported to the new pass manager. There are times where this model of a call graph is really superior to the one provided by the LazyCallGraph. For example, GlobalsModRef very specifically needs the model provided by CallGraph. While here, I've tried to make the move semantics actually work. =] llvm-svn: 245170
* [X86] Widen the 'AND' mask if doing so shrinks the encoding sizeDavid Majnemer2015-08-164-9/+67
| | | | | | | | | | | | | We can set additional bits in a mask given that we know the other operand of an AND already has some bits set to zero. This can be more efficient if doing so allows us to use an instruction which implicitly sign extends the immediate. This fixes PR24085. Differential Revision: http://reviews.llvm.org/D11289 llvm-svn: 245169
* MergeFunc: Quick fix for r245140, Ignore second, aka Function*, in sorting.NAKAMURA Takumi2015-08-161-1/+6
| | | | | | Don't assume second would be ordered in the module. llvm-svn: 245168
* Try to appease VS 2015 warnings from http://reviews.llvm.org/D11890Yaron Keren2015-08-151-21/+19
| | | | | | | | | | | | | ByteSize and BitSize should not be size_t but unsigned, considering 1) They are at most 2^16 and 2^19, respectively. 2) BitSize is an argument to Type::getIntNTy which takes unsigned. Also, use the correct utostr instead itostr and cache the string result. Thanks to James Touton for reporting this! llvm-svn: 245167
* [x86] enable machine combiner reassociations for scalar single-precision ↵Sanjay Patel2015-08-152-4/+10
| | | | | | minimums llvm-svn: 245166
* Updated broadcast stack folding test to avoid use of broadcast intrinsics.Simon Pilgrim2015-08-151-16/+8
| | | | llvm-svn: 245165
* fix typos; NFCSanjay Patel2015-08-151-11/+11
| | | | llvm-svn: 245164
* add test case to show current codegenSanjay Patel2015-08-151-0/+24
| | | | llvm-svn: 245163
* [Sema] Be consistent about diagnostic wording: always use "cannot".Davide Italiano2015-08-1513-105/+105
| | | | | | Discussed with Richard Smith. llvm-svn: 245162
* Silence VS2015 warning.Yaron Keren2015-08-151-1/+1
| | | | | | | | Patch by James Touton! http://reviews.llvm.org/D11890 llvm-svn: 245161
* [DAGCombiner] Attempt to mask vectors before zero extension instead of after.Simon Pilgrim2015-08-1510-98/+141
| | | | | | | | | | | | | | For cases where we TRUNCATE and then ZERO_EXTEND to a larger size (often from vector legalization), see if we can mask the source data and then ZERO_EXTEND (instead of after a ANY_EXTEND). This can help avoid having to generate a larger mask, and possibly applying it to several sub-vectors. (zext (truncate x)) -> (zext (and(x, m)) Includes a minor patch to SystemZ to better recognise 8/16-bit zero extension patterns from RISBG bit-extraction code. This is the first of a number of minor patches to help improve the conversion of byte masks to clear mask shuffles. Differential Revision: http://reviews.llvm.org/D11764 llvm-svn: 245160
* AST Generation Paper published in TOPLASTobias Grosser2015-08-154-8/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The July issue of TOPLAS contains a 50 page discussion of the AST generation techniques used in Polly. This discussion gives not only an in-depth description of how we (re)generate an imperative AST from our polyhedral based mathematical program description, but also gives interesting insights about: - Schedule trees: A tree-based mathematical program description that enables us to perform loop transformations on an abstract level, while issues like the generation of the correct loop structure and loop bounds will be taken care of by our AST generator. - Polyhedral unrolling: We discuss techniques that allow the unrolling of non-trivial loops in the context of parameteric loop bounds, complex tile shapes and conditionally executed statements. Such unrolling support enables the generation of predicated code e.g. in the context of GPGPU computing. - Isolation for full/partial tile separation: We discuss native support for handling full/partial tile separation and -- in general -- native support for isolation of boundary cases to enable smooth code generation for core computations. - AST generation with modulo constraints: We discuss how modulo mappings are lowered to efficient C/LLVM code. - User-defined constraint sets for run-time checks We discuss how arbitrary sets of constraints can be used to automatically create run-time checks that ensure a set of constrainst actually hold. This feature is very useful to verify at run-time various assumptions that have been taken program optimization. Polyhedral AST generation is more than scanning polyhedra Tobias Grosser, Sven Verdoolaege, Albert Cohen ACM Transations on Programming Languages and Systems (TOPLAS), 37(4), July 2015 llvm-svn: 245157
* Update link to Polly paperTobias Grosser2015-08-151-3/+1
| | | | | | By going through my personal website, people can go directly to the paper. llvm-svn: 245156
* [PM/AA] Delete the LibCallAliasAnalysis and all the associatedChandler Carruth2015-08-159-405/+0
| | | | | | | | | | | | | | | | | | infrastructure. This AA was never used in tree. It's infrastructure also completely overlaps that of TargetLibraryInfo which is used heavily by BasicAA to achieve similar goals to those stated for this analysis. As has come up in several discussions, the use case here is still really important, but this code isn't helping move toward that use case. Any progress on better supporting rich AA information for runtime library environments would likely be better off starting from scratch or starting from TargetLibraryInfo than from this base. Differential Revision: http://reviews.llvm.org/D12028 llvm-svn: 245155
* Tiny cleanup: move some Triple variables up to the top of theJames Y Knight2015-08-151-21/+27
| | | | | | function, and remove a duplicate var. llvm-svn: 245154
* [MS ABI] Switch catchpad/cleanuppad to use tokensDavid Majnemer2015-08-153-19/+22
| | | | llvm-svn: 245153
* [IR] Update CreateCatchRet to take a return valueDavid Majnemer2015-08-151-2/+2
| | | | llvm-svn: 245152
* Update DynamicRegisterInfo::SetRegisterInfo to accept eh_frame registerJason Molenda2015-08-151-1/+7
| | | | | | | | numbers in the key name "ehframe" or "eh_frame" in addition to the deprecated "gcc" name (e.g. from a plugin.process.gdb-remote.target-definition-file python file). llvm-svn: 245151
* AMDGPU/SI: Only look at live out SGPR defsMatt Arsenault2015-08-151-3/+7
| | | | | | | | | | | | | | | | | When trying to fix SGPR live ranges, skip defs that are killed in the same block as the def. I don't think we need to worry about these cases as long as the live ranges of the SGPRs in dominating blocks are correct. This reduces the number of elements the second loop over the function needs to look at, and makes it generally easier to understand. The second loop also only considers if the live range is live in to a block, which logically means it must have been live out from another. llvm-svn: 245150
* [IR] Give catchret an optional 'return value' operandDavid Majnemer2015-08-1516-63/+147
| | | | | | | | | | | Some personality routines require funclet exit points to be clearly marked, this is done by producing a token at the funclet pad and consuming it at the corresponding ret instruction. CleanupReturnInst already had a spot for this operand but CatchReturnInst did not. Other personality routines don't need to use this which is why it has been made optional. llvm-svn: 245149
* Remove redundant TargetFrameLowering::getFrameIndexOffset virtualJames Y Knight2015-08-1520-83/+95
| | | | | | | | | | | function. This was the same as getFrameIndexReference, but without the FrameReg output. Differential Revision: http://reviews.llvm.org/D12042 llvm-svn: 245148
* clang-tools-extra/test/clang-tidy/modernize-pass-by-value.cpp: Tweak not to ↵NAKAMURA Takumi2015-08-151-1/+1
| | | | | | override -std=c++11. llvm-svn: 245147
* clang-tools-extra/test/clang-tidy/modernize-pass-by-value.cpp: Appease ↵NAKAMURA Takumi2015-08-151-1/+1
| | | | | | targeting MS to give -fno-delayed-template-parsing. llvm-svn: 245146
* clangStaticAnalyzerCheckers: Update libdesp.NAKAMURA Takumi2015-08-151-0/+1
| | | | llvm-svn: 245145
* clangTidyModernizeModule: Update libdeps.NAKAMURA Takumi2015-08-151-0/+1
| | | | llvm-svn: 245144
* [WebAssembly] Add RelooperJF Bastien2015-08-153-0/+1121
| | | | | | | | | | | | | | | | This is just an initial checkin of an implementation of the Relooper algorithm, in preparation for WebAssembly codegen to utilize. It doesn't do anything yet by itself. The Relooper algorithm takes an arbitrary control flow graph and generates structured control flow from that, utilizing a helper variable when necessary to handle irreducibility. The WebAssembly backend will be able to use this in order to generate an AST for its binary format. Author: azakai Reviewers: jfb, sunfish Subscribers: jevinskie, arsenm, jroelofs, llvm-commits Differential revision: http://reviews.llvm.org/D11691 llvm-svn: 245142
* A messy bit of cleanup: Move towards more descriptive namesJason Molenda2015-08-1541-90/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for eh_frame and stabs register numberings. This is not complete but it's a step in the right direction. It's almost entirely mechanical. lldb informally uses "gcc register numbering" to mean eh_frame. Why? Probably because there's a notorious bug with gcc on i386 darwin where the register numbers in eh_frame were incorrect. In all other cases, eh_frame register numbering is identical to dwarf. lldb informally uses "gdb register numbering" to mean stabs. There are no official definitions of stabs register numbers for different architectures, so the implementations of gdb and gcc are the de facto reference source. There were some incorrect uses of these register number types in lldb already. I fixed the ones that I saw as I made this change. This commit changes all references to "gcc" and "gdb" register numbers in lldb to "eh_frame" and "stabs" to make it clear what is actually being represented. lldb cannot parse the stabs debug format, and given that no one is using stabs any more, it is unlikely that it ever will. A more comprehensive cleanup would remove the stabs register numbers altogether - it's unnecessary cruft / complication to all of our register structures. In ProcessGDBRemote, when we get register definitions from the gdb-remote stub, we expect to see "gcc:" (qRegisterInfo) or "gcc_regnum" (qXfer:features:read: packet to get xml payload). This patch changes ProcessGDBRemote to also accept "ehframe:" and "ehframe_regnum" from these remotes. I did not change GDBRemoteCommunicationServerLLGS or debugserver to send these new packets. I don't know what kind of interoperability constraints we might be working under. At some point in the future we should transition to using the more descriptive names. Throughout lldb we're still using enum names like "gcc_r0" and "gdb_r0", for eh_frame and stabs register numberings. These should be cleaned up eventually too. The sources link cleanly on macosx native with xcode build. I don't think we'll see problems on other platforms but please let me know if I broke anyone. llvm-svn: 245141
* Accelerate MergeFunctions with hashingJF Bastien2015-08-152-12/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes the Merge Functions pass faster by calculating and comparing a hash value which captures the essential structure of a function before performing a full function comparison. The hash is calculated by hashing the function signature, then walking the basic blocks of the function in the same order as the main comparison function. The opcode of each instruction is hashed in sequence, which means that different functions according to the existing total order cannot have the same hash, as the comparison requires the opcodes of the two functions to be the same order. The hash function is a static member of the FunctionComparator class because it is tightly coupled to the exact comparison function used. For example, functions which are equivalent modulo a single variant callsite might be merged by a more aggressive MergeFunctions, and the hash function would need to be insensitive to these differences in order to exploit this. The hashing function uses a utility class which accumulates the values into an internal state using a standard bit-mixing function. Note that this is a different interface than a regular hashing routine, because the values to be hashed are scattered amongst the properties of a llvm::Function, not linear in memory. This scheme is fast because only one word of state needs to be kept, and the mixing function is a few instructions. The main runOnModule function first computes the hash of each function, and only further processes functions which do not have a unique function hash. The hash is also used to order the sorted function set. If the hashes differ, their values are used to order the functions, otherwise the full comparison is done. Both of these are helpful in speeding up MergeFunctions. Together they result in speedups of 9% for mysqld (a mostly C application with little redundancy), 46% for libxul in Firefox, and 117% for Chromium. (These are all LTO builds.) In all three cases, the new speed of MergeFunctions is about half that of the module verifier, making it relatively inexpensive even for large LTO builds with hundreds of thousands of functions. The same functions are merged, so this change is free performance. Author: jrkoenig Reviewers: nlewycky, dschuff, jfb Subscribers: llvm-commits, aemerson Differential revision: http://reviews.llvm.org/D11923 llvm-svn: 245140
* Delay emitting members of dllexport classes until the class is fully parsed ↵Hans Wennborg2015-08-156-43/+126
| | | | | | | | | | | | | | | | | (PR23542) This enables Clang to correctly handle code such as: struct __declspec(dllexport) S { int x = 42; }; where it would otherwise error due to trying to generate the default constructor before the in-class initializer for x has been parsed. Differential Revision: http://reviews.llvm.org/D11850 llvm-svn: 245139
* MIRLangRef: Describe the syntax that is used to represent machine basic blocks.Alex Lorenz2015-08-151-2/+111
| | | | llvm-svn: 245138
* LoopStrengthReduce: Try to pass address space to isLegalAddressingModeMatt Arsenault2015-08-154-63/+366
| | | | | | | | | This seems to only work some of the time. In some situations, this seems to use a nonsensical type and isn't actually aware of the memory being accessed. e.g. if branch condition is an icmp of a pointer, it checks the addressing mode of i1. llvm-svn: 245137
* [modules] Stop dropping 'module.timestamp' files into the current directoryRichard Smith2015-08-154-8/+27
| | | | | | when building with implicit modules disabled. llvm-svn: 245136
* AMDGPU/SI: Fix printing useless info with amdhsaMatt Arsenault2015-08-152-2/+3
| | | | | | | The comments at the bottom would all report 0 if amdhsa was used. llvm-svn: 245135
* AMDGPU/SI: Update LiveVariablesMatt Arsenault2015-08-151-2/+15
| | | | | | | This is simple but won't work if/when this pass is moved to be post-SSA. llvm-svn: 245134
* AMDGPU/SI: Update LiveIntervals during SIFixSGPRLiveRangesMatt Arsenault2015-08-151-4/+13
| | | | | | | | | Does not mark SlotIndexes as reserved, although I think that might be OK. LiveVariables still need to be handled. llvm-svn: 245133
* AMDGPU: Remove unnecessary assertMatt Arsenault2015-08-151-1/+1
| | | | | | | These shouldn't ever be null. The number of successors was already asserted to be 2. llvm-svn: 245132
* AMDGPU/SI: Make comments more precise.Matt Arsenault2015-08-151-8/+8
| | | | | | | | | | | True branch instructions do behave as expected with liveness. Avoid the phrasing "branch decision is based on a value in an SGPR" because this could be misleading. A VALU compare instruction's result is still based on an SGPR, even though that condition may be divergent. llvm-svn: 245131
* There is no such thing as gdb_arm_f8, this register set is f0-f7.Jason Molenda2015-08-151-83/+82
| | | | | | | Remove this entry and adjust the numbering for the rest of the arm register definitions. llvm-svn: 245130
* Fix Android build.Oleksiy Vyalov2015-08-141-1/+1
| | | | llvm-svn: 245129
* Enable settings test for i686 as well as i386.Zachary Turner2015-08-141-1/+1
| | | | llvm-svn: 245128
* Make skipUnlessArch decorator actually skip instead of XFAIL.Zachary Turner2015-08-141-5/+18
| | | | llvm-svn: 245127
* XFAIL some data formatter tests on Windows.Zachary Turner2015-08-145-0/+5
| | | | | | Fixing these bugs is tracked by http://llvm.org/pr24462. llvm-svn: 245126
OpenPOWER on IntegriCloud