summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Initialize uninitialized variables.Bill Wendling2009-12-161-1/+1
| | | | llvm-svn: 91475
* Add support to emit debug info for C++ namespaces.Devang Patel2009-12-153-22/+77
| | | | llvm-svn: 91440
* Remove isPod() from DenseMapInfo, splitting it out to its ownChris Lattner2009-12-151-1/+0
| | | | | | | | isPodLike type trait. This is a generally useful type trait for more than just DenseMap, and we really care about whether something acts like a pod, not whether it really is a pod. llvm-svn: 91421
* Make 91378 more conservative.Evan Cheng2009-12-151-1/+11
| | | | | | | 1. Only perform (zext (shl (zext x), y)) -> (shl (zext x), y) when y is a constant. This makes sure it remove at least one zest. 2. If the shift is a left shift, make sure the original shift cannot shift out bits. llvm-svn: 91399
* Initial work on disabling the scheduler. This is a work in progress, and thisBill Wendling2009-12-153-29/+155
| | | | | | | | | | | | | | | stuff isn't used just yet. We want to model the GCC `-fno-schedule-insns' and `-fno-schedule-insns2' flags. The hypothesis is that the people who use these flags know what they are doing, and have hand-optimized the C code to reduce latencies and other conflicts. The idea behind our scheme to turn off scheduling is to create a map "on the side" during DAG generation. It will order the nodes by how they appeared in the code. This map is then used during scheduling to get the ordering. llvm-svn: 91392
* Tail duplication should zap a copy it inserted for SSA update if the copy is ↵Evan Cheng2009-12-151-13/+37
| | | | | | the only use of its source. llvm-svn: 91390
* Fold (zext (and x, cst)) -> (and (zext x), cst).Evan Cheng2009-12-151-0/+13
| | | | llvm-svn: 91380
* Propagate zest through logical shift.Evan Cheng2009-12-151-0/+10
| | | | llvm-svn: 91378
* Revert these. They may have been causing 483_xalancbmk to fail:Bill Wendling2009-12-152-52/+26
| | | | | | | | | | | | | | | | | | | | $ svn merge -c -91161 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91161 into '.': U lib/CodeGen/BranchFolding.cpp U lib/CodeGen/MachineBasicBlock.cpp $ svn merge -c -91113 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91113 into '.': G lib/CodeGen/MachineBasicBlock.cpp $ svn merge -c -91101 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91101 into '.': U include/llvm/CodeGen/MachineBasicBlock.h G lib/CodeGen/MachineBasicBlock.cpp $ svn merge -c -91092 https://llvm.org/svn/llvm-project/llvm/trunk --- Reverse-merging r91092 into '.': G include/llvm/CodeGen/MachineBasicBlock.h G lib/CodeGen/MachineBasicBlock.cpp llvm-svn: 91376
* Fix integer cast code to handle vector types.Dan Gohman2009-12-142-20/+45
| | | | llvm-svn: 91362
* Fix this to properly clear the FastISel debug location. Thanks toDan Gohman2009-12-141-1/+1
| | | | | | Bill for spotting this! llvm-svn: 91355
* The CIE says that the LSDA point in the FDE section is an "sdata4". That's fine,Bill Wendling2009-12-141-7/+6
| | | | | | but we need it to actually be 4-bytes in the FDE. llvm-svn: 91337
* Use DW_AT_specification to point to DIE describing function declaration.Devang Patel2009-12-142-63/+32
| | | | llvm-svn: 91278
* Added CalcSpillWeights to CMakeLists.Lang Hames2009-12-141-0/+1
| | | | llvm-svn: 91275
* Whitespace changes, comment clarification. No functional changes.Bill Wendling2009-12-141-3/+3
| | | | llvm-svn: 91274
* Moved spill weight calculation out of SimpleRegisterCoalescing and into its ↵Lang Hames2009-12-146-114/+160
| | | | | | own pass: CalculateSpillWeights. llvm-svn: 91273
* Fix weird typo which leads to unallocated memory access for nodes with 4 ↵Anton Korobeynikov2009-12-131-1/+1
| | | | | | results. llvm-svn: 91233
* Delete an unnecessary line. The VTSDNode on a SIGN_EXTEND_REG is neverDan Gohman2009-12-111-1/+0
| | | | | | a vector type. llvm-svn: 91181
* Don't try to move a MBB into the fall-through position if it's a landing pad orBill Wendling2009-12-112-29/+26
| | | | | | | | | | | | | | branches only to a landing pad. Without this check, the compiler would go into an infinite loop because the branch to a landing pad is an "abnormal" edge which wasn't being taken into account. This is the meat of that fix: if (!PrevBB.canFallThrough() && !MBB->BranchesToLandingPad(MBB)) { The other stuff is simplification of the "branches to a landing pad" code. llvm-svn: 91161
* Construct CompileUnits lazily.Devang Patel2009-12-112-10/+12
| | | | llvm-svn: 91159
* Implement vector widening, splitting, and scalarizing for SIGN_EXTEND_INREG.Dan Gohman2009-12-117-32/+84
| | | | llvm-svn: 91158
* Fix the result type of SELECT nodes lowered from Select instructions withDan Gohman2009-12-111-1/+1
| | | | | | aggregate return values. This fixes PR5754. llvm-svn: 91145
* Honour setHasCalls() set from isel.Anton Korobeynikov2009-12-111-2/+2
| | | | | | | This is used in some weird cases like general dynamic TLS model. This fixes PR5723 llvm-svn: 91144
* Revert part of r91101 which was causing an infinite loop in the self-hostingBill Wendling2009-12-111-3/+8
| | | | | | build bots. llvm-svn: 91113
* Coalesce insert_subreg undef, x first to avoid phase ordering issue.Evan Cheng2009-12-112-5/+20
| | | | llvm-svn: 91103
* Address comments on last patch:Bill Wendling2009-12-111-13/+8
| | | | | | | | - Loosen the restrictions when checking of it branches to a landing pad. - Make the loop more efficient by checking the '.insert' return value. - Do cheaper checks first. llvm-svn: 91101
* A machine basic block may end in an unconditional branch, however it may haveBill Wendling2009-12-111-7/+36
| | | | | | | | | | | | | more than one successor. Normally, these extra successors are dead. However, some of them may branch to exception handling landing pads. If we remove those successors, then the landing pads could go away if all predecessors to it are removed. Before, it was checking if the direct successor was the landing pad. But it could be the result of jumping through multiple basic blocks to get to it. If we were to only check for the existence of an EH_LABEL in the basic block and not remove successors if it's in there, then it could stop actually dead basic blocks from being removed. llvm-svn: 91092
* If VariableDIe is not created (may be because global was optimzed away) then ↵Devang Patel2009-12-101-0/+2
| | | | | | do not try to use the variable die. llvm-svn: 91077
* It's not safe to coalesce a move where src and dst registers have different ↵Evan Cheng2009-12-101-1/+7
| | | | | | | | subregister indices. e.g.: %reg16404:1<def> = MOV8rr %reg16412:2<kill> llvm-svn: 91061
* Refactor code that finds context for a given die.Devang Patel2009-12-102-42/+24
| | | | | | Create global variable DIEs after creating subprogram DIEs. This allows function level static variable's to find their context at the time of DIE creation. llvm-svn: 91055
* Refactor.Devang Patel2009-12-102-20/+39
| | | | llvm-svn: 91051
* Also attempt trivial coalescing for live intervals that end in a copy.Jakob Stoklund Olesen2009-12-102-74/+111
| | | | | | | | | | | | | | | The coalescer is supposed to clean these up, but when setting up parameters for a function call, there may be copies to physregs. If the defining instruction has been LICM'ed far away, the coalescer won't touch it. The register allocation hint does not always work - when the register allocator is backtracking, it clears the hints. This patch is more conservative than r90502, and does not break 483.xalancbmk/i686. It still breaks the PowerPC bootstrap, so it is disabled by default, and can be enabled with the -trivial-coalesce-ends option. llvm-svn: 91049
* Reapply r90858, a cleanup patch.Devang Patel2009-12-092-166/+81
| | | | llvm-svn: 90979
* <rdar://problem/7453528>. Track only physical registers that are valid for ↵David Goodwin2009-12-094-17/+28
| | | | | | the target. llvm-svn: 90970
* Added a new "splitting" spiller.Lang Hames2009-12-095-22/+339
| | | | | | | | | | | | | When a call is placed to spill an interval this spiller will first try to break the interval up into its component values. Single value intervals and intervals which have already been split (or are the result of previous splits) are spilled by the default spiller. Splitting intervals as described above may improve the performance of generated code in some circumstances. This work is experimental however, and it still miscompiles many benchmarks. It's not recommended for general use yet. llvm-svn: 90951
* Teach InferPtrAlignment to infer GV+cst alignment and use it to simplify x86 ↵Evan Cheng2009-12-091-0/+6
| | | | | | isl lowering code. llvm-svn: 90925
* Move isConsecutiveLoad to SelectionDAG. It's not target dependent and it's ↵Evan Cheng2009-12-093-44/+44
| | | | | | primary used by selectdag passes. llvm-svn: 90922
* Infer alignment for non-fixed stack object.Evan Cheng2009-12-091-3/+4
| | | | llvm-svn: 90919
* Add const qualifier.Evan Cheng2009-12-091-1/+1
| | | | llvm-svn: 90918
* Refactor InferAlignment out of DAGCombine.Evan Cheng2009-12-092-45/+46
| | | | llvm-svn: 90917
* Revert 90858 90875 and 90805 for now.Devang Patel2009-12-082-153/+173
| | | | llvm-svn: 90898
* Cleanup.Devang Patel2009-12-082-167/+82
| | | | | | There is no need to supply ModuleCU to addType() as a parameter. llvm-svn: 90858
* Do not try to push dead variable's debug info into namespace info.Devang Patel2009-12-081-3/+5
| | | | llvm-svn: 90857
* Watch out for duplicated PHI instructions.Evan Cheng2009-12-071-3/+37
| | | | llvm-svn: 90816
* Follow up to 90488. Turn a check into an assertion.Evan Cheng2009-12-071-2/+2
| | | | llvm-svn: 90815
* Add support to emit debug info for c++ style namespaces.Devang Patel2009-12-072-8/+71
| | | | llvm-svn: 90805
* Delete code accidentally left behind.Evan Cheng2009-12-071-10/+0
| | | | llvm-svn: 90804
* Pre-regalloc tale duplication. Work in progress.Evan Cheng2009-12-072-91/+231
| | | | llvm-svn: 90759
* If BB is empty, insert PHI before end() instead of front().Evan Cheng2009-12-071-3/+6
| | | | llvm-svn: 90744
* Truncate the arguments of llvm.frameaddress / llvm.returnaddress intrinsics ↵Anton Korobeynikov2009-12-072-1/+13
| | | | | | from i32 to platform's largest native type llvm-svn: 90741
OpenPOWER on IntegriCloud