summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Make the AttrListPtr object a part of the LLVMContext.Bill Wendling2012-11-2010-111/+91
| | | | | | | | | When code deletes the context, the AttributeImpls that the AttrListPtr points to are now invalid. Therefore, instead of keeping a separate managed static for the AttrListPtrs that's reference counted, move it into the LLVMContext and delete it when deleting the AttributeImpls. llvm-svn: 168354
* Add a comment to associate a FIXME with a PR where it is matters.Chandler Carruth2012-11-201-1/+2
| | | | llvm-svn: 168347
* Rework the rewriting of loads and stores for vector and integer allocasChandler Carruth2012-11-201-168/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | to properly handle the combinations of these with split integer loads and stores. This essentially replaces Evan's r168227 by refactoring the code in a different way, and trynig to mirror that refactoring in both the load and store sides of the rewriting. Generally speaking there was some really problematic duplicated code here that led to poorly founded assumptions and then subtle bugs. Now much of the code actually flows through and follows a more consistent style and logical path. There is still a tiny bit of duplication on the store side of things, but it is much less bad. This also changes the logic to never re-use a load or store instruction as that was simply too error prone in practice. I've added a few tests (one a reduction of the one in Evan's original patch, which happened to be the same as the report in PR14349). I'm going to look at adding a few more tests for things I found and fixed in passing (such as the volatile tests in the vectorizable predicate). This patch has survived bootstrap, and modulo one bugfix survived Duncan's test suite, but let me know if anything else explodes. llvm-svn: 168346
* 80-column and whitespace fixups.Eric Christopher2012-11-201-9/+11
| | | | llvm-svn: 168344
* Allow using MemoryBuffers with yaml::Stream directly.Sean Silva2012-11-191-0/+20
| | | | | | | | | | The rationale is to get YAML filenames in diagnostics from yaml::Stream::printError -- currently the filename is hard-coded as "YAML" because there's no buffer information available. Patch by Kim Gräsman! llvm-svn: 168341
* Remove a function argument and propagate const around accordingly.Eric Christopher2012-11-193-13/+17
| | | | llvm-svn: 168338
* Whitespace and 80-col.Eric Christopher2012-11-191-49/+49
| | | | llvm-svn: 168337
* Make AsmPrinter::EmitTTypeReference() more robust - putAnton Korobeynikov2012-11-193-19/+11
| | | | | | the zero GV check inside, so we won't forget it at the caller side. llvm-svn: 168328
* Factor out type info emission into separate routine.Anton Korobeynikov2012-11-193-2/+64
| | | | | | | It turned out that ARM wants different layout of type infos. This is yet another patch in attempt to fix PR7187 llvm-svn: 168325
* Move section label emission to module end. Nothing should beEric Christopher2012-11-191-3/+3
| | | | | | | depending on them being emitted before the text and/or data sections and testing didn't uncover any. llvm-svn: 168321
* Handle mixed normal and early-clobber defs on inline asm.Jakob Stoklund Olesen2012-11-191-2/+10
| | | | | | PR14376. llvm-svn: 168320
* 80 colsJoe Abbey2012-11-191-6/+9
| | | | llvm-svn: 168318
* Promote the constant 1 to long long, 1LL or 1ULL in int64_t-sensitive context.NAKAMURA Takumi2012-11-191-2/+2
| | | | llvm-svn: 168304
* Clean up handling of always-inline functions in the inliner.Bob Wilson2012-11-192-115/+115
| | | | | | | | | This patch moves the isInlineViable function from the InlineAlways pass into the InlineCostAnalyzer and then changes the InlineCost computation to use that simple check for always-inline functions. All the special-case checks for AlwaysInline in the CallAnalyzer can then go away. llvm-svn: 168300
* Some comment fixes.Bob Wilson2012-11-191-1/+1
| | | | llvm-svn: 168299
* Move else onto line with preceding closing brace.Craig Topper2012-11-191-2/+1
| | | | llvm-svn: 168294
* Remove the last bit of constant folding from LinearizeExprTree (most of it wasDuncan Sands2012-11-181-11/+0
| | | | | | removed in commit 168035, but I missed this bit). llvm-svn: 168292
* Fix PR14060, an infinite loop in reassociate. The problem was that one of theDuncan Sands2012-11-181-6/+24
| | | | | | | | | | operands of the expression being written was wrongly thought to be reusable as an inner node of the expression resulting in it turning up as both an inner node *and* a leaf, creating a cycle in the def-use graph. This would have caused the verifier to blow up if things had gotten that far, however it managed to provoke an infinite loop first. llvm-svn: 168291
* Don't try to calculate the alignment of an unsigned type. Fixes PR14371!Nick Lewycky2012-11-181-1/+2
| | | | llvm-svn: 168280
* Add a new function to ConstantExpr - getAsInstruction. This returns its ↵James Molloy2012-11-171-0/+63
| | | | | | | | Instruction* corollary, which may be useful if a user wishes to transform a ConstantExpr so that one of its operands is no longer constant. llvm-svn: 168262
* Plug a memory leak in the GCOV profiling emitter, which never released the ↵Benjamin Kramer2012-11-171-5/+5
| | | | | | edge table memory. llvm-svn: 168259
* Broaden isSchedulingBoundary to check aliases of SP.Andrew Trick2012-11-171-1/+2
| | | | | | | | On PPC the stack pointer is X1, but ADJCALLSTACK writes R1. Fixes PR14315: Register regmask dependency problem with misched. llvm-svn: 168248
* Phi speculation improvement for BasicAAHal Finkel2012-11-171-3/+12
| | | | | | | | | | | | This is a partial solution to PR14351. It removes some of the special significance of the first incoming phi value in the phi aliasing checking logic in BasicAA. In the context of a loop, the old logic assumes that the first incoming value is the interesting one (meaning that it is the one that comes from outside the loop), but this is often not the case. With this change, we now test first the incoming value that comes from a block other than the parent of the phi being tested. llvm-svn: 168245
* Mark FP_EXTEND form v2f32 to v2f64 as "expand" for ARM NEON. Patch by Pete ↵Eli Friedman2012-11-172-0/+2
| | | | | | Couperus. llvm-svn: 168240
* LoopVectorizer: Add initial support for pointer induction variables (for ↵Nadav Rotem2012-11-171-33/+126
| | | | | | | | example: *dst++ = *src++). At the moment we still require to have an integer induction variable (for example: i++). llvm-svn: 168231
* Initial implementation of MipsTargetLowering::isLegalAddressingMode.Akira Hatanaka2012-11-172-0/+22
| | | | llvm-svn: 168230
* Rename methods like PairSRegs() to createSRegpairNode() to meet our codingWeiming Zhao2012-11-171-40/+34
| | | | | | style requirement. llvm-svn: 168229
* Teach SROA rewriteVectorizedStoreInst to handle cases when the loaded value ↵Evan Cheng2012-11-171-33/+42
| | | | | | is narrower than the stored value. rdar://12713675 llvm-svn: 168227
* Add some basic support for the fission addr forms to DebugInfo.Eric Christopher2012-11-161-0/+10
| | | | llvm-svn: 168223
* Remove hard coded registers in ARM ldrexd and strexd instructionsWeiming Zhao2012-11-166-62/+185
| | | | | | | | | This patch replaces the hard coded GPR pair [R0, R1] of Intrinsic:arm_ldrexd and [R2, R3] of Intrinsic:arm_strexd with even/odd GPRPair reg class. Similar to the lowering of atomic_64 operation. llvm-svn: 168207
* Use array_pod_sort instead of std::sort.Andrew Trick2012-11-161-41/+36
| | | | llvm-svn: 168203
* Make sure FABS on v2f32 and v4f32 is legal on ARM NEONAnton Korobeynikov2012-11-162-7/+9
| | | | | | This fixes PR14359 llvm-svn: 168200
* Fix handling of aliases to functions.Richard Osborne2012-11-161-13/+9
| | | | | | An alias to a function should use pc relative addressing. llvm-svn: 168199
* [NVPTX] Order global variables in def-use order before emiting them in the ↵Justin Holewinski2012-11-161-3/+67
| | | | | | final assembly llvm-svn: 168198
* Preserve address space of forward-referenced global variables in the LL parserJustin Holewinski2012-11-161-1/+3
| | | | | | | | | | | | Before, the parser would assert on the following code: @a2 = global i8 addrspace(1)* @a @a = addrspace(1) global i8 0 because the type of @a was "i8*" instead of "i8 addrspace(1)*" when parsing the initializer for @a2. llvm-svn: 168197
* Make this easier to understand, as suggested by Chandler.Duncan Sands2012-11-162-2/+12
| | | | llvm-svn: 168196
* Remove conditions from 'else if' that were guaranteed by preceding 'if'.Craig Topper2012-11-161-12/+12
| | | | llvm-svn: 168191
* InstructionSimplify should be able to simplify A+B==B+A to 'true'Duncan Sands2012-11-161-2/+14
| | | | | | but wasn't due to the same logic bug that caused PR14361. llvm-svn: 168186
* Using const cast to alleviate a warning.Joe Abbey2012-11-161-1/+2
| | | | | | A PR is being filed to address some code issues here. llvm-svn: 168185
* Factor out the final FADD that's common to multiple code paths in the ↵Craig Topper2012-11-161-45/+30
| | | | | | visitLog* functions. llvm-svn: 168183
* move irrelevant attribution.Chris Lattner2012-11-161-3/+1
| | | | llvm-svn: 168182
* Fix PR14361: wrong simplification of A+B==B+A. You may think that the old logicDuncan Sands2012-11-161-2/+14
| | | | | | | | | replaced by this patch is equivalent to the new logic, but you'd be wrong, and that's exactly where the bug was. There's a similar bug in instsimplify which manifests itself as instsimplify failing to simplify this, rather than doing it wrong, see next commit. llvm-svn: 168181
* SimplifyCFG: Don't assume non-null ScalarTargetTransformInfo.Hans Wennborg2012-11-161-1/+2
| | | | | | Patch by Pekka Jääskeläinen! llvm-svn: 168176
* Add the Erlang/HiPE calling convention, patch by Yiannis Tsiouris.Duncan Sands2012-11-163-5/+63
| | | | llvm-svn: 168166
* Add R_ARM_TARGET1 relocation to MCJIT and ensure that the runtime dyld readsAmara Emerson2012-11-162-3/+2
| | | | | | | | | all symbols during object loading, not just global ones. This fixes JIT execution of code using llvm.global_ctors with internal linkage constructors. llvm-svn: 168148
* Constant::IsThreadDependent(): Use dyn_cast<Constant> instead of castHans Wennborg2012-11-161-1/+3
| | | | | | | | | | | It turns out that the operands of a Constant are not always themselves Constant. For example, one of the operands of BlockAddress is BasicBlock, which is not a Constant. This should fix the dragonegg-x86_64-linux-gcc-4.6-test build which broke in r168037. llvm-svn: 168147
* [DebugInfo] Generate address ranges for compile units even if .debug_aranges ↵Alexey Samsonov2012-11-163-24/+39
| | | | | | is present: it is often the case that .debug_aranges section contains ranges only for a small subset of compile units. Test cases will be added in separate commits. llvm-svn: 168144
* Factor some common code to reduce compile size.Craig Topper2012-11-161-37/+20
| | | | llvm-svn: 168143
* LoopVectorize: Division reductions generate incorrect code. Remove the part ↵Nadav Rotem2012-11-161-2/+0
| | | | | | | | of the code that deals with divs. Thanks to Paul Redmond for catching this while reviewing the code. llvm-svn: 168142
* Use roundps/pd for llvm.ceil, llvm.trunc, llvm.rint, and llvm.nearbyint of ↵Craig Topper2012-11-162-0/+68
| | | | | | vector types. llvm-svn: 168141
OpenPOWER on IntegriCloud