aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Allow copyRegToReg to emit cross register classes copies.Evan Cheng2007-09-266-16/+21
| | | | | | | Tested with "make check"! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42346 91177308-0d34-0410-b5e6-96231b3b80d8
* Move the setOperationAction(ISD::DEBUG_LOC, MVT::Other, Expand) andDan Gohman2007-09-251-0/+5
| | | | | | | | the check to see if the assembler supports .loc from X86TargetLowering into the superclass TargetLowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42297 91177308-0d34-0410-b5e6-96231b3b80d8
* Added major new capabilities to scheduler (only BURR for now) to support ↵Evan Cheng2007-09-255-150/+559
| | | | | | physical register dependency. The BURR scheduler can now backtrace and duplicate instructions in order to avoid "expensive / impossible to copy" values (e.g. status flag EFLAGS for x86) from being clobbered. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42284 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't emit .debug_line header data if there aren't any lines to put in it,Dan Gohman2007-09-241-0/+5
| | | | | | | such as will happen when .loc directives are used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42277 91177308-0d34-0410-b5e6-96231b3b80d8
* Move the Asm->EOL() call for EmitDebugARanges outside the #ifdef forDan Gohman2007-09-241-1/+1
| | | | | | | consistency with the other currently empty sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42276 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for emitting .file directives to set up file numbers forDan Gohman2007-09-241-0/+14
| | | | | | | use with .loc directives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42275 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a routine for emitting .file directives, for setting upDan Gohman2007-09-241-0/+11
| | | | | | | file numbers to use with .loc directives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42272 91177308-0d34-0410-b5e6-96231b3b80d8
* Use the correct result value type instead of using getValueType(0)Dan Gohman2007-09-241-4/+3
| | | | | | | | in ExpandEXTRACT_VECTOR_ELT and SplitVectorOp. This fixes an abort in the included testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42264 91177308-0d34-0410-b5e6-96231b3b80d8
* When emitting .set directives, make sure the EH and Debug labels can't conflict.Chris Lattner2007-09-241-10/+20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42257 91177308-0d34-0410-b5e6-96231b3b80d8
* initialize isstore/isload fields in ctor, fixing PR1695Chris Lattner2007-09-221-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42222 91177308-0d34-0410-b5e6-96231b3b80d8
* Change APFloat::convertFromInteger to take the incomingDale Johannesen2007-09-212-3/+6
| | | | | | | | | | | | bit width instead of number of words allocated, which makes it actually work for int->APF conversions. Adjust callers. Add const to one of the APInt constructors to prevent surprising match when called with const argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42210 91177308-0d34-0410-b5e6-96231b3b80d8
* don't read Block after it is freed. This fixes PR1684Chris Lattner2007-09-211-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42204 91177308-0d34-0410-b5e6-96231b3b80d8
* initialize SetCCResultContents, fixing PR1693Chris Lattner2007-09-211-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42193 91177308-0d34-0410-b5e6-96231b3b80d8
* More long double fixes. x86_64 should build now.Dale Johannesen2007-09-193-15/+49
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42155 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix longdouble -> uint conversion.Dale Johannesen2007-09-191-2/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42143 91177308-0d34-0410-b5e6-96231b3b80d8
* Use struct SDep instead of std::pair for SUnit pred and succ lists. First stepEvan Cheng2007-09-194-36/+36
| | | | | | | in tracking physical register output dependencies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42125 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a bogus splat xform:Evan Cheng2007-09-181-2/+1
| | | | | | | | | shuffle <undef, undef, x, undef>, <undef, undef, undef, undef>, <2, 2, 2, 2> != <undef, undef, x, undef> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42111 91177308-0d34-0410-b5e6-96231b3b80d8
* Prevent crash on long double.Dale Johannesen2007-09-181-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42103 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't pass back a reference to a temporary.Bill Wendling2007-09-181-2/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42086 91177308-0d34-0410-b5e6-96231b3b80d8
* The exception handling function info should be reset for each newBill Wendling2007-09-181-4/+2
| | | | | | | | | function. The information isn't used heavily -- it's only used at the end of exception handling emission -- so there's no need to cache it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42078 91177308-0d34-0410-b5e6-96231b3b80d8
* Objective-C was generating EH frame info like this:Bill Wendling2007-09-182-10/+20
| | | | | | | | | | "_-[NSString(local) isNullOrNil]".eh = 0 .no_dead_strip "_-[NSString(local) isNullOrNil]".eh The ".eh" should be inside the quotes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42074 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not hide APInt::dump() inside #ifndef NDEBUG.Devang Patel2007-09-171-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42068 91177308-0d34-0410-b5e6-96231b3b80d8
* This is not ideal but unbreaks build failure.Devang Patel2007-09-171-0/+2
| | | | | | | APInt::dump() is inside #ifndef NDEBUG, however SelectionDAG dump() routines are not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42047 91177308-0d34-0410-b5e6-96231b3b80d8
* Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfoChris Lattner2007-09-172-0/+2
| | | | | | | | Add a new DenseMapInfo::isEqual method to allow clients to redefine the equality predicate used when probing the hash table. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42042 91177308-0d34-0410-b5e6-96231b3b80d8
* Adjust per revew comments.Dale Johannesen2007-09-161-16/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42002 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the assumption that FP's are either float orDale Johannesen2007-09-143-31/+43
| | | | | | | | | | | | | | | double from some of the many places in the optimizers it appears, and do something reasonable with x86 long double. Make APInt::dump() public, remove newline, use it to dump ConstantSDNode's. Allow APFloats in FoldingSet. Expand X86 backend handling of long doubles (conversions to/from int, mostly). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41967 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove isReg, isImm, and isMBB, and change all their users to use Dan Gohman2007-09-148-35/+35
| | | | | | | | isRegister, isImmediate, and isMachineBasicBlock, which are equivalent, and more popular. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove spurious consts. This fixes warnings with compilers thatDan Gohman2007-09-141-1/+1
| | | | | | | are strict about such things. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41956 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix build problems on Cygwin (PR1652), patch by Patrick Walton.Chris Lattner2007-09-131-10/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41923 91177308-0d34-0410-b5e6-96231b3b80d8
* Bug fixes.Evan Cheng2007-09-131-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41900 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove dead code.Evan Cheng2007-09-121-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41899 91177308-0d34-0410-b5e6-96231b3b80d8
* Yet another getTargetNode variant.Evan Cheng2007-09-121-0/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41898 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed a typo that's causing a missing kill marker.Evan Cheng2007-09-121-4/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41893 91177308-0d34-0410-b5e6-96231b3b80d8
* Revise previous patch per review comments.Dale Johannesen2007-09-125-28/+62
| | | | | | | | | Next round of x87 long double stuff. Getting close now, basically works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41875 91177308-0d34-0410-b5e6-96231b3b80d8
* Sometimes a MI can define a register as well as defining a super-register at theEvan Cheng2007-09-111-6/+7
| | | | | | | same time. Do not mark the "smaller" def as dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41871 91177308-0d34-0410-b5e6-96231b3b80d8
* Add APInt interfaces to APFloat (allows directlyDale Johannesen2007-09-115-28/+33
| | | | | | | | | | | access to bits). Use them in place of float and double interfaces where appropriate. First bits of x86 long double constants handling (untested, probably does not work). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41858 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a bool to indicate if we should set the "indirect encoding" bit in the DwarfBill Wendling2007-09-111-1/+6
| | | | | | | | information for EH. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41852 91177308-0d34-0410-b5e6-96231b3b80d8
* Fold the adjust_trampoline intrinsic intoDuncan Sands2007-09-113-25/+16
| | | | | | | | init_trampoline. There is now only one trampoline intrinsic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41841 91177308-0d34-0410-b5e6-96231b3b80d8
* The personality function on Darwin needs a global stub. We then refer toBill Wendling2007-09-111-20/+9
| | | | | | | | that global stub instead of doing the ".set" thingy we were doing before. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41838 91177308-0d34-0410-b5e6-96231b3b80d8
* Observation of rematerialization.Evan Cheng2007-09-101-0/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41809 91177308-0d34-0410-b5e6-96231b3b80d8
* Emit:Chris Lattner2007-09-101-0/+10
| | | | | | | | | | | | | | | | | | | cmpl %eax, %ecx setae %al movzbl %al, %eax instead of: cmpl %eax, %ecx setb %al xorb $1, %al movzbl %al, %eax when using logical not of a C comparison. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41807 91177308-0d34-0410-b5e6-96231b3b80d8
* 1. Don't call Value::getName(), which is slow.Chris Lattner2007-09-101-38/+52
| | | | | | | | | | | | | | | | | | | | | 2. Lower calls to fabs and friends to FABS nodes etc unless the function has internal linkage. Before we wouldn't lower if it had a definition, which is incorrect. This allows us to compile: define double @fabs(double %f) { %tmp2 = tail call double @fabs( double %f ) ret double %tmp2 } into: _fabs: fabs f1, f1 blr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41805 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement misaligned FP loads and stores.Dale Johannesen2007-09-081-11/+48
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41786 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for having different alignment for objects on call frames.Rafael Espindola2007-09-071-2/+4
| | | | | | | | The x86-64 ABI states that objects passed on the stack have 8 byte alignment. Implement that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41768 91177308-0d34-0410-b5e6-96231b3b80d8
* Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is ↵Anton Korobeynikov2007-09-072-12/+21
| | | | | | | | | needed, because they just "mark" register liveins and we let frontend solve type issue, not lowering code :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41763 91177308-0d34-0410-b5e6-96231b3b80d8
* Add lengthof and endof templates that hide a lot of sizeof computations.Owen Anderson2007-09-072-4/+5
| | | | | | | Patch by Sterling Stein! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41758 91177308-0d34-0410-b5e6-96231b3b80d8
* Constify to catch bugs.David Greene2007-09-061-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41751 91177308-0d34-0410-b5e6-96231b3b80d8
* Next round of APFloat changes.Dale Johannesen2007-09-063-5/+9
| | | | | | | | | | | | | | | Use APFloat in UpgradeParser and AsmParser. Change all references to ConstantFP to use the APFloat interface rather than double. Remove the ConstantFP double interfaces. Use APFloat functions for constant folding arithmetic and comparisons. (There are still way too many places APFloat is just a wrapper around host float/double, but we're getting there.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41747 91177308-0d34-0410-b5e6-96231b3b80d8
* Proper handle case, when aliasee is external weak symbol referenced only by ↵Anton Korobeynikov2007-09-061-6/+13
| | | | | | | | | alias itself. Also, fix a case, when target doesn't have weak symbols supported. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41746 91177308-0d34-0410-b5e6-96231b3b80d8
* Add instruction dump output. This helps find bugs.David Greene2007-09-061-0/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41744 91177308-0d34-0410-b5e6-96231b3b80d8