summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Temporarily revert 58825, which breaks PPC bootstrap.Dale Johannesen2008-11-091-1/+3
| | | | | | xs llvm-svn: 58930
* Temporary revert my last commit: it seems it's triggering some subtle bug in ↵Anton Korobeynikov2008-11-081-7/+0
| | | | | | | | backend and breaks llvm-gcc llvm-svn: 58926
* Try to produce better code when scalarizing VSETCC.Duncan Sands2008-11-081-8/+26
| | | | llvm-svn: 58920
* Factor out offset printing code into generic AsmPrinter.Anton Korobeynikov2008-11-081-0/+7
| | | | | | | FIXME: it seems, that most of targets don't support offsets wrt CPI/GlobalAddress', was it intentional? llvm-svn: 58917
* Rename startFunctionStub to startGVStub since it's also used for GV non-lazy ↵Evan Cheng2008-11-082-6/+6
| | | | | | ptr. llvm-svn: 58897
* Make testb optimization work on big-endian targets.Dale Johannesen2008-11-081-1/+4
| | | | llvm-svn: 58874
* Make FP tests requiring two compares work on PPC (PR 642).Dale Johannesen2008-11-071-2/+2
| | | | | | | | | | This is Chris' patch from the PR, modified to realize that SETUGT/SETULT occur legitimately with integers, plus two fixes in LegalizeDAG to pass a valid result type into LegalizeSetCC. The argument of TLI.getSetCCResultType is ignored on PPC, but I think I'm following usage elsewhere. llvm-svn: 58871
* Sign-extend rather than zero-extend when promotingDuncan Sands2008-11-071-6/+19
| | | | | | | | | | | | | | | | the condition for a BRCOND, according to what is returned by getSetCCResultContents. Since all targets return the same thing (ZeroOrOneSetCCResult), this should be harmless! The point is that all over the place the result of SETCC is fed directly into BRCOND. On machines for which getSetCCResultContents returns ZeroOrNegativeOneSetCCResult, this is a sign-extended boolean. So it seems dangerous to also feed BRCOND zero-extended booleans in some circumstances - for example, when promoting the condition. llvm-svn: 58861
* Fix unsigned->ppcf128 conversion.Dale Johannesen2008-11-071-0/+3
| | | | llvm-svn: 58856
* Refactor code that adjusts the offsets of stack objects.Bill Wendling2008-11-071-79/+34
| | | | llvm-svn: 58829
* When we're doing a compare of load-AND-constant to 0Dale Johannesen2008-11-071-0/+46
| | | | | | | | | (e.g. a bitfield test) narrow the load as much as possible. The has the potential to avoid unnecessary partial-word load-after-store conflicts, which cause stalls on several targets. Also a size win on x86 (testb vs testl). llvm-svn: 58825
* - Modify the stack protector algorithm so that the stack slot is allocated inBill Wendling2008-11-072-39/+33
| | | | | | | | | LLVM IR code and not in the selection DAG ISel. This is a cleaner solution. - Fix the heuristic for determining if protectors are necessary. The previous one wasn't checking the proper type size. llvm-svn: 58824
* Remove unneeded header file.Bill Wendling2008-11-061-1/+0
| | | | llvm-svn: 58823
* Don't build a vector of returns. Just modify the Function in the loop.Bill Wendling2008-11-061-46/+49
| | | | llvm-svn: 58822
* Fixed scalarizing an extract subvector and prevent an infinite loopMon P Wang2008-11-061-3/+3
| | | | | | when simplify a vector. llvm-svn: 58820
* The size limit is for individual arrays. So if any array has more than 8 bytesBill Wendling2008-11-061-5/+3
| | | | | | in it, then emit stack protectors. llvm-svn: 58819
* Don't recalculate the stack position of the stack protector.Bill Wendling2008-11-061-0/+2
| | | | llvm-svn: 58815
* Emit label for llvm.dbg.func.start of the inlined function.Devang Patel2008-11-061-3/+8
| | | | llvm-svn: 58814
* Formating/comment changes - no functionality change.Duncan Sands2008-11-061-13/+8
| | | | llvm-svn: 58801
* - Rename stackprotector_{prologue,epilogue} to stackprotector_{create,check}.Bill Wendling2008-11-063-7/+5
| | | | | | | - Get rid of "HasStackProtector" in MachineFrameInfo. - Modify intrinsics to tell which are doing what with memory. llvm-svn: 58799
* Widening cleanupMon P Wang2008-11-063-21/+20
| | | | llvm-svn: 58796
* Adjust the stack protector heuristic to care about only arrays or calls toBill Wendling2008-11-061-1/+9
| | | | | | "alloca". llvm-svn: 58792
* Implement the stack protector stack accesses via intrinsics:Bill Wendling2008-11-063-9/+81
| | | | | | | | | | | | - stackprotector_prologue creates a stack object and stores the guard there. - stackprotector_epilogue reads the stack guard from the stack position created by stackprotector_prologue. - The PrologEpilogInserter was changed to make sure that the stack guard is first on the stack frame. llvm-svn: 58791
* Emit label for llvm.dbg.func.start of the inlined function.Devang Patel2008-11-061-3/+6
| | | | llvm-svn: 58786
* Fix thinko in ppcf128 expansion of truncating store.Duncan Sands2008-11-051-1/+1
| | | | llvm-svn: 58753
* Type of shuffle mask has changed.Evan Cheng2008-11-051-1/+2
| | | | llvm-svn: 58751
* Remove dead variable.Bill Wendling2008-11-051-1/+0
| | | | llvm-svn: 58741
* Simplify the allocated size calculation.Bill Wendling2008-11-051-3/+3
| | | | llvm-svn: 58740
* Fix commentBill Wendling2008-11-051-1/+2
| | | | llvm-svn: 58739
* Use the new predicate to control when we do prealloc splitting. Fix a small ↵Owen Anderson2008-11-051-1/+5
| | | | | | bug. llvm-svn: 58738
* Some code simplification. It now doesn't generate a prologue if the epilogueBill Wendling2008-11-051-61/+47
| | | | | | isn't going to be generated. llvm-svn: 58734
* Small simplification of the stack guard type.Bill Wendling2008-11-041-4/+3
| | | | llvm-svn: 58728
* - Add a "getOrInsertGlobal" method to the Module class. This acts similarly toBill Wendling2008-11-041-14/+11
| | | | | | | | | | "getOrInsertFunction" in that it either adds a new declaration of the global and returns it, or returns the current one -- optionally casting it to the correct type. - Use the new getOrInsertGlobal in the stack protector code. - Use "splitBasicBlock" in the stack protector code. llvm-svn: 58727
* First pass at checking for the creation of a new join point when doing ↵Owen Anderson2008-11-041-0/+73
| | | | | | pre-alloc splitting. This is not turned on yet. llvm-svn: 58726
* Update in response to feedback from Chris:Bill Wendling2008-11-042-32/+47
| | | | | | | | | | | | | | | | | - Use enums instead of magic numbers. - Rework algorithm to use the bytes size from the target to determine when to emit stack protectors. - Get rid of "propolice" in any comments. - Renamed an option to its expanded form. - Other miscellanenous changes. More changes will come after this. llvm-svn: 58723
* 80 columnsDale Johannesen2008-11-041-2/+2
| | | | llvm-svn: 58717
* Fix typo. Patch by nlewycky.Duncan Sands2008-11-041-1/+1
| | | | llvm-svn: 58709
* Fix PR3011: LegalizeTypes support for scalarizingDuncan Sands2008-11-042-0/+10
| | | | | | SELECT_CC. llvm-svn: 58706
* fix leakage of IfcvtTokensNuno Lopes2008-11-041-1/+5
| | | | llvm-svn: 58690
* CMake: Updated list of source files.Oscar Fuentes2008-11-041-0/+1
| | | | llvm-svn: 58676
* Initial checkin for stack protectors. Here's what it does:Bill Wendling2008-11-042-0/+235
| | | | | | | | | | | | | | | | * The prologue is modified to read the __stack_chk_guard global and insert it onto the stack. * The epilogue is modified to read the stored guard from the stack and compare it to the original __stack_chk_guard value. If they differ, then the __stack_chk_fail() function is called. * The stack protector needs to be first on the stack (after the parameters) to catch any stack-smashing activities. Front-end support will follow after a round of beta testing. llvm-svn: 58673
* Fix some ppcf128 regressions: make ExpandFloatRes_LOADDale Johannesen2008-11-031-8/+8
| | | | | | | work correctly, and bring over a late change to ppcf128 SetCC handling. llvm-svn: 58642
* Make VAARG promotion work correctly with large funkyDuncan Sands2008-11-031-19/+27
| | | | | | | | | | | | | | | | | sized integers like i129, and also reduce the number of assumptions made about how vaarg is implemented. This still doesn't work correctly for small integers like (eg) i1 on x86, since x86 passes each of them (essentially an i8) in a 4 byte stack slot, so the pointer needs to be advanced by 4 bytes not by 1 byte as now. But this is no longer a LegalizeTypes problem (it was also wrong in LT before): it is a bug in the operation expansion in LegalizeDAG: now LegalizeTypes turns an i1 vaarg into an i8 vaarg which would work fine if only the i8 vaarg was turned into correct code later. llvm-svn: 58635
* Make VAARG work with x86 long double (which isDuncan Sands2008-11-031-3/+3
| | | | | | 10 bytes long, but is passed in 12/16 bytes). llvm-svn: 58608
* Make MachineFrameInfo::print not crash when no TargetFrameInfo is available.Matthijs Kooijman2008-11-031-1/+2
| | | | llvm-svn: 58606
* Revert my last patch until I consult with Evan about it.Owen Anderson2008-11-031-10/+0
| | | | llvm-svn: 58591
* Don't do pre-splitting if doing so would create a value join that did notOwen Anderson2008-11-021-0/+10
| | | | | | | | | exist before. Updating the live intervals in that care is tricky in the general case. Evan, if you see a tighter guard condition for this, let me know. llvm-svn: 58560
* Added interface to allow clients to create a MemIntrinsicNode forMon P Wang2008-11-011-4/+17
| | | | | | target intrinsics that touches memory llvm-svn: 58548
* Invalidate debug/eh/gc labels when unreachable MBB is deleted.Anton Korobeynikov2008-10-311-13/+27
| | | | | | Based on patch by Martin Nowack! llvm-svn: 58536
* Remove some unused virtual function bodies.Dan Gohman2008-10-311-7/+5
| | | | llvm-svn: 58524
OpenPOWER on IntegriCloud