Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Revert the previous patch while I figure out how to make llvm-gcc | Rafael Espindola | 2011-04-30 | 3 | -7/+1 |
| | | | | | | less agressive about disabling cfi on linux :-( llvm-svn: 130626 | ||||
* | X86AsmPrinter doesn't know how to handle the X86II::MO_GOT_ABSOLUTE_ADDRESS flag | Jakob Stoklund Olesen | 2011-04-30 | 1 | -0/+12 |
| | | | | | | | | | | | | | | after folding ADD32ri to ADD32mi, so don't do that. This only happens when the greedy register allocator gets itself in trouble and spills %vreg9 here: 16L %vreg9<def> = MOVPC32r 0, %ESP<imp-use>; GR32:%vreg9 48L %vreg9<def> = ADD32ri %vreg9, <es:_GLOBAL_OFFSET_TABLE_>[TF=1], %EFLAGS<imp-def,dead>; GR32:%vreg9 That should never happen, the live range should be split instead. llvm-svn: 130625 | ||||
* | Enable CFI on OS X. | Rafael Espindola | 2011-04-30 | 3 | -1/+7 |
| | | | | | | | | | | | | | | | Currently the output should be almost identical to the one produced by CodeGen to make the transition easier. The only two differences I know of are: * Some files get an extra advance loc of size 0. This will be fixed when relaxations are enabled. * The optimization of declaring an EH symbol as an external variable is not implemented. This is a subset of adding the nounwind attribute, so we if really this at -O0 we should probably do it at the IL level. llvm-svn: 130623 | ||||
* | When a physreg is live-in and live through a basic block, make sure its live | Jakob Stoklund Olesen | 2011-04-30 | 1 | -1/+1 |
| | | | | | | | | range covers the entire block. The live range can't be terminated at a random instruction. llvm-svn: 130619 | ||||
* | InstCombine: Turn (zext A) udiv (zext B) into (zext (A udiv B)). Same for ↵ | Benjamin Kramer | 2011-04-30 | 1 | -1/+28 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | urem or constant B. This obviously helps a lot if the division would be turned into a libcall (think i64 udiv on i386), but div is also one of the few remaining instructions on modern CPUs that become more expensive when the bitwidth gets bigger. This also helps register pressure on i386 when dividing chars, divb needs two 8-bit parts of a 16 bit register as input where divl uses two registers. int foo(unsigned char a) { return a/10; } int bar(unsigned char a, unsigned char b) { return a/b; } compiles into (x86_64) _foo: imull $205, %edi, %eax shrl $11, %eax ret _bar: movzbl %dil, %eax divb %sil, %al movzbl %al, %eax ret llvm-svn: 130615 | ||||
* | Use SimplifyDemandedBits on div instructions. | Benjamin Kramer | 2011-04-30 | 1 | -0/+4 |
| | | | | | | This folds away silly stuff like (a&255)/1000 -> 0. llvm-svn: 130614 | ||||
* | Implement MCAsmStreamer::EmitEHSymAttributes. Doing this in the asm streamer | Rafael Espindola | 2011-04-30 | 1 | -3/+31 |
| | | | | | | | is a bit ugly, but doing it on the base MCStreamer would be redundant with the object streamer which does it using SD. llvm-svn: 130611 | ||||
* | Handle PrivateExtern eh symbols. | Rafael Espindola | 2011-04-30 | 1 | -0/+2 |
| | | | | llvm-svn: 130609 | ||||
* | Avoid using stale entries form the sibling value map. | Jakob Stoklund Olesen | 2011-04-30 | 1 | -5/+21 |
| | | | | | | | This could happen when trying to use a value that had been eliminated after dead code elimination and folding loads. llvm-svn: 130597 | ||||
* | Use hysteresis for local live range splitting as well. | Jakob Stoklund Olesen | 2011-04-30 | 1 | -4/+4 |
| | | | | llvm-svn: 130596 | ||||
* | Add all the plumbing needed for MC to expand cfi to the old tables in | Rafael Espindola | 2011-04-30 | 5 | -6/+49 |
| | | | | | | | the final assembly. It is the same technique used when targeting assemblers that don't support .loc. llvm-svn: 130587 | ||||
* | Implement MCAsmStreamer::EmitDwarfAdvanceFrameAddr. | Rafael Espindola | 2011-04-30 | 3 | -22/+34 |
| | | | | llvm-svn: 130585 | ||||
* | Update comment. | Jakob Stoklund Olesen | 2011-04-30 | 1 | -2/+2 |
| | | | | llvm-svn: 130582 | ||||
* | Use a greedy algorithm for allocating registers. | Jakob Stoklund Olesen | 2011-04-30 | 1 | -3/+3 |
| | | | | llvm-svn: 130568 | ||||
* | Print out the 'nontemporal' info on a store. | Bill Wendling | 2011-04-29 | 1 | -0/+4 |
| | | | | llvm-svn: 130562 | ||||
* | Make FastEmit_ri_ try a bit harder to succeed for supported operations; ↵ | Eli Friedman | 2011-04-29 | 1 | -2/+7 |
| | | | | | | FastEmit_i can fail for non-Thumb2 ARM. Makes ARMSimplifyAddress work correctly, and reduces the number of fast-isel bailouts on non-Thumb ARM. llvm-svn: 130560 | ||||
* | 80-col. | Eric Christopher | 2011-04-29 | 1 | -8/+9 |
| | | | | llvm-svn: 130558 | ||||
* | Zap a couple now-unused functions. | Eli Friedman | 2011-04-29 | 1 | -10/+0 |
| | | | | llvm-svn: 130557 | ||||
* | Switch to ImmLeaf (which can be used by FastISel) for a few more common ↵ | Eli Friedman | 2011-04-29 | 3 | -2/+7 |
| | | | | | | ARM/Thumb2 patterns. llvm-svn: 130552 | ||||
* | Assing line number info to new PHIs created by SSA updater. | Devang Patel | 2011-04-29 | 2 | -0/+17 |
| | | | | llvm-svn: 130551 | ||||
* | Add FastEmitInst_ii for the arm fast isel generator. It doesn't use it, but | Eric Christopher | 2011-04-29 | 1 | -0/+23 |
| | | | | | | if it ever did it needs the def machinery. llvm-svn: 130549 | ||||
* | Some cleanup and optimize fallthrough more. | Eric Christopher | 2011-04-29 | 1 | -8/+13 |
| | | | | llvm-svn: 130546 | ||||
* | Avoid some uses of .uleb128. This is a small speedup and more importantly | Rafael Espindola | 2011-04-29 | 1 | -17/+22 |
| | | | | | | | lets this code be used when producing assembly code for old assemblers without uleb support. llvm-svn: 130544 | ||||
* | Implement MCAsmStreamer::EmitCFIDefCfa. | Rafael Espindola | 2011-04-29 | 1 | -1/+4 |
| | | | | llvm-svn: 130543 | ||||
* | Print new instructions without DebugLoc. | Devang Patel | 2011-04-29 | 1 | -0/+9 |
| | | | | llvm-svn: 130542 | ||||
* | Re-committing r130454, which does not in fact break anything. | Eli Friedman | 2011-04-29 | 1 | -19/+2 |
| | | | | | | | Fix a rather obscure crash caused by ARM fast-isel generating code which redefines a register. rdar://problem/9338332 . llvm-svn: 130539 | ||||
* | Preserve line number information. | Devang Patel | 2011-04-29 | 1 | -1/+2 |
| | | | | llvm-svn: 130536 | ||||
* | Add trunc->branch support, this won't help with clang's i8->i1 truncations | Eric Christopher | 2011-04-29 | 1 | -1/+24 |
| | | | | | | for bools, but is a start. llvm-svn: 130534 | ||||
* | SimplifyCFG: Expose phi node folding cost threshold as command line parameter | Peter Collingbourne | 2011-04-29 | 1 | -1/+6 |
| | | | | llvm-svn: 130528 | ||||
* | SimplifyCFG: Add CostRemaining parameter to DominatesMergePoint | Peter Collingbourne | 2011-04-29 | 1 | -9/+38 |
| | | | | llvm-svn: 130527 | ||||
* | SimplifyCFG: Add Trunc, ZExt and SExt to the list of cheap instructions for ↵ | Peter Collingbourne | 2011-04-29 | 1 | -0/+3 |
| | | | | | | phi node folding llvm-svn: 130526 | ||||
* | MCAsmLayout: Add support for computing the symbol offset of variables. Not | Daniel Dunbar | 2011-04-29 | 1 | -0/+27 |
| | | | | | | currently used, because variables don't get reported as being "defined". llvm-svn: 130524 | ||||
* | MC: Change variable symbols to be recognized as defined, by assigning their ↵ | Daniel Dunbar | 2011-04-29 | 1 | -3/+7 |
| | | | | | | sections based on FindAssociatedSection(). llvm-svn: 130523 | ||||
* | MC/Mach-O: Update getSymbolAddress() to support evaluation of variables. | Daniel Dunbar | 2011-04-29 | 1 | -0/+27 |
| | | | | llvm-svn: 130522 | ||||
* | MC/Mach-O: Allow emission of relocations for variables in some more cases. | Daniel Dunbar | 2011-04-29 | 1 | -19/+19 |
| | | | | llvm-svn: 130520 | ||||
* | MC/Mach-O: Find section ordinal's by looking at the symbol, instead of ↵ | Daniel Dunbar | 2011-04-29 | 1 | -4/+8 |
| | | | | | | assuming they are present in a fragment. llvm-svn: 130519 | ||||
* | Hoist MCLineEntry construction AsmPrinter so that anyone who derives from ↵ | Devang Patel | 2011-04-29 | 2 | -3/+3 |
| | | | | | | | | AsmPrinter can have line number entries. PR 9810 llvm-svn: 130518 | ||||
* | MCExpr: Add FindAssociatedSection, which attempts to mirror the 'as' semantics | Daniel Dunbar | 2011-04-29 | 2 | -0/+45 |
| | | | | | | that associate sections with expressions. llvm-svn: 130517 | ||||
* | MC/AsmParser: Generalize a check. | Daniel Dunbar | 2011-04-29 | 1 | -1/+1 |
| | | | | llvm-svn: 130515 | ||||
* | Fix a C++0x portability issue with std::make_pair. Explicitly providing ↵ | Douglas Gregor | 2011-04-29 | 1 | -1/+1 |
| | | | | | | template arguments no longer works when the call arguments are lvalues. llvm-svn: 130513 | ||||
* | Include <pthread.h> before we use pthread_self/pthread_kill | Douglas Gregor | 2011-04-29 | 1 | -3/+3 |
| | | | | llvm-svn: 130510 | ||||
* | The last hack for producing bit identical output with cfi on OS X. | Rafael Espindola | 2011-04-29 | 1 | -0/+8 |
| | | | | llvm-svn: 130504 | ||||
* | Change DwarfCFIException's member variables to track what it actually | Rafael Espindola | 2011-04-29 | 2 | -34/+38 |
| | | | | | | emmits: .cfi_personality, .cfi_lsda and the moves. llvm-svn: 130503 | ||||
* | Teach Thumb2 isel to fold and->rotr ==> ROR. | Andrew Trick | 2011-04-29 | 1 | -0/+9 |
| | | | | | | Generalization of Nate Begeman's patch! llvm-svn: 130502 | ||||
* | Factor some code to needsCFIMoves. Avoid printing moves when we don't have to. | Rafael Espindola | 2011-04-29 | 2 | -4/+19 |
| | | | | llvm-svn: 130501 | ||||
* | This is done. | Benjamin Kramer | 2011-04-29 | 1 | -20/+0 |
| | | | | llvm-svn: 130499 | ||||
* | Balance parentheses. | Benjamin Kramer | 2011-04-29 | 1 | -1/+1 |
| | | | | llvm-svn: 130489 | ||||
* | InstCombine: turn (C1 << A) << C2) into (C1 << C2) << A) | Benjamin Kramer | 2011-04-29 | 1 | -1/+8 |
| | | | | | | Fixes PR9809. llvm-svn: 130485 | ||||
* | clean up after Sean's r127646 patch. | Chris Lattner | 2011-04-29 | 1 | -429/+330 |
| | | | | llvm-svn: 130475 | ||||
* | use the MachineInstrBuilder operator-> to simplify some code. | Chris Lattner | 2011-04-29 | 4 | -21/+18 |
| | | | | | | There are probably more instances of this floating around. llvm-svn: 130474 |