summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Added support in MC for Directional Local Labels.Kevin Enderby2010-05-178-9/+283
| | | | llvm-svn: 103989
* More data/parsing support for tls directives. Add a few more testcasesEric Christopher2010-05-178-5/+54
| | | | | | and cleanup comments as well. llvm-svn: 103985
* Fix PR7156. If the sources of a REG_SEQUENCE are all IMPLICIT_DEF's. Replace ↵Evan Cheng2010-05-172-2/+57
| | | | | | it with an IMPLICIT_DEF rather than deleting it or else it would be left without a def. llvm-svn: 103984
* vmov of immediates are trivially re-materializable.Evan Cheng2010-05-171-0/+2
| | | | llvm-svn: 103982
* MC/Mach-O/x86: Optimal nop sequences should only be used for the .text ↵Daniel Dunbar2010-05-172-15/+86
| | | | | | sections, not all sections in the text segment. llvm-svn: 103981
* MC: Add dyn_cast support to MCSection.Daniel Dunbar2010-05-176-6/+42
| | | | | | - Of questionable utility, since in general anything which wants to do this should probably be within a target specific hook, which can rely on the sections being of the appropriate type. However, it can be useful for short term hacks. llvm-svn: 103980
* MC/Mach-O: Reverse order of SymbolData scanning when emitting instructions.Daniel Dunbar2010-05-172-1/+101
| | | | | | | - This fixes a string table mismatch with 'as' when two new symbols are defined in a single instruction. llvm-svn: 103979
* Pull the UsedInInstr.test() calls into calcSpillCost() and remember aliases.Jakob Stoklund Olesen2010-05-171-5/+5
| | | | | | | This fixes the miscompilations of MultiSource/Applications/JM/l{en,de}cod. Clang now successfully self hosts in a debug build with the fast register allocator. llvm-svn: 103975
* Add some section and constant support for darwin TLS.Eric Christopher2010-05-175-4/+51
| | | | llvm-svn: 103974
* Careful with reg_sequence coalescing to not to overwrite sub-register indices.Evan Cheng2010-05-172-40/+119
| | | | llvm-svn: 103971
* Fix a regression in 464.h264 for thumb1 and thumb2 nightly tests.Bob Wilson2010-05-171-1/+1
| | | | | | Obvious in retrospect but not fun to debug. llvm-svn: 103969
* MC/Mach-O: Fix some differences in symbol flag handling.Daniel Dunbar2010-05-172-31/+120
| | | | | | | | | | | | | - Don't clear weak reference flag, 'as' was only "trying" to do this, it wasn't actually succeeding. - Clear the "lazy bound" bit when we mark something external. This corresponds roughly to the lazy clearing of the bit that 'as' implements in symbol_table_lookup. - The exact meaning of these flags appears pretty loose, since 'as' isn't very consistent. For now we just try to match 'as', we will clean this up one day hopefully. llvm-svn: 103964
* Optimize empty DenseMap iteration.Jakob Stoklund Olesen2010-05-171-2/+3
| | | | llvm-svn: 103962
* Remove debug option. Add comment on spill order determinism.Jakob Stoklund Olesen2010-05-171-7/+4
| | | | llvm-svn: 103961
* Turn on -neon-reg-sequence by default.Evan Cheng2010-05-172-1/+172
| | | | | | Using NEON load / store multiple instructions will no longer create gobs of vmov of D registers! llvm-svn: 103960
* llvm-mc: Support reassignment of variables in one special case, when theDaniel Dunbar2010-05-173-8/+26
| | | | | | | | variable has not yet been used in an expression. This allows us to support a few cases that show up in real code (mostly because gcc generates it for Objective-C on Darwin), without giving up a reasonable semantic model for assignment. llvm-svn: 103950
* Avoid allocating the same physreg to multiple virtregs in one instruction.Jakob Stoklund Olesen2010-05-172-0/+106
| | | | | | | | | While that approach works wonders for register pressure, it tends to break everything. This should unbreak the arm-linux builder and fix a number of miscompilations. llvm-svn: 103946
* Minor optimizations. DenseMap::begin() is surprisingly slow on an empty map.Jakob Stoklund Olesen2010-05-171-8/+7
| | | | llvm-svn: 103940
* Extract spill cost calculation to a new method, and use definePhysReg() to clearJakob Stoklund Olesen2010-05-171-86/+64
| | | | | | | | | | out aliases when allocating. Clean up allocVirtReg(). Use calcSpillCost() to allow more aggressive hinting. Now the hint is always taken unless blocked by a reserved register. This leads to more coalescing, lower register pressure, and less spilling. llvm-svn: 103939
* Remove unused member variable.Zhongxing Xu2010-05-172-3/+0
| | | | llvm-svn: 103936
* Only use clairvoyance when defining a register, and then only if it has one use.Jakob Stoklund Olesen2010-05-172-25/+16
| | | | | | This makes allocation independent on the ordering of use-def chains. llvm-svn: 103935
* Eliminate a hash table probe when killing virtual registers.Jakob Stoklund Olesen2010-05-171-15/+20
| | | | llvm-svn: 103934
* Execute virtreg kills immediately instead of after processing all uses.Jakob Stoklund Olesen2010-05-171-19/+16
| | | | | | This is safe to do because the physreg has been marked UsedInInstr and the kill flag will be set on the last operand using the virtreg if there are more then one. llvm-svn: 103933
* Sprinkle superregister <imp-def> and <imp-kill> operands when dealing with ↵Jakob Stoklund Olesen2010-05-171-10/+28
| | | | | | subregister indices. llvm-svn: 103931
* Now that we don't keep live registers across calls, there is not reason to goJakob Stoklund Olesen2010-05-171-7/+12
| | | | | | | through the very long list of call-clobbered registers. We just assume all registers are clobbered. llvm-svn: 103930
* Boldly attempt consistent capitalization. Functional changes unintended.Jakob Stoklund Olesen2010-05-171-42/+42
| | | | llvm-svn: 103929
* Assume that we'll handle mangling the symbols earlier and just put theEric Christopher2010-05-173-12/+7
| | | | | | symbol to the file as we have it. Simplifies out tbss handling. llvm-svn: 103928
* Spill and kill all virtual registers across a call.Jakob Stoklund Olesen2010-05-171-56/+28
| | | | | | Debug code doesn't use callee saved registers anyway, and the code is simpler this way. Now spillVirtReg always kills, and the isKill parameter is not needed. llvm-svn: 103927
* Reduce hashtable probes by using DenseMap::insert() for lookup.Jakob Stoklund Olesen2010-05-171-48/+46
| | | | llvm-svn: 103926
* Make MBB a class member instead of passing it around everywhere.Jakob Stoklund Olesen2010-05-171-62/+62
| | | | llvm-svn: 103925
* Yes, if the redef is a copy, update the old val# with the copy. But make ↵Evan Cheng2010-05-171-8/+7
| | | | | | sure to clear the copy field if the redef is not a copy. llvm-svn: 103922
* No reason not to run the NEON domain croassing fix up pass in thumb2 mode.Evan Cheng2010-05-171-1/+1
| | | | llvm-svn: 103917
* Removing as part of previous reversion.Dale Johannesen2010-05-161-0/+0
| | | | llvm-svn: 103915
* Revert 103911; it broke a test that expects bitconvertDale Johannesen2010-05-162-15/+0
| | | | | | | | | <1xi64> -> i64 to work in MMX registers on hosts where -no-sse is the default (not mine). The right thing is to accept this and make i64->f64 conversions go through memory, but I don't have time right now. llvm-svn: 103914
* Make x86-64 64-bit bitconvert work when SSE is not available.Dale Johannesen2010-05-162-0/+15
| | | | | | | (This worked as of about 6 months ago and I didn't track down exactly what broke it; I think this fix is appropriate.) llvm-svn: 103911
* Chris said that the comment char should be escaped. Fix all the occurences ↵Anton Korobeynikov2010-05-164-28/+28
| | | | | | of "@" in *.td llvm-svn: 103903
* Add support for thiscall calling convention.Anton Korobeynikov2010-05-1613-7/+67
| | | | | | Patch by Charles Davis and Steven Watanabe! llvm-svn: 103902
* Generalize the ARM DAG combiner of mul with constants to all power-of-two cases.Anton Korobeynikov2010-05-161-34/+21
| | | | llvm-svn: 103901
* Model vst lane instructions with REG_SEQUENCE.Evan Cheng2010-05-161-7/+75
| | | | llvm-svn: 103898
* Avoid renaming loadable modules at install time. Now the gold plugin is namedRafael Espindola2010-05-162-1/+6
| | | | | | LLVMgold.so both in both the build and install directories. llvm-svn: 103897
* Use $ORIGIN in the rpath of libraries.Rafael Espindola2010-05-161-0/+4
| | | | llvm-svn: 103896
* Fix uint64->{float, double} conversion to do rounding correctly in 32-bit.Dale Johannesen2010-05-152-24/+76
| | | | | | | | | | | | | | | | | The implementation in LegalizeIntegerTypes to handle this as sint64->float + appropriate power of 2 is subject to double rounding, considered incorrect by numerics people. Use this implementation only when it is safe. This leads to using library calls in some cases that produced inline code before, but it's correct now. (EVTToAPFloatSemantics belongs somewhere else, any suggestions?) Add a correctly rounding (though not particularly fast) conversion that uses X87 80-bit computations for x86-32. 7885399, 5901940. This shows up in gcc.c-torture/execute/ieee/rbug.c in the gcc testsuite on some platforms. llvm-svn: 103883
* Improve assertion messages.Dale Johannesen2010-05-151-3/+8
| | | | llvm-svn: 103882
* Some cheap DAG combine goodness for multiplication with a particular constant.Anton Korobeynikov2010-05-152-4/+101
| | | | | | This can be extended later on to handle more "complex" constants. llvm-svn: 103881
* "trap" pseudo-op turned out to be apple-local.Anton Korobeynikov2010-05-152-2/+8
| | | | | | Temporary emit it as raw bytes until it will be added to binutils as well. llvm-svn: 103878
* improve portability to systems that don't have round, patch byChris Lattner2010-05-152-4/+6
| | | | | | Evzen Muller! llvm-svn: 103877
* improve portability to systems that don't have powf/modf (e.g. solaris 9)Chris Lattner2010-05-154-5/+5
| | | | | | patch by Evzen Muller! llvm-svn: 103876
* Fix an GCC warning that seems to have actually caught a bug (!!!) inChandler Carruth2010-05-151-2/+2
| | | | | | | | a condition's grouping. Every other use of Allocatable.test(Hint) groups it the same way as it is indented, so move the parentheses to agree with that grouping. llvm-svn: 103869
* Model 128-bit vld lane with REG_SEQUENCE.Evan Cheng2010-05-151-19/+44
| | | | llvm-svn: 103868
* Calculate liveness on the fly for local registers.Jakob Stoklund Olesen2010-05-151-0/+31
| | | | | | | | When working top-down in a basic block, substituting physregs for virtregs, the use-def chains are kept up to date. That means we can recognize a virtreg kill by the use-def chain becoming empty. This makes the fast allocator independent of incoming kill flags. llvm-svn: 103866
OpenPOWER on IntegriCloud