- Nov 18, 2010
-
-
Dale Johannesen authored
memset; we may need it to decide between MOVAPS and MOVUPS later. Adjust a test that was looking for wrong code. PR 3866 / 8675131. llvm-svn: 119605
-
John Thompson authored
llvm-svn: 119590
-
- Nov 17, 2010
-
-
Evan Cheng authored
and xor. The 32-bit move immediates can be hoisted out of loops by machine LICM but the isel hacks were preventing them. Instead, let peephole optimization pass recognize registers that are defined by immediates and the ARM target hook will fold the immediates in. Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ instructions if there are multiple uses. This happens when the 'and' is live out, machine sink would have sinked the computation and that ends up pessimizing code. The peephole pass would recognize situations where the 'and' can be toggled to define CPSR and eliminate the comparison anyway. 2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking important optimizations. rdar://8663787, rdar://8241368 llvm-svn: 119548
-
Chris Lattner authored
SrcMgrDiagHandler, we can improve clang diagnostics for inline asm: instead of reporting them on a source line of the original line, we can report it on the correct line wherever the string literal came from. For something like this: void foo() { asm("push %rax\n" ".code32\n"); } we used to get this: (note that the line in t.c isn't helpful) t.c:4:7: error: warning: ignoring directive for now asm("push %rax\n" ^ <inline asm>:2:1: note: instantiated into assembly here .code32 ^ now we get: t.c:5:8: error: warning: ignoring directive for now ".code32\n" ^ <inline asm>:2:1: note: instantiated into assembly here .code32 ^ Note that we're pointing to line 5 properly now. llvm-svn: 119488
-
Chris Lattner authored
cookie argument to the SourceMgr diagnostic stuff. This cleanly separates LLVMContext's inlineasm handler from the sourcemgr error handling definition, increasing type safety and cleaning things up. llvm-svn: 119486
-
Chris Lattner authored
the cookie argument to setDiagHandler llvm-svn: 119483
-
Chris Lattner authored
llvm-svn: 119482
-
Eric Christopher authored
operands in a variadic instruction. llvm-svn: 119446
-
- Nov 16, 2010
-
-
Dan Gohman authored
llvm-svn: 119386
-
Evan Cheng authored
llvm-svn: 119385
-
Dan Gohman authored
easier to debug, and to avoid complications when the CFG changes in the middle of the instruction selection process. llvm-svn: 119382
-
Jakob Stoklund Olesen authored
Always spill the full representative register at any point where any subregister is live. This fixes PR8620 which caused the old logic to get confused and not spill anything at all. The fundamental problem here is that the coalescer is too aggressive about physical register coalescing. It sometimes makes it impossible to allocate registers without these emergency spills. llvm-svn: 119375
-
Jakob Stoklund Olesen authored
llvm-svn: 119374
-
Eric Christopher authored
(and likely) wrong about anyhow. llvm-svn: 119320
-
Jakob Stoklund Olesen authored
Use amazing new function call technology instead of writing identical code in multiple places. This fixes PR8604. llvm-svn: 119306
-
Jakob Stoklund Olesen authored
The live range of a register defined by an early clobber starts at the use slot, not the def slot. Except when it is an early clobber tied to a use operand. Then it starts at the def slot like a standard def. llvm-svn: 119305
-
- Nov 15, 2010
-
-
Jakob Stoklund Olesen authored
This reverts r119183 which borke the buildbots. llvm-svn: 119270
-
Evan Cheng authored
iterator, not TII->OptimizeCompareInstr. llvm-svn: 119186
-
Jakob Stoklund Olesen authored
The live range of a register defined by an early clobber starts at the use slot, not the def slot. llvm-svn: 119183
-
Jakob Stoklund Olesen authored
live ranges for the spill register are also defined at the use slot instead of the normal def slot. This fixes PR8612 for the inline spiller. A use was being allocated to the same register as a spilled early clobber def. This problem exists in all the spillers. A fix for the standard spiller is forthcoming. llvm-svn: 119182
-
Anton Korobeynikov authored
First step of huge frame-related refactoring: move emit{Prologue,Epilogue} out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place llvm-svn: 119097
-
- Nov 14, 2010
-
-
Chris Lattner authored
since it is trivial and will be shared between ppc and x86. This substantially simplifies the X86 backend also. llvm-svn: 119089
-
- Nov 13, 2010
-
-
Devang Patel authored
llvm-svn: 118940
-
- Nov 12, 2010
-
-
Andrew Trick authored
llvm-svn: 118913
-
Andrew Trick authored
catastrophic compilation time in the event of unreasonable LLVM IR. Code quality is a separate issue--someone upstream needs to do a better job of reducing to llvm.memcpy. If the situation can be reproduced with any supported frontend, then it will be a separate bug. llvm-svn: 118904
-
Chris Lattner authored
llvm-svn: 118896
-
Lang Hames authored
llvm-svn: 118883
-
- Nov 11, 2010
-
-
Dan Gohman authored
llvm-svn: 118803
-
Andrew Trick authored
it makes no sense for allocation_order iterators to visit reserved regs. The inline spiller depends on AliasAnalysis. Manage the Query state to avoid uninitialized or stale results. llvm-svn: 118800
-
Dan Gohman authored
llvm-svn: 118789
-
Jakob Stoklund Olesen authored
superceded by SplitKit. llvm-svn: 118754
-
Jakob Stoklund Olesen authored
This is the first small step towards using closed intervals for liveness instead of the half-open intervals we're using now. We want to be able to distinguish between a SlotIndex that represents a variable being live-out of a basic block, and an index representing a variable live-in to its successor. That requires two separate indexes between blocks. One for live-outs and one for live-ins. With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays greater than any instructions inserted at the end of MBB. llvm-svn: 118747
-
Jakob Stoklund Olesen authored
llvm-svn: 118742
-
Jakob Stoklund Olesen authored
constant loads. llvm-svn: 118741
-
- Nov 10, 2010
-
-
Devang Patel authored
Take care of special characters while creating named MDNode name to hold function specific local variable's info. This fixes radar 8653152. I am checking in testcase as a separate check-in. llvm-svn: 118726
-
Jakob Stoklund Olesen authored
Whenever splitting wants to insert a copy, it checks if the value can be rematerialized cheaply instead. Missing features: - Delete instructions when all uses have been rematerialized. - Truncate live ranges to the remaining uses after rematerialization. llvm-svn: 118702
-
Andrew Trick authored
benchmarks hitting an assertion. Adds LiveIntervalUnion::collectInterferingVRegs. Fixes "late spilling" by checking for any unspillable live vregs among all physReg aliases. llvm-svn: 118701
-
Jakob Stoklund Olesen authored
llvm-svn: 118661
-
Rafael Espindola authored
earlier. Implicit bool -> int conversions are evil! llvm-svn: 118651
-
- Nov 09, 2010
-
-
Andrew Trick authored
(retry now that the windows build is green) llvm-svn: 118630
-