summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix an X86-64 abi bug. We now compile:Chris Lattner2007-02-251-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | void foo(short); void bar(unsigned short A) { foo(A); } into: _bar: subq $8, %rsp movswl %di, %edi call _foo addq $8, %rsp ret instead of: _bar: subq $8, %rsp call _foo addq $8, %rsp ret Testcase here: test/CodeGen/X86/x86-64-shortint.ll llvm-svn: 34615
* new testcaseChris Lattner2007-02-251-0/+13
| | | | llvm-svn: 34614
* fix CodeGen/X86/2007-02-25-FastCCStack.ll, a regression from my patch lastChris Lattner2007-02-251-1/+1
| | | | | | night: fastcc returns should only go in XMM0 if we have SSE2 or above. llvm-svn: 34613
* new testcaseChris Lattner2007-02-251-0/+5
| | | | llvm-svn: 34612
* new testcaseChris Lattner2007-02-251-0/+11
| | | | llvm-svn: 34611
* Fix for PR1224.Jim Laskey2007-02-251-35/+50
| | | | llvm-svn: 34610
* Test for PR1224.Jim Laskey2007-02-251-0/+12
| | | | llvm-svn: 34609
* Rework GlobalValue::removeDeadConstantUsers to always remove dead constantChris Lattner2007-02-252-25/+29
| | | | | | | | | | exprs hanging off a global, even if the global is not otherwise dead. This requires some tricky iterator gymnastics. This implements Transforms/GlobalOpt/constantexpr-dangle.ll by deleting a constantexpr that made it appear that the address of the function was taken. llvm-svn: 34608
* new testcase. @foo should be marked fastcc by globaloptChris Lattner2007-02-251-0/+11
| | | | llvm-svn: 34607
* disable some noisy debug outputChris Lattner2007-02-251-12/+12
| | | | llvm-svn: 34606
* no really, this is the right patchChris Lattner2007-02-251-1/+1
| | | | llvm-svn: 34605
* always promote float varargs to double.Chris Lattner2007-02-251-1/+1
| | | | llvm-svn: 34604
* 1. Provide more detail in file comment.Reid Spencer2007-02-251-189/+145
| | | | | | | | | | | | | | 2. Move comments for methods to .h file, delete them in .cpp file. 3. All places that were doing manual clear of high order bits now call the clearUnusedBits() method in order to not depend on undefined behavior of the >> operator when the number of bits shifted equals the word size. 4. Reduced # of loc by using the new result of clearUnusedBits() method. 5. Simplified logic (decreased indentation) in a few places. 6. Added code comments to larger functions that needed them. 7. Added FIXME notes about weak implementations of things (e.g. bit-by-bit shift right is sub-optimal). llvm-svn: 34603
* Fix clearUnusedBits to not depend on "undefined behavior" of >> operatorReid Spencer2007-02-251-9/+40
| | | | | | | | | | | when the bit size is equal to the word size. This happens to work out okay on x86, but might not on other platforms. The change just detects when there are no bits to clear (because BitWidth is a multiple of the word size) and returns early. Also, move some comments from .cpp file into header. llvm-svn: 34602
* one important bugfix: PPC32 didn't have both elf and macho support forChris Lattner2007-02-252-6/+10
| | | | | | | | | external symbols and global addresses. Add the missing ones. one important workaround: PPCISD::CALL is matched by both PPCcall_ELF and PPCcall_Macho, disable the _ELF patterns for now. llvm-svn: 34601
* add -enable-ehChris Lattner2007-02-251-1/+9
| | | | llvm-svn: 34600
* optimize duplicate ValueMap lookupsChris Lattner2007-02-251-9/+6
| | | | llvm-svn: 34599
* cosmetic changes from review of last patch. obviousDale Johannesen2007-02-252-4/+5
| | | | llvm-svn: 34598
* A couple of more places where a register liveness has been extended and its ↵Evan Cheng2007-02-251-5/+57
| | | | | | last kill should be updated accordingly. llvm-svn: 34597
* Add an assertion.Evan Cheng2007-02-251-2/+4
| | | | llvm-svn: 34596
* Fix a couple of bugs related IsDead back propagation during coalescing.Evan Cheng2007-02-251-5/+10
| | | | llvm-svn: 34595
* If the liveinterval of the source instruction has been extended, remove the ↵Evan Cheng2007-02-251-0/+6
| | | | | | IsKill marker. llvm-svn: 34594
* Only add liveinterval to livein set if it isn't assigned a stack slot.Evan Cheng2007-02-251-4/+4
| | | | llvm-svn: 34593
* fastcc functions that return double values now return them in xmm0 on x86-32.Chris Lattner2007-02-251-1/+3
| | | | | | This implements CodeGen/X86/fp-stack-ret.ll:test[23] llvm-svn: 34592
* verify that double is returned in XMM0 if the function is fastcc.Chris Lattner2007-02-251-3/+16
| | | | llvm-svn: 34591
* allow vectors to be passed to stdcall/fastcall functionsChris Lattner2007-02-251-18/+10
| | | | llvm-svn: 34590
* move LowerRET into the 'Return Value Calling Convention Implementation'Chris Lattner2007-02-251-75/+77
| | | | | | section of the file. llvm-svn: 34589
* make all Lower*CallTo implementations use LowerCallResult to handle theirChris Lattner2007-02-251-153/+10
| | | | | | | result value stuff. This eliminates a bunch of duplicated code and now GetRetValueLocs is the sole place that decides where a value is returned. llvm-svn: 34588
* pass the calling convention into Lower*CallTo, instead of using ad-hoc flags.Chris Lattner2007-02-252-23/+19
| | | | llvm-svn: 34587
* factor a bunch of code out of LowerCCCCallTo into a new LowerCallResultChris Lattner2007-02-252-100/+97
| | | | | | | | function. This function now uses GetRetValueLocs to determine *where* the result values are located and concerns itself with *how* to pull the values out. llvm-svn: 34586
* move some code around, pass in calling conv, even though it is unusedChris Lattner2007-02-251-39/+46
| | | | llvm-svn: 34585
* fold trivial token factor nodes. This allows us to compileChris Lattner2007-02-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | test/CodeGen/X86/fp-stack-ret.ll into: movl 4(%esp), %eax fldl (%eax) ret instead of: subl $12, %esp movl 16(%esp), %eax movsd (%eax), %xmm0 movsd %xmm0, (%esp) fldl (%esp) addl $12, %esp ret by eliminating a token factor that blocked a check. llvm-svn: 34584
* new testcaseChris Lattner2007-02-251-0/+12
| | | | llvm-svn: 34583
* simplify result value lowering by splitting the selection of *where* to returnChris Lattner2007-02-252-91/+111
| | | | | | | | | registers out from the logic of *how* to return them. This changes X86-64 to mark EAX live out when returning a 32-bit value, where before it marked RAX liveout. llvm-svn: 34582
* Allow this to compile now that the header file is checked in.Reid Spencer2007-02-251-4/+0
| | | | llvm-svn: 34581
* Add a private constructor for efficiency.Reid Spencer2007-02-251-0/+4
| | | | llvm-svn: 34580
* make void-return not a special caseChris Lattner2007-02-251-33/+17
| | | | llvm-svn: 34579
* eliminate a bunch more temporary vectors from X86 lowering.Chris Lattner2007-02-251-177/+142
| | | | llvm-svn: 34578
* eliminate temporary vectors created during X86 lowering.Chris Lattner2007-02-251-70/+47
| | | | llvm-svn: 34577
* remove std::vector's in RET lowering.Chris Lattner2007-02-251-22/+11
| | | | llvm-svn: 34576
* verify i128 return on x86-64 continues to codegen optimally.Chris Lattner2007-02-251-0/+8
| | | | llvm-svn: 34575
* implement support for the linux/ppc function call ABI. Patch byChris Lattner2007-02-258-102/+343
| | | | | | Nicolas Geoffray! llvm-svn: 34574
* Add XLForm_1_ext template, patch by Nicolas Geoffray.Chris Lattner2007-02-251-14/+24
| | | | llvm-svn: 34573
* Improve JIT support for linux/ppc: Patch by Nicolas Geoffray!Chris Lattner2007-02-253-2/+70
| | | | llvm-svn: 34572
* this doesn't compile, disable itChris Lattner2007-02-251-0/+4
| | | | llvm-svn: 34571
* remove these.Chris Lattner2007-02-251-1/+0
| | | | llvm-svn: 34570
* Clean up lshr and ashr to coding standards.Reid Spencer2007-02-251-53/+79
| | | | | | Handle the single word cases for shiftAmt == BitWidth. llvm-svn: 34569
* remove crediting of Evan Cheng and me.Dale Johannesen2007-02-251-1/+0
| | | | llvm-svn: 34568
* initialize a instance variableChris Lattner2007-02-251-0/+1
| | | | llvm-svn: 34567
* update this for llvm-gcc4Chris Lattner2007-02-251-92/+76
| | | | llvm-svn: 34566
OpenPOWER on IntegriCloud