summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* AArch64: fix build on some MSVC versionsTim Northover2013-02-111-3/+3
| | | | | | | | | | | | | | | This does two things: It removes a call to abs() which may have "long long" parameter on Windows, which is not necessarily available in C++03. It also corrects the signedness of Amount, which was relying on implementation-defined conversions previously. Code was already tested (albeit in an implemnetation defined way) so no extra tests. llvm-svn: 174885
* AArch64: Simplify logic in deciding whether bfi is validTim Northover2013-02-111-6/+1
| | | | | | | | Previous code had a confusing comment which was mostly an implementation detail. This condition corresponds to "lsb up to register width" and "width not ridiculous". llvm-svn: 174877
* Make use of DiagnosticType to provide better AArch64 diagnostics.Tim Northover2013-02-112-18/+218
| | | | | | | | | This gives a DiagnosticType to all AsmOperands in sight. This replaces all "invalid operand" diagnostics with something more specific. The messages given should still be sufficiently vague that they're not usually actively misleading when LLVM guesses your instruction incorrectly. llvm-svn: 174871
* Add support for updating LiveIntervals to ↵Cameron Zwarich2013-02-112-1/+69
| | | | | | | | | | | | | | | MachineBasicBlock::SplitCriticalEdge(). This is currently a bit hairier than it needs to be, since depending on where the split block resides the end ListEntry of the split block may be the end ListEntry of the original block or a new entry. Some changes to the SlotIndexes updating should make it possible to eliminate the two cases here. This also isn't as optimized as it could be. In the future Liveinterval should probably get a flag that indicates whether the LiveInterval is within a single basic block. We could ignore all such intervals when splitting an edge. llvm-svn: 174870
* Update SlotIndexes after updateTerminator() possibly removes instructions. I amCameron Zwarich2013-02-111-0/+24
| | | | | | really trying to avoid piping SlotIndexes through to RemoveBranch() and friends. llvm-svn: 174869
* Add support for printing out the attribute groups.Bill Wendling2013-02-113-17/+88
| | | | | | | | | | | | This emits the attribute groups that are used by the functions. (It currently doesn't print out return type or parameter attributes within attribute groups.) Note: The functions still retrieve their attributes from the "old" bitcode format (using the deprecated 'Raw()' method). This means that string attributes within an attribute group will not show up during a disassembly. This will be addressed in a future commit. llvm-svn: 174867
* [tsan/msan] adding thread_safety and uninitialized_checks attributesKostya Serebryany2013-02-117-3/+19
| | | | llvm-svn: 174864
* Revert "Rename LLVMContext diagnostic handler types and functions."Bob Wilson2013-02-114-23/+25
| | | | | | | | | This reverts my commit 171047. Now that I've removed my misguided attempt to support backend warnings, these diagnostics are only about inline assembly. It would take quite a bit more work to generalize them properly, so I'm just reverting this. llvm-svn: 174860
* BBVectorize: Remove the linear searches from pair connection searchingHal Finkel2013-02-111-24/+11
| | | | | | | | | This removes the last of the linear searches over ranges of std::multimap iterators, giving a 7% speedup on the doduc.bc input from PR15222. No functionality change intended. llvm-svn: 174859
* BBVectorize: Avoid linear searches within the load-move setHal Finkel2013-02-111-20/+30
| | | | | | | | | This is another cleanup aimed at eliminating linear searches in ranges of std::multimap. No functionality change intended. llvm-svn: 174858
* BBVectorize: isa/cast cleanup in getInstructionTypesHal Finkel2013-02-111-4/+4
| | | | | | | | | | Profiling suggests that getInstructionTypes is performance-sensitive, this cleans up some double-casting in that function in favor of using dyn_cast. No functionality change intended. llvm-svn: 174857
* BBVectorize: Make the bookkeeping to support full cycle checking less expensiveHal Finkel2013-02-111-14/+25
| | | | | | | | | | | By itself, this does not have much of an effect, but only because in the default configuration the full cycle checks are used only for small problem sizes. This is part of a general cleanup of uses of iteration over std::multimap ranges only for the purpose of checking membership. No functionality change intended. llvm-svn: 174856
* Currently, codegen may spent some time in SDISel passes even if an entireEvan Cheng2013-02-113-8/+114
| | | | | | | | | | | | | | function is successfully handled by fast-isel. That's because function arguments are *always* handled by SDISel. Introduce FastLowerArguments to allow each target to provide hook to handle formal argument lowering. As a proof-of-concept, add ARMFastIsel::FastLowerArguments to handle functions with 4 or fewer scalar integer (i8, i16, or i32) arguments. It completely eliminates the need for SDISel for trivial functions. rdar://13163905 llvm-svn: 174855
* Remove unnecessary code.Evan Cheng2013-02-111-4/+0
| | | | llvm-svn: 174854
* Fix unnecessary removal of const through cast machineryDavid Blaikie2013-02-113-14/+14
| | | | | | | | I have some uncommitted changes to the cast code that catch this sort of thing at compile-time but I still need to do some other cleanup before I can enable it. llvm-svn: 174853
* Spelling correctionJoel Jones2013-02-101-1/+1
| | | | llvm-svn: 174852
* Fix the unused but nearly correct method SlotIndexes::insertMBBInMaps() and addCameron Zwarich2013-02-101-0/+14
| | | | | | | | support for updating SlotIndexes to MachineBasicBlock::SplitCriticalEdge(). This calls renumberIndexes() every time; it should be improved to only renumber locally. llvm-svn: 174851
* Abstract the liveness checking in PHIElimination::SplitPHIEdges() to supportCameron Zwarich2013-02-101-2/+37
| | | | | | both LiveVariables and LiveIntervals. llvm-svn: 174850
* Add support in the bitcode reader to read the attribute groups.Bill Wendling2013-02-102-0/+82
| | | | | | | | | This reads the attribute groups. It currently doesn't do anything with them. NOTE: In the commit to the bitcode writer, the format *may* change in the near future. Which means that this code would also change. llvm-svn: 174849
* The 'Raw' method cannot handle 'string' attributes. Don't even try.Bill Wendling2013-02-101-0/+4
| | | | llvm-svn: 174848
* Eat the alignment keyword if we're in an attribute group.Bill Wendling2013-02-101-0/+2
| | | | llvm-svn: 174846
* Add code for emitting the attribute groups.Bill Wendling2013-02-101-0/+53
| | | | | | | | | This is some initial code for emitting the attribute groups into the bitcode. NOTE: This format *may* change! Do not rely upon the attribute groups' bitcode not changing. llvm-svn: 174845
* Add support for attribute groups in the value enumerator.Bill Wendling2013-02-102-0/+24
| | | | | | | Attribute groups are essentially all AttributeSets which are used by the program. Enumerate them here. llvm-svn: 174844
* Test Commit - Remove some trailing whitespace in R600Instructions.tdVincent Lejeune2013-02-101-6/+6
| | | | llvm-svn: 174839
* Handle string attributes in the AttrBuilder.Bill Wendling2013-02-101-1/+5
| | | | llvm-svn: 174834
* Use a 'continue' here to stop from double lexing.Bill Wendling2013-02-101-1/+1
| | | | llvm-svn: 174833
* Add 'empty' query methods to the builder and use them in the verifier.Bill Wendling2013-02-101-1/+1
| | | | llvm-svn: 174832
* Add support for updating LiveIntervals to PHIElimination. If LiveIntervals areCameron Zwarich2013-02-101-29/+142
| | | | | | | | | | | | | | | | | | | present, it currently verifies them with the MachineVerifier, and this passed all of the test cases in 'make check' (when accounting for existing verifier errors). There were some assertion failures in the two-address pass, but they also happened on code without phis and look like they are caused by different kill flags from LiveIntervals. The only part that doesn't work is the critical edge splitting heuristic, because there isn't currently an efficient way to update LiveIntervals after splitting an edge. I'll probably start by implementing the slow fallback and test that it works before tackling the fast path for single-block ranges. The existing code that updates LiveVariables is fairly slow as it is. There isn't a command-line option for enabling this; instead, just edit PHIElimination.cpp to require LiveIntervals. llvm-svn: 174831
* Fix a typo.Cameron Zwarich2013-02-101-1/+1
| | | | llvm-svn: 174830
* Remove ancient references to 'atomic' phis in PHIElimination that don't reallyCameron Zwarich2013-02-101-12/+8
| | | | | | make sense anymore. llvm-svn: 174829
* Make LiveVariables an instance variable of PHIElimination.Cameron Zwarich2013-02-101-11/+9
| | | | llvm-svn: 174828
* Add accessor for the LLVMContext.Bill Wendling2013-02-101-0/+4
| | | | llvm-svn: 174824
* Remove unneeded "TargetMachine.h" #includes.Jakub Staszak2013-02-095-5/+0
| | | | llvm-svn: 174817
* TEMPORARY SYNTAX CHANGE!Bill Wendling2013-02-091-4/+7
| | | | | | | | | | | | | | | | | The original syntax for the attribute groups was ambiguous. For example: declare void @foo() #1 #0 = attributes { noinline } The '#0' would be parsed as an attribute reference for '@foo' and not as a top-level entity. In order to continue forward while waiting for a decision on what the correct syntax is, I'm changing it to this instead: declare void @foo() #1 attributes #0 = { noinline } Repeat: This is TEMPORARY until we decide what the correct syntax should be. llvm-svn: 174813
* [NVPTX] Make address space errors more explicit (llvm_unreachable -> ↵Justin Holewinski2013-02-091-1/+2
| | | | | | report_fatal_error) llvm-svn: 174808
* Fix the underlying problem that was causing read(0) to be called: sometimes theChris Lattner2013-02-091-3/+14
| | | | | | | | | | | | | | | bitcode writer would generate abbrev records saying that the abbrev should be filled with fixed zero-bit bitfields (this happens in the .bc writer when the number of types used in a module is exactly one, since log2(1) == 0). In this case, just handle it as a literal zero. We can't "just fix" the writer without breaking compatibility with existing bc files, so have the abbrev reader do the substitution. Strengthen the assert in read to reject reads of zero bits so we catch such crimes in the future, and remove the special case designed to handle this. llvm-svn: 174801
* LSR IVChain improvement.Andrew Trick2013-02-091-1/+13
| | | | | | | | | Handle chains in which the same offset is used for both loads and stores to the same array. Fixes rdar://11410078. llvm-svn: 174789
* Remove #includes from the commonly used LoopInfo.h.Jakub Staszak2013-02-093-0/+3
| | | | llvm-svn: 174786
* Dwarf: do not use line_table_start in at_stmt_list since we do not always emit Manman Ren2013-02-091-1/+4
| | | | | | line table entries in assembly. llvm-svn: 174785
* Remove the old liveness algorithm.Jakob Stoklund Olesen2013-02-091-308/+5
| | | | | | This is part of the plan to delete LiveVariables. llvm-svn: 174783
* Enable *BasicBlockPass::createPrinterPass()Sergei Larin2013-02-083-2/+38
| | | | | | Enables raw_ostream I/O for BasicBlockPass. llvm-svn: 174776
* Turn on -new-live-intervals by default.Jakob Stoklund Olesen2013-02-081-3/+3
| | | | | | | | This uses a liveness algorithm that does not depend on data from the LiveVariables analysis, it is the first step towards removing LiveVariables completely. llvm-svn: 174774
* R600: Dump the function name when TargetLowering::LowerCall() failsTom Stellard2013-02-081-0/+5
| | | | | | | Also output a more useful error message. NOTE: This is a candidate for the Mesa stable branch llvm-svn: 174763
* R600: rework flow creation in the structurizer v2Tom Stellard2013-02-081-177/+195
| | | | | | | | | | | | This fixes a couple of bugs and incorrect assumptions, in total four more piglit tests now pass. v2: fix small bug in the dominator updating Patch by: Christian König Signed-off-by: Christian König <christian.koenig@amd.com> llvm-svn: 174762
* R600: fix loop analyses in the structurizerTom Stellard2013-02-081-113/+183
| | | | | | | | | | Patch by: Christian König Intersecting loop handling was wrong. Signed-off-by: Christian König <christian.koenig@amd.com> Tested-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 174761
* R600: fix PHI value adding in the structurizerTom Stellard2013-02-081-65/+81
| | | | | | | | | | Otherwise we sometimes produce invalid code. Patch by: Christian König Signed-off-by: Christian König <christian.koenig@amd.com> Tested-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 174760
* Minor cleanup.Dan Gohman2013-02-081-1/+1
| | | | llvm-svn: 174756
* Revert "Add LLVMContext::emitWarning methods and use them. ↵Bob Wilson2013-02-087-69/+31
| | | | | | | | | | | | | <rdar://problem/12867368>" This reverts r171041. This was a nice idea that didn't work out well. Clang warnings need to be associated with warning groups so that they can be selectively disabled, promoted to errors, etc. This simplistic patch didn't allow for that. Enhancing it to provide some way for the backend to specify a front-end warning type seems like overkill for the few uses of this, at least for now. llvm-svn: 174748
* Add the 16 bit version of addiu. To the assembler, the 16 and 32 bit are theReed Kotler2013-02-082-0/+21
| | | | | | | | | | same so we put in the comment field an indicator when we think we are emitting the 16 bit version. For the direct object emitter, the difference is important as well as for other passes which need an accurate count of program size. There will be other similar putbacks to this for various instructions. llvm-svn: 174747
* DAGCombiner: Constant folding around pre-increment loads/storesHal Finkel2013-02-081-0/+89
| | | | | | | | | | | Previously, even when a pre-increment load or store was generated, we often needed to keep a copy of the original base register for use with other offsets. If all of these offsets are constants (including the offset which was combined into the addressing mode), then this is clearly unnecessary. This change adjusts these other offsets to use the new incremented address. llvm-svn: 174746
OpenPOWER on IntegriCloud