summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Override weak stuff during linking of aliases. This fixes PR2463.Anton Korobeynikov2008-07-051-8/+21
| | | | llvm-svn: 53156
* Properly link alias and function decls. This fixes PR2146Anton Korobeynikov2008-07-051-8/+27
| | | | llvm-svn: 53154
* Fix missed optimization opportunity when analyzing cast of mul and select.Nick Lewycky2008-07-051-9/+14
| | | | llvm-svn: 53151
* Fixed generating incorrect aligned stores that I backout of r53031Mon P Wang2008-07-052-12/+19
| | | | | | | | that fixed problems in EmitStackConvert where the source and target type have different alignment by creating a stack slot with the max alignment of source and target type. llvm-svn: 53150
* Several changes to Mips backend, experimental fp support being the mostBruno Cardoso Lopes2008-07-0517-443/+1247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | important. - Cleanup in the Subtarget info with addition of new features, not all support yet, but they allow the future inclusion of features easier. Among new features, we have : Arch family info (mips1, mips2, ...), ABI info (o32, eabi), 64-bit integer and float registers, allegrex vector FPU (VFPU), single float only support. - TargetMachine now detects allegrex core. - Added allegrex (Mips32r2) sext_inreg instructions. - *Added Float Point Instructions*, handling single float only, and aliased accesses for 32-bit FPUs. - Some cleanup in FP instruction formats and FP register classes. - Calling conventions improved to support mips 32-bit EABI. - Added Asm Printer support for fp cond codes. - Added support for sret copy to a return register. - EABI support added into LowerCALL and FORMAL_ARGS. - MipsFunctionInfo now keeps a virtual register per function to track the sret on function entry until function ret. - MipsInstrInfo FP support into methods (isMoveInstr, isLoadFromStackSlot, ...), FP cond codes mapping and initial FP Branch Analysis. - Two new Mips SDNode to handle fp branch and compare instructions : FPBrcond, FPCmp - MipsTargetLowering : handling different FP classes, Allegrex support, sret return copy, no homing location within EABI, non 32-bit stack objects arguments, and asm constraint for float. llvm-svn: 53146
* Rather than having a different custom legalizationDuncan Sands2008-07-0413-153/+132
| | | | | | | | | | | | hook for each way in which a result type can be legalized (promotion, expansion, softening etc), just use one: ReplaceNodeResults, which returns a node with exactly the same result types as the node passed to it, but presumably with a bunch of custom code behind the scenes. No change if the new LegalizeTypes infrastructure is not turned on. llvm-svn: 53137
* Linux also does not require exception handlingDuncan Sands2008-07-044-6/+1
| | | | | | | | | moves in order to get correct debug info. Since I can't imagine how any target could possibly be any different, I've just stripped out the option: now all the world's like Darwin! llvm-svn: 53134
* Don't return std::vector by value, but pass it in by reference to be filled.Bill Wendling2008-07-032-16/+14
| | | | llvm-svn: 53123
* Revert my previous check-in that split up MachineModuleInfo. It turns out toBill Wendling2008-07-036-650/+831
| | | | | | slow the compiler down at -O0 some 30% or more. Ooops. llvm-svn: 53120
* Backed out 53031.Evan Cheng2008-07-032-19/+12
| | | | llvm-svn: 53110
* Back out 53091 for now.Evan Cheng2008-07-031-2/+1
| | | | llvm-svn: 53109
* Use information already present in the ValueTable to fast-fail when we know ↵Owen Anderson2008-07-031-2/+11
| | | | | | there won't be a value number match. This speeds up GVN on a case where there are very few redundancies by ~25%. llvm-svn: 53108
* Do not try to update dominator info while manipulating CFG. This code does ↵Devang Patel2008-07-031-281/+19
| | | | | | | | not handle all cases and keeps invalid dom info around some cases, which misleads other passes down stream. Right now, dom info is recaluclated in the end if the loop is switched. llvm-svn: 53106
* Remove the ability for ADCE to remove unreachable blocks in loop nests, ↵Owen Anderson2008-07-031-38/+0
| | | | | | because, as Eli pointed out, SimplifyCFG already does this. llvm-svn: 53104
* - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, ↵Evan Cheng2008-07-0314-222/+211
| | | | | | | | propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list. llvm-svn: 53097
* Add newline at the end of Constants.cpp.Matthijs Kooijman2008-07-031-1/+1
| | | | llvm-svn: 53092
* llvm-gcc sometimes marks external declarations hidden, because intializers areAnton Korobeynikov2008-07-031-1/+2
| | | | | | | processed separately. Honour such situation and emit PIC relocations properly in such case. llvm-svn: 53091
* Remove unused function.Bill Wendling2008-07-031-16/+0
| | | | llvm-svn: 53090
* Preserve dom info.Devang Patel2008-07-031-0/+15
| | | | llvm-svn: 53089
* Keep track of inherited analysis (e.g. dominator tree).Devang Patel2008-07-031-0/+3
| | | | llvm-svn: 53088
* Remove extra FIXMEDevang Patel2008-07-031-1/+0
| | | | llvm-svn: 53087
* Reconstruct dom info, if loop is unswitched.Devang Patel2008-07-031-4/+9
| | | | llvm-svn: 53086
* LoopUnswitch does not preserve dominator info in all cases.Devang Patel2008-07-031-2/+3
| | | | llvm-svn: 53085
* Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." TheDan Gohman2008-07-031-18/+18
| | | | | | 254.gap failure was not due to this mod. llvm-svn: 53068
* Use operator new instead of new char[].Dan Gohman2008-07-031-5/+5
| | | | llvm-svn: 53066
* Avoid unnecessarily copying APInt objects.Dan Gohman2008-07-031-3/+3
| | | | llvm-svn: 53065
* Correct a comment.Dan Gohman2008-07-031-1/+1
| | | | llvm-svn: 53064
* Use std::replace instead of std::find and push_back.Evan Cheng2008-07-031-2/+1
| | | | llvm-svn: 53063
* Undo previous patch. It is not that simple to fix dom info here.Devang Patel2008-07-031-16/+2
| | | | llvm-svn: 53062
* - Add LiveVariables::replaceKillInstruction. This does a subset of ↵Evan Cheng2008-07-032-3/+11
| | | | | | | | instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers. - CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead. llvm-svn: 53061
* commuteInstruction should preserve dead markers.Evan Cheng2008-07-031-1/+3
| | | | llvm-svn: 53060
* Make LiveVariables even more optional, by making it optional in the call to ↵Owen Anderson2008-07-025-70/+30
| | | | | | | | TargetInstrInfo::convertToThreeAddressInstruction Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place. llvm-svn: 53058
* Replace a few uses of SelectionDAG::getTargetNode withDan Gohman2008-07-022-110/+46
| | | | | | | | | | | | SelectionDAG::SelectNodeTo in the instruction selector. This updates existing nodes in place instead of creating new ones. Go back to selecting ISD::DBG_LABEL nodes into TargetInstrInfo::DBG_LABEL nodes instead of leaving them unselected, now that SelectNodeTo allows us to update them in place. llvm-svn: 53057
* Preserve dom info while simplifing loop after the unswitch.Devang Patel2008-07-021-2/+32
| | | | llvm-svn: 53052
* Revert r52988. It broke 254.gap on x86-64.Dan Gohman2008-07-021-18/+18
| | | | llvm-svn: 53050
* TwoAddressInstructionPass doesn't really require LiveVariables, it just ↵Owen Anderson2008-07-021-14/+67
| | | | | | needs to update it if it's already around. llvm-svn: 53049
* Use df_ext_iterator to capture the reachable set without allocating an extra ↵Owen Anderson2008-07-021-17/+14
| | | | | | | | | set. Also, move large sets and vectors out of instance variables and onto the stack, and give them more reasonable sizes. llvm-svn: 53044
* Avoid a redundant call.Owen Anderson2008-07-021-4/+4
| | | | llvm-svn: 53040
* Add support to ADCE for pruning unreachable blocks. This addresses the finalOwen Anderson2008-07-021-1/+43
| | | | | | part of PR2509. llvm-svn: 53038
* Add a new getMergeValues method that does not needDuncan Sands2008-07-028-83/+57
| | | | | | | | | | to be passed the list of value types, and use this where appropriate. Inappropriate places are where the value type list is already known and may be long, in which case the existing method is more efficient. llvm-svn: 53035
* Use DenseSet rather than SmallPtrSet for the alive set. Using SmallPtrSetOwen Anderson2008-07-021-2/+2
| | | | | | with a huge "size" parameter is actually quite inefficient. llvm-svn: 53034
* A better fix for PR2503 that doesn't pessimize GVN in the presence of ↵Owen Anderson2008-07-022-13/+5
| | | | | | unreachable blocks. llvm-svn: 53032
* Fixed problem in EmitStackConvert where the source and target typeMon P Wang2008-07-022-12/+19
| | | | | | | have different alignment by creating a stack slot with the max alignment of source and target type. llvm-svn: 53031
* instead of aborting on shifts of i1, just implicitly fold them.Chris Lattner2008-07-021-1/+7
| | | | | | The dag combiner can produce a shift of i1 when folding icmp i1's. llvm-svn: 53030
* Fix typo compounded by a cut-and-pasto.Duncan Sands2008-07-021-4/+4
| | | | llvm-svn: 53012
* Let AnalyzeNewNode take care of calling ExpungeNode.Duncan Sands2008-07-022-86/+79
| | | | | | | This makes sure that all new nodes are expunged, not just those the top node of a new subtree. llvm-svn: 53011
* - Use a faster priority comparison function if -fast.Evan Cheng2008-07-022-228/+304
| | | | | | - Code clean up. llvm-svn: 53010
* Add a new (simple) StringMap::clear method, patch by PratikChris Lattner2008-07-021-4/+1
| | | | | | Solanki! llvm-svn: 53008
* reuse vectors.Devang Patel2008-07-021-5/+9
| | | | llvm-svn: 53007
* Fix comment.Devang Patel2008-07-021-1/+1
| | | | llvm-svn: 53006
OpenPOWER on IntegriCloud