- Sep 21, 2010
-
-
Chris Lattner authored
MachinePointerInfo, propagating the type out a level of API. Remove the old MachineFunction::getMachineMemOperand impl. llvm-svn: 114393
-
Chris Lattner authored
to the MachineFunction construction methods. llvm-svn: 114390
-
Chris Lattner authored
MachinePointerInfo struct, no functionality change. This also adds an assert to MachineMemOperand::MachineMemOperand that verifies that the Value* is either null or is an IR pointer type. llvm-svn: 114389
-
Evan Cheng authored
define double @foo(double %x, double %y, i1 %c) nounwind { %a = fdiv double %x, 3.2 %z = select i1 %c, double %a, double %y ret double %z } Was: _foo: divsd LCPI0_0(%rip), %xmm0 testb $1, %dil jne LBB0_2 movaps %xmm1, %xmm0 LBB0_2: ret Now: _foo: testb $1, %dil je LBB0_2 divsd LCPI0_0(%rip), %xmm0 ret LBB0_2: movaps %xmm1, %xmm0 ret This avoids the divsd when early exit is taken. rdar://8454886 llvm-svn: 114372
-
- Sep 20, 2010
-
-
Owen Anderson authored
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing. This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll when CombinerAA is enabled, modulo a different register allocation sequence. llvm-svn: 114348
-
Evan Cheng authored
llvm-svn: 114338
-
- Sep 19, 2010
-
-
Owen Anderson authored
llvm-svn: 114313
-
Owen Anderson authored
r114268 fixed the last of the blockers to enabling it. I will be monitoring for failures. llvm-svn: 114312
-
- Sep 18, 2010
-
-
Benjamin Kramer authored
llvm-svn: 114284
-
Lang Hames authored
llvm-svn: 114273
-
Lang Hames authored
Added a separate class (PBQPBuilder) for PBQP Problem construction. This class can be extended to support custom constraints. For now the allocator still uses the old (internal) construction mechanism by default. This will be phased out soon assuming no issues with the builder system come up. To invoke the new construction mechanism just pass '-regalloc=pbqp -pbqp-builder' to llc. To provide custom constraints a Target just needs to extend PBQPBuilder and pass an instance of their derived builder to the RegAllocPBQP constructor. llvm-svn: 114272
-
Evan Cheng authored
llvm-svn: 114270
-
Owen Anderson authored
NO path to the destination containing side effects, not that SOME path contains no side effects. In practice, this only manifests with CombinerAA enabled, because otherwise the chain has little to no branching, so "any" is effectively equivalent to "all". llvm-svn: 114268
-
Evan Cheng authored
1) Do forward copy propagation. This makes it easier to estimate the cost of the instruction being sunk. 2) Break critical edges on demand, including cases where the value is used by PHI nodes. Critical edge splitting is not yet enabled by default. llvm-svn: 114227
-
- Sep 17, 2010
-
-
Evan Cheng authored
llvm-svn: 114222
-
Evan Cheng authored
llvm-svn: 114220
-
- Sep 16, 2010
-
-
Devang Patel authored
If FE forgot to provide a file name (usually it uses "stdin" as name in such situation) then make one up to ensure that debug info is not malformed. llvm-svn: 114119
-
Jakob Stoklund Olesen authored
great deal because we don't have to worry about maintaining SSA form. Unconditionally copy back to dupli when the register is live out of the split range, even if the live-out value was defined outside the range. Skipping the back-copy only makes sense when the live range is going to spill outside the split range, and we don't know that it will. Besides, this was a hack to avoid SSA update issues. Clear up some confusion about the end point of a half-open LiveRange. Methinks LiveRanges need to be closed so both start and end are included in the range. The low bits of a SlotIndex are symbolic, so a half-open range doesn't really make sense. This would be a pervasive change, though. llvm-svn: 114043
-
- Sep 15, 2010
-
-
Devang Patel authored
This fixes funcargs.exp regression reported by gdb testsuite. llvm-svn: 113992
-
Devang Patel authored
If dbg.declare from non-entry block is using alloca from entry block then use offset available in StaticAllocaMap to emit DBG_VALUE. Right now, this has no material impact because varible info also collected using offset table maintained in machine module info. llvm-svn: 113967
-
- Sep 14, 2010
-
-
Gabor Greif authored
llvm-svn: 113848
-
Devang Patel authored
Use frame index, if available for byval argument while lowering dbg_declare. Otherwise let getRegForValue() find register for this argument. llvm-svn: 113843
-
Michael J. Spencer authored
This reverts commit r113632 Conflicts: cmake/modules/AddLLVM.cmake llvm-svn: 113819
-
Jakob Stoklund Olesen authored
edited without actually using LiveIntervalMap functionality. llvm-svn: 113816
-
Jakob Stoklund Olesen authored
llvm-svn: 113815
-
- Sep 13, 2010
-
-
Jakob Stoklund Olesen authored
pointer and work around that. llvm-svn: 113788
-
Benjamin Kramer authored
llvm-svn: 113776
-
Eric Christopher authored
llvm-svn: 113771
-
John Thompson authored
llvm-svn: 113766
-
- Sep 11, 2010
-
-
Bill Wendling authored
llvm-svn: 113670
-
Bill Wendling authored
llvm-svn: 113666
-
Bill Wendling authored
the 'zero' bit down into the back-end. There are other cases where this logic isn't sufficient, so they should be handled separately. llvm-svn: 113665
-
Bob Wilson authored
llvm-svn: 113653
-
- Sep 10, 2010
-
-
Bill Wendling authored
iterator when an optimization took place. This allows us to do more insane things with the code than just remove an instruction or two. llvm-svn: 113640
-
Michael J. Spencer authored
llvm-svn: 113632
-
Devang Patel authored
llvm-svn: 113614
-
Evan Cheng authored
take multiple cycles to decode. For the current if-converter clients (actually only ARM), the instructions that are predicated on false are not nops. They would still take machine cycles to decode. Micro-coded instructions such as LDM / STM can potentially take multiple cycles to decode. If-converter should take treat them as non-micro-coded simple instructions. llvm-svn: 113570
-
- Sep 08, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 113386
-
Jakob Stoklund Olesen authored
LiveIntervals already adds <imp-def> operands for super-registers when a subreg def defines the whole register. Thus, it is not necessary to do it again when rewriting. In fact, the super-register imp-defs caused miscompilations because the late scheduler couldn't see that the super-register was read. We still add super-reg <imp-use,kill> operands when rewriting virtuals to physicals. llvm-svn: 113299
-
- Sep 05, 2010
-
-
Chris Lattner authored
llvm-svn: 113117
-