summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Start separating out code metrics into code size metrics and code ↵Kenneth Uildriks2010-10-083-13/+63
| | | | | | performance metrics. Partial Specialization will apply the former to function specializations, and the latter to all callsites that can use a specialization, in order to decide whether to create a specialization llvm-svn: 116057
* Small patch to restore home register stack space allocation for the Win64 ↵Cameron Esfahani2010-10-082-1/+16
| | | | | | case. Add test case. This code eventually needs to be tighter, since it's always allocating it, even in leaf routines. llvm-svn: 116056
* Change register allocation order for ARM VFP and NEON registers to put theBob Wilson2010-10-0820-111/+235
| | | | | | | | | | | | | | | | callee-saved registers at the end of the lists. Also prefer to avoid using the low registers that are in register subclasses required by certain instructions, so that those registers will more likely be available when needed. This change makes a huge improvement in spilling in some cases. Thanks to Jakob for helping me realize the problem. Most of this patch is fixing the testsuite. There are quite a few places where we're checking for specific registers. I changed those to wildcards in places where that doesn't weaken the tests. The spill-q.ll and thumb2-spill-q.ll tests stopped spilling with this change, so I added a bunch of live values to force spills on those tests. llvm-svn: 116055
* testcase that goes with r116053Chris Lattner2010-10-081-1/+18
| | | | llvm-svn: 116054
* fix a subtle bug I introduced in my refactoring, where we stopped preferringChris Lattner2010-10-081-24/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | the i8 versions of instructions in some cases. In test6, we started generating: cmpq $0, -8(%rsp) ## encoding: [0x48,0x81,0x7c,0x24,0xf8,0x00,0x00,0x00,0x00] ## <MCInst #478 CMP64mi32 ## <MCOperand Reg:114> ## <MCOperand Imm:1> ## <MCOperand Reg:0> ## <MCOperand Imm:-8> ## <MCOperand Reg:0> ## <MCOperand Imm:0>> instead of: cmpq $0, -8(%rsp) ## encoding: [0x48,0x83,0x7c,0x24,0xf8,0x00] ## <MCInst #479 CMP64mi8 ## <MCOperand Reg:114> ## <MCOperand Imm:1> ## <MCOperand Reg:0> ## <MCOperand Imm:-8> ## <MCOperand Reg:0> ## <MCOperand Imm:0>> Fix this and add some comments. llvm-svn: 116053
* rename testChris Lattner2010-10-081-0/+0
| | | | llvm-svn: 116052
* merge testsChris Lattner2010-10-083-43/+44
| | | | llvm-svn: 116051
* filecheckize.Chris Lattner2010-10-081-4/+9
| | | | llvm-svn: 116050
* Added mutex protection to the Symtab class.Greg Clayton2010-10-087-84/+352
| | | | | | | | Added a new SortOrder enumeration and hooked it up to the "image dump symtab" command so we can dump symbol tables in the original order, sorted by address, or sorted by name. llvm-svn: 116049
* Fix three related, wily issues with the recompilation of precompiledDouglas Gregor2010-10-081-14/+5
| | | | | | | | | | | | | | | | | | | | | | | preambles: - When we rebuild a precompiled preamble, make sure to disable skipping anything in the main file; we may have had leftover preamble-skipping values in the lexer, which leads to very empty preamble. This is a correctness issue. - When we rebuild a precompiled preamble, clear out any prior state in the Diagnostic object. Otherwise, we might think that there were errors when we were building the preamble itself, and therefore reject the resulting preamble. This is mainly a performance issue. - Don't remove old remappings when digging out the remapping for the main file. Having the old mappings around does not hurt in the common case (later remappings will just overwrite them), and is important when we fail to find a preamble: we don't want to have removed the remapping, because we'll need it later. llvm-svn: 116041
* reapply: Use the new TB_NOT_REVERSABLE flag instead of specialChris Lattner2010-10-084-40/+113
| | | | | | | | | reapply: reimplement the second half of the or/add optimization. We should now with no changes. Turns out that one missing "Defs = [EFLAGS]" can upset things a bit. llvm-svn: 116040
* reapply the patch reverted in r116033:Chris Lattner2010-10-084-65/+126
| | | | | | | | "Reimplement (part of) the or -> add optimization. Matching 'or' into 'add'" With a critical fix: the add pseudos clobber EFLAGS. llvm-svn: 116039
* Fix Formatting.Michael J. Spencer2010-10-081-2/+2
| | | | llvm-svn: 116038
* MC-COFF: Fix Simple and Complex type. Fixes PR8320.Michael J. Spencer2010-10-082-12/+25
| | | | llvm-svn: 116037
* Fix Whitespace.Michael J. Spencer2010-10-081-3/+3
| | | | llvm-svn: 116036
* When we encounter a '==' in a context expecting a '=', assume the user made ↵Argyrios Kyrtzidis2010-10-086-3/+38
| | | | | | | | | | | | | a typo: t.c:1:7: error: invalid '==' at end of declaration; did you mean '='? int x == 0; ^~ = Implements rdar://8488464. llvm-svn: 116035
* Update CMake.Daniel Dunbar2010-10-081-1/+0
| | | | llvm-svn: 116034
* Revert "Reimplement (part of) the or -> add optimization. Matching 'or' intoDaniel Dunbar2010-10-084-126/+65
| | | | | | 'add'", which seems to have broken just about everything. llvm-svn: 116033
* Revert "Use the new TB_NOT_REVERSABLE flag instead of special ", which dependsDaniel Dunbar2010-10-081-26/+20
| | | | | | on r116007, which I am about to revert. llvm-svn: 116032
* Revert "reimplement the second half of the or/add optimization. We should now",Daniel Dunbar2010-10-084-87/+20
| | | | | | which depends on r116007, which I am about to revert. llvm-svn: 116031
* Fix -Asserts warning.Daniel Dunbar2010-10-081-0/+3
| | | | llvm-svn: 116030
* Track the location of the context requiring an implicit conversion and use itJohn McCall2010-10-088-36/+84
| | | | | | to white-list conversions required by system headers. rdar://problem/8232669 llvm-svn: 116029
* Added extra logging, and made sure that the argumentSean Callanan2010-10-083-0/+52
| | | | | | | struct for expressions is deallocated when the ClangExpressionDeclMap is taken down. llvm-svn: 116028
* Move to thumb2 loads, fixes a problem with incoming registersEric Christopher2010-10-081-16/+13
| | | | | | | | as thumb1. Fixes lencod. llvm-svn: 116027
* reimplement the second half of the or/add optimization. We should nowChris Lattner2010-10-084-20/+87
| | | | | | | | | | only end up emitting LEA instead of OR. If we aren't able to promote something into an LEA, we should never be emitting it as an ADD. Add some testcases that we emit "or" in cases where we used to produce an "add". llvm-svn: 116026
* Pass '-f' option to rm command so that it won't report an error if the file toJohnny Chen2010-10-081-1/+1
| | | | | | be removed does not exist for any reason. llvm-svn: 116025
* Add test file for simple ARM binary encodings with MCJim Grosbach2010-10-081-0/+18
| | | | llvm-svn: 116024
* The expected term-width output string should be put within a list, not as a ↵Johnny Chen2010-10-081-3/+3
| | | | | | | | | list of characters. Also uncomment the cleanup of "stdout.txt" file as part of the class cleanup routine even though test_set_output_path() is failing right now. llvm-svn: 116023
* Enable binary encoding of some simple instructions.Jim Grosbach2010-10-081-0/+8
| | | | llvm-svn: 116022
* Try to fix ocaml bindings.Eric Christopher2010-10-083-14/+0
| | | | llvm-svn: 116021
* Implement -fshort-enums (rdar://8490496).Argyrios Kyrtzidis2010-10-0810-7/+31
| | | | llvm-svn: 116020
* Bumped versions to lldb-26 and debugserver-114 for a build.Greg Clayton2010-10-083-16/+16
| | | | llvm-svn: 116019
* Make <target>CodeEmitter::getBinaryCodeForInstr() a const method.Jim Grosbach2010-10-085-9/+9
| | | | llvm-svn: 116018
* Hooked up ability to look up data symbols so they show up in disassemblyGreg Clayton2010-10-089-17/+119
| | | | | | | | | | | | if the address comes from a data section. Fixed an issue that could occur when looking up a symbol that has a zero byte size where no match would be returned even if there was an exact symbol match. Cleaned up the section dump output and added the section type into the output. llvm-svn: 116017
* Use the new TB_NOT_REVERSABLE flag instead of special Chris Lattner2010-10-081-20/+26
| | | | | | casing FsMOVAPDrr/FsMOVAPSrr. llvm-svn: 116016
* MC-COFF: Add test for my last commit.Michael J. Spencer2010-10-081-0/+29
| | | | llvm-svn: 116015
* simplify some map operations.Chris Lattner2010-10-072-16/+14
| | | | llvm-svn: 116014
* MC-COFF: Handle relaxation in COFF better. Fixes PR8321.Michael J. Spencer2010-10-071-1/+29
| | | | llvm-svn: 116013
* Delete the FormulaSorter class and inline its one method into itsDan Gohman2010-10-071-28/+10
| | | | | | | one user. This code will be restructured soon and FormulaSorter is getting in the way. llvm-svn: 116012
* Fix a spello.Dan Gohman2010-10-071-1/+1
| | | | llvm-svn: 116011
* Charge a formula for explicit multiplies on scaled registers too,Dan Gohman2010-10-071-3/+3
| | | | | | not just base registers. llvm-svn: 116010
* Use size_t for consistency.Dan Gohman2010-10-071-1/+1
| | | | llvm-svn: 116009
* When merging one use into another, transfer the offsets fromDan Gohman2010-10-071-0/+8
| | | | | | the old use to the new one. llvm-svn: 116008
* Reimplement (part of) the or -> add optimization. Matching 'or' into 'add'Chris Lattner2010-10-074-65/+126
| | | | | | | | | | | | | | | | | | | is general goodness because it allows ORs to be converted to LEA to avoid inserting copies. However, this is bad because it makes the generated .s file less obvious and gives valgrind heartburn (tons of false positives in bitfield code). While the general fix should be in valgrind, we can at least try to avoid emitting ADD instructions that *don't* get promoted to LEA. This is more work because it requires introducing pseudo instructions to represents "add that knows the bits are disjoint", but hey, people really love valgrind. This fixes this testcase: https://bugs.kde.org/show_bug.cgi?id=242137#c20 the add r/i cases are coming next. llvm-svn: 116007
* After splitting, the remaining LiveInterval may be fragmented into multipleJakob Stoklund Olesen2010-10-073-12/+174
| | | | | | | | | | | | | connected components. These components should be allocated different virtual registers because there is no reason for them to be allocated together. Add the ConnectedVNInfoEqClasses class to calculate the connected components, and move values to new LiveIntervals. Use it from SplitKit::rewrite by creating new virtual registers for the components. llvm-svn: 116006
* Fix LSR to keep the RegUseTracker up to date when combining users.Dan Gohman2010-10-071-8/+19
| | | | | | | | This doesn't usually matter, because the other heuristics usually succeed regardless, but it's good to keep the register use bookkeeping consistent. llvm-svn: 116005
* Remove LoopIndexSplit pass. It is neither maintained nor used by anyone.Devang Patel2010-10-0743-3661/+0
| | | | llvm-svn: 116004
* Unbreak cmake build.John Thompson2010-10-071-0/+1
| | | | llvm-svn: 116003
* Code refactoring.Evan Cheng2010-10-072-104/+160
| | | | llvm-svn: 116002
* Reduce casting in various tables by defining the tableChris Lattner2010-10-072-27/+26
| | | | | | with the right types. llvm-svn: 116001
OpenPOWER on IntegriCloud